Skip to content
Logo

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 nameId supplied 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.