The Home Identity Number is a globally unique, self-issuable property identifier. No central authority. No registration fee. Derived deterministically from the address.
hin:v1IN7e3c…did:opentwin DID method. A HIN can be the subject of a W3C VC 2.0 credential — portable, selective-disclosure, EUDI Wallet compatible.The normalisation rules are strict to ensure the same address produces the same HIN regardless of formatting choices.
Apply Unicode canonical composition (NFC). Ensures Ā and Ā (precomposed vs. combining) hash identically.
const nfc = address.normalize('NFC');
Lowercase the entire string. Replace all runs of whitespace (tabs, newlines, multiple spaces) with a single ASCII space. Trim leading and trailing.
const norm = nfc.toLowerCase() .replace(/\s+/g, ' ').trim();
Hash the UTF-8 encoded normalised string using SHA-256. Produces a 256-bit (32-byte) digest. Any standards-compliant SHA-256 implementation produces the same result.
const buf = await crypto.subtle.digest( 'SHA-256', new TextEncoder().encode(norm) );
Take the first 24 hex characters of the digest (12 bytes). Prepend the HIN URI prefix with the ISO 3166-1 alpha-2 country code.
const hex = Array.from(new Uint8Array(buf)) .map(b => b.toString(16).padStart(2,'0')) .join('').slice(0,24); return `hin:v1:${cc}:${hex}`;
A HIN is valid if it matches the canonical structure. Resolution against the OpenTwin registry requires a consent token — this widget validates the format only.
opn_ prefix) and owner consent. Request API access at developer@seekyournest.com.
No system changes are required at Tier 1. HIN is designed to layer on top of existing registries, not replace them.
The algorithm is implemented in the TypeScript and Python SDKs. Process an entire address database in minutes.
Read RFC-0008HIN is part of the OpenTwin standard — a full property data protocol with consent, lifecycle, financial aggregates, and AI tools.
opentwin.io →