OpenTwin RFC-0008 · Formerly HIN

Every address.
One NestCode.

A permanent, self-computable, globally unique identifier for any property on earth. Derived from the address. No central registry required. Built into the OpenTwin standard.

Compute yours → Read RFC-0008
Example NestCode
hin:v1:IN:7e3cf2a148b9d0c4c54fa8312e90b1d7
hinscheme : v1version : INcountry : 7e3cf2a148b9d0c4c54fa8312e90b1d732-char SHA-256 derived hex hash of normalized address
RFC-0008 · §3

The NestCode
is exactly 4 parts.

hin

URI scheme

The literal string hin. Registered URI scheme. Makes every NestCode a resolvable resource identifier. Platforms implementing OpenTwin parse this as the property namespace.

v1

Protocol version

The algorithm version. v1 means SHA-256 of the NFC-normalised, lowercase, whitespace-trimmed address string. If the address canonicalisation algorithm changes, the version increments — existing codes remain valid.

IN

ISO 3166-1 alpha-2 country code

Namespaces the hash by country. Prevents collision between properties at the same relative address in different countries. Required for cross-border portability. IN = India, AE = UAE, GB = UK.

7e3cf2a…

32-character hex hash

The first 32 hex characters of the SHA-256 digest of normalise(country_code + address). 128 bits of collision space. Self-computable by anyone with the address. RFC-0019 defines the arbiter protocol for the rare hash collision edge case.

RFC-0008 · §4 · Algorithm

Four deterministic steps.

Same address → same NestCode, every time, everywhere. No API call needed to compute it.

01
Normalise
NFC · lowercase · trim
Apply Unicode NFC normalisation. Lowercase the entire string. Strip leading and trailing whitespace. Remove double spaces. The output is canonical and locale-independent.
02
Prefix
CC + ":" + address
Prepend the ISO 3166-1 alpha-2 country code followed by a colon. Ensures two properties with the same relative address in different countries produce distinct hashes.
03
Hash
SHA-256 → hex
Compute the SHA-256 digest of the UTF-8 encoded prefixed string. Encode as lowercase hexadecimal. This produces a 64-character string.
04
Compose
hin:v1:CC:hex[0:32]
Take the first 32 hex characters (128 bits). Assemble the URI: hin:v1:{CC}:{hash[0:32]}. This is the NestCode.
Reference implementation (JavaScript)
async function computeNestCode(country, address) {
  // Step 1: normalise
  const norm = address.normalize('NFC')
                       .toLowerCase()
                       .trim()
                       .replace(/\s+/g, ' ');
  // Step 2: prefix
  const input = country.toUpperCase() + ':' + norm;
  // Step 3: SHA-256
  const buf  = await crypto.subtle.digest(
    'SHA-256', new TextEncoder().encode(input)
  );
  const hex  = Array.from(new Uint8Array(buf))
    .map(b => b.toString(16).padStart(2, '0')).join('');
  // Step 4: compose
  return `hin:v1:${country.toUpperCase()}:${hex.slice(0,32)}`;
}
Try it — runs in your browser

Compute a NestCode.

No data leaves your browser. SHA-256 runs on the Web Crypto API, exactly as specified in RFC-0008.

Include full postal address including city, state, and PIN. Precision of normalisation determines uniqueness.
NestCode output
Enter an address to compute.
Why NestCode matters

A permanent identifier,
not a database row.

Self-computable

Anyone with the address can derive the NestCode — no API, no registry, no account. The computation is deterministic and open.

Globally unique

128-bit hash space, country-namespaced. Two different addresses produce different NestCodes. RFC-0019 handles the sub-1-in-10¹⁸ collision probability.

Address-portable

If a property's address is officially renumbered by municipal authorities, the old NestCode and the new one can be linked via the lifecycle log — both resolve to the same physical property.

No central registry

Self-issuable. Governments can print NestCodes on title deeds by running the algorithm themselves. No dependency on SeekYourNest's servers.

W3C VC-compatible

The NestCode is the subject DID in the did:opentwin DID method defined in RFC-0015. Verifiable Credentials attach to it directly.

Offline-first

Guard kiosks, field agents, and banking apps can compute and verify NestCodes without a live internet connection. No lookup required.

RFC-0008 · §7 · Government adoption

Three tiers for
government adoption.

T1
SQL column

Add the column.

One SQL migration: ALTER TABLE properties ADD COLUMN nestcode VARCHAR(48). Compute and backfill for existing rows. Zero new dependencies.

T2
Deed printing

Print on title deeds.

Include the NestCode on new property documents as a standard field. Owners can quote it to any OpenTwin-compliant platform. Surveyors verify it in the field offline.

T3
Verified issuer

Become a W3C Verified Issuer.

Issue Verifiable Credentials anchored to the NestCode. RFC-0015-compliant. The registry DID is published to the DID Universal Resolver. Full chain-of-title in one scan.

One identifier.
Any property.
Forever.

Apache 2.0. Self-computable. Part of the OpenTwin standard. Runs on any platform.

Read the OpenTwin standard → Integrate NestCode