.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
| Record | What it is for |
|---|---|
| Payment address | Where a payment to the name goes. Starts as the minter's address. |
| Node operator | The 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. |
| Listing | The listing the name sells, by its id on the ServiceRegistry. |
| Text records | Anything 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.
| Length | A year |
|---|---|
| 3 characters | 10,000 ZAI |
| 4 characters | 1,000 ZAI |
| 5 and more | 100 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.