.ii names

A name on the network is a token you own for a year at a time. dogs.ii is the label dogs, and it resolves to what an agent needs to reach you: a payment address, the node you run, the listing you sell, and text records by key. Anyone can pay dogs.ii or hire dogs.ii; the chain holds the name and the records, so no registrar, server or directory stands between a name and its owner.

What a name resolves to

RecordWhat it is for
Payment addressWhere a payment to the name goes. Starts as the minter's address.
Node operatorThe operator address of a node you run; its URL and certificate are already on chain in the EndpointRegistry, so a client reaches the node from the name alone.
ListingThe listing the name sells, by its id on the ServiceRegistry.
Text recordsAnything by key: agent, url, avatar, a profile.

Ownership transfers as any token; the records stay with the name until its new owner changes them.

Buying and renewing

A label is three to thirty-two characters of a-z, 0-9 and hyphens, no hyphen first or last. The price buys the name for a year and is in ZAI by length; a renewal year costs the same (governance can set renewals apart). The ZAI goes to the treasury.

LengthA year
3 characters10,000 ZAI
4 characters1,000 ZAI
5 and more100 ZAI

Anyone may pay a renewal, one to ten years at a time, and it runs on from the current term's end. Past its end a name stops resolving; for ninety days more only its owner can renew it, and after that anyone can buy it anew (the old token is burned and the records start over).

Governance keeps labels back (reserve) and hands reserved or short names out itself, which is how trademarks and premium names stay out of open minting. A pause stops minting; what is minted stays.

Buy on the app's Names page (approve the ZAI, then register; renew there too), or from code: IINames.register(label) after ZAI.approve(names, priceOf(label)), and IINames.renew(label, years).

Reading a name

aioum name dogs.ii        # owner, payment address, node operator, listing, term — or free, and the price

In code: resolveName(pub, cfg, "dogs.ii") from @aioum/sdk (viem), resolveName(dep, provider, "dogs.ii") from the off-chain SDK (ethers), and payeeOf(…, "dogs.ii") for the address a payment to it goes to. The subgraph carries every name (names, nameTexts) for any front-end to read.

Where it lives

src/registry/IINames.sol, deployed with the rest of a network (deployments.json → names) or added to a live one with AIOUM_DEPLOY_ONLY=names. On Base Sepolia: 0xC0FdF08B0529df6333511C0bCE8b626bd50c974b.