Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

How it works

System overview

Oniym system overview

Name structure

Every Oniym name is a two-part label: <label>.<tld> — for example kyy.web3 or alice.id.

  • Label — the unique identifier you register (e.g. kyy)
  • TLD — one of 65 protocol-managed top-level domains (e.g. web3)

Subnames (sub.kyy.web3) are not supported in v1.

Namehash

Oniym uses ENSIP-1 namehash to derive a deterministic 32-byte node for any name:

namehash("") = 0x00...00
namehash("web3") = keccak256(namehash("") ‖ keccak256("web3"))
namehash("kyy.web3") = keccak256(namehash("web3") ‖ keccak256("kyy"))

The node is the canonical on-chain identifier for a name — used as the primary key in the Registry and all resolver records.

Registration flow

Registration uses a commit-reveal scheme to prevent frontrunning:

Oniym registration flow

The req encodes name, TLD, owner, duration, a random secret, and optional resolver data. Because the commitment is a hash of all fields including the secret, nobody can copy your transaction and steal the name before you.

Multichain addresses

Addresses are stored per coin type following ENSIP-9 / SLIP-0044:

ChainCoin type
Ethereum / Base / EVM60
Bitcoin0
Solana501
Sui784
BNB714

Resolution flow

Oniym resolution flow

Reverse resolution

When registering with reverseRecord: true, the ReverseRegistrar contract sets a reverse record mapping address → name. This lets wallets and dapps display kyy.web3 instead of 0x1170....

Callers should always verify the forward resolution matches before displaying a reverse name as a verified identity.

Expiry and renewal

Names expire after their registration duration. A 90-day grace period follows expiry during which only the original owner can renew. After the grace period the name becomes available for anyone to register.