Records & resolution
Every page is also a resolver: it holds the data other apps look up for its name. Only the page’s holder can set records, and only while the page is active. Records answer only while the page is active: they go quiet when it expires, and come back if it is renewed in its grace period.
Main address
The main address is the page’s address on OP Mainnet (coin type 0x8000000a). It is what
resolve(tokenId) and addr(node) return.
- Set it from the Records tab of the page’s manage page (
setAddr). - If you never set it, the page points at its holder, so a new page resolves to your wallet with no setup. Setting it to zero points it back at the holder.
- It is also the page’s payee: money the contract pays for the page, such as its deposit, is credited to it.
- It counts only while the account that saved it holds the page. After a transfer, the page points at its new holder until the new holder saves its own.
Other chains
A page can hold an address for any chain, by its coin type (ENSIP-11):
| Chain | Coin type |
|---|---|
| OP Mainnet: the main address | 0x8000000a |
| Ethereum | 60 |
| Default for every EVM chain without its own entry | 0x80000000 |
| Another EVM chain, chain id n | 0x80000000 + n, such as Base 0x80002105 or Arbitrum One 0x8000a4b1 |
| A chain that is not EVM | its SLIP-44 number, such as Bitcoin 0 or Solana 501 |
- An EVM chain other than OP answers the address saved for it, else the saved default, else nothing.
- Ethereum does not fall back to the main address. For the page to answer on Ethereum, save an Ethereum address (coin type 60) or a default.
- Save a default only for an address you control on every EVM chain, such as a wallet with a key. Every EVM chain without its own entry answers it, future chains included, and a smart account may not exist at the same address on every chain.
- An EVM address is 20 bytes. A chain that is not EVM takes its address as raw bytes in that chain’s ENSIP-9 format.
- Like the main address, every saved address counts only while the account that saved it holds the page.
Text records
Free-form key and value pairs, with the keys most wallets and apps already read:
| Key | Meaning |
|---|---|
avatar |
The page’s avatar, as a reference to an NFT (see below) |
url |
Your website URL |
description |
A short bio |
com.twitter |
Twitter/X handle |
com.github |
GitHub username |
org.telegram |
Telegram handle |
You can set any key you like; the table is just what most apps read.
The profile rule
The text records and the website together are the page’s profile. A profile counts only while the account that wrote it holds the page:
- After a transfer,
textandcontenthashread empty, and the page has no picture or website. - The new holder can call
keepProfileto take the profile it found as its own. It then shows again. - Or the new holder writes any field, which starts a new, empty profile.
- If the page comes back to the account that wrote the profile, the profile shows again, unless another holder kept or wrote a profile in between, or someone cleared the records, or the page was registered again.
profileWriter(tokenId)tells whose profile counts.
Clearing records
clearRecords(tokenId) removes every address, every text record and the website at once. The page then
points at its holder again. keepProfile cannot bring back what clearRecords removed. A new
registration of a page, or a new mint of a subpage, starts the same way: nothing from before counts.
multicall(bytes[]) runs several record writes in one transaction, as the same caller, and reverts all
of them if one fails. It is not payable.
Avatars
An avatar and a card are two different things, and it is worth keeping them apart.
The card is your page’s NFT artwork, drawn onchain by the PageCard contract and the same, byte for byte, on this site. It shows the name, the expiry date or status, and the short address of the payee, over a pattern derived from the page’s token id. It is what a marketplace shows, you cannot change it, and every page has one.
The avatar is your profile picture, which apps show beside your name. A page that has not set one has no avatar, and this site draws a small placeholder mark for it rather than the card, so nothing ever claims a page has an avatar it never chose.
To use your own avatar, pick an NFT you hold from a supported collection on the manage page. The collections live on Ethereum, and the record stores which token it is, not a copy of the image:
eip155:1/erc721:0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb/5822
That is the same form ENS uses, and storing the token rather than an image URL is what makes the claim checkable. A URL would let anyone point at a CryptoPunk they do not own, for good and with no way to tell. A reference can be checked by reading who holds the token.
Three things follow, and all are deliberate:
- It only shows while you hold it. This site reads the token’s holder on Ethereum and the page’s holder on OP Mainnet on every render, and never caches the answer. Sell the NFT and your page goes back to its placeholder. So does a token you moved to another wallet: the check cannot tell that apart from a sale, and does not guess.
- The same address must hold both. The NFT on Ethereum and the page on OP Mainnet must be held by the same address. A smart account that has different addresses on the two chains cannot pass.
- Only supported collections count. A token reference proves you hold a token, not that the contract is the real CryptoPunks: anyone can deploy their own and honestly hold token 5822 of it. So the collection has to be one this site recognises.
Supported today: CryptoPunks, Milady, Bored Ape Yacht Club, Pudgy Penguins. More will follow.
The avatar is part of the profile, so it follows the profile rule. It never changes the card that marketplaces show.
Display page (reverse resolution)
Records map names to data. The display page maps your address back to a name: it is what
compatible apps show instead of 0xd8dA…6045.
- Choose any page you hold as your display page from its manage page (
setPrimaryPage). The page’s main address can choose it too, so a cold wallet can hold the page while a hot wallet shows its name. reverseResolve(address)shows the name only while the page is active, is still held by the account that held it when it was chosen, and still resolves to the address. A stale or sold page can never speak for you.- Moving the page clears your choice. You can clear or change it at any time.
Website (contenthash)
The contenthash record points your page at IPFS content. It is part of the profile, so it follows the
profile rule above. Once it is set, the gateway serves your site at https://yourname.ipfs.cc. See
IPFS websites.