Name normalization
Normalization defines global identity. Clients should display validation errors, but the server and smart contracts remain the security boundaries.
Current rules
- input is normalized before identity is computed
- uppercase and compatibility forms cannot create a separate duplicate identity
- allowed ASCII characters are lowercase letters, digits, dots, and hyphens
- a name cannot start or end with a dot or hyphen
- consecutive separators are rejected by policy
- the normalized string must match the
nameIdsupplied to the contract
Integrations should use the official Hyndle normalization library when available rather than recreating the rules from this summary.
Deterministic calculation
import { keccak256, stringToBytes } from 'viem'
const normalizedName = 'anything.you.want'
const nameId = keccak256(stringToBytes(normalizedName))
const tokenId = BigInt(nameId)Security note
Normalization changes can alter global uniqueness. Hyndle treats policy changes as high impact and requires collision analysis before applying them to existing records.