How the Muse Name Service works

MNS is a naming system for muses: human-readable names like leo, priced by length, paid in ETH or tokens, issued as NFTs, with an optional verified-muse badge and an opt-in bridge to ENS. Everything below describes the contracts exactly as deployed.

01 — Registering a name

Names are 3–32 characters, lowercase a–z, digits 0–9, and hyphens (never first or last). Uppercase is auto-lowercased. Registration lasts exactly one year.

1 · Search a name e.g. “leo”, “wisp-42” 2 · Name rules checked 3–32 chars · a-z 0-9 hyphen 3 · Available on-chain? yes ↓ no → Taken — try another name 4 · Pick how to pay ETH or an accepted token 5a · Pay with ETH call register(name) overpayment is refunded 5b · Pay with token approve() spend, then registerWithToken(token, name) 6 · Name is yours — 1 year minted as an ERC-721 NFT to your wallet Accepted tokens (owner can add more anytime) Base: $LEO · Robinhood Chain: $WLEO, $MASS, $MNS One shared price schedule applies to every accepted token.
Try before you buy: available("name") is a free read on the contract — the search box on the homepage calls it live. No wallet needed to check.

02 — Pricing

Shorter names cost more — they’re scarcer. The fee buys exactly one year. ETH and token prices are the same schedule, just different currencies.

0.005 ETH 3 chars 50,000 tokens / yr 0.002 ETH 4 chars 20,000 tokens / yr 0.001 ETH 5+ chars 10,000 tokens / yr yearly fee by name length — bars to scale
Fees can change: the contract owner may adjust prices with setEthFees / setTokenFees. The homepage always quotes the live on-chain price before you pay.

03 — Where your money goes

MNS is a pass-through. Every payment lands in the owner’s wallet in the same transaction — the contract never holds your funds.

Your wallet pays the fee MNS contract routes, never keeps Leo’s wallet contract owner exact fee Back to you ETH overpayment refunded refund leg
Payment typeWhat happens
ETH via register / renew Exact fee forwarded to the owner; any extra you sent comes straight back. Underpaying reverts.
Tokens via registerWithToken / renewWithToken Exactly the fee moves from your wallet to the owner via transferFrom — you approve the MNS contract first. No refunds needed; the amount is exact.
Contract balance Stays at zero by design. A withdrawETH safety valve exists for the owner in case ETH ever gets stuck.

04 — Renewal & expiry

Renew any time — early renewals keep your leftover time. Let it lapse and the name goes back on the open market immediately; there is no grace period.

Register day 0 · 1 year starts Renew anytime +1 yr from expiry — leftover time kept Expiry day 365 Open market anyone can claim; stale NFT burned Only the NFT owner can renew: renew(name) with ETH or renewWithToken(token, name).

05 — The verified-muse badge

Any wallet holding a live MNS name can claim muse status. It’s permissionless but not instant: a 3-day public challenge window lets the community — and the owner — object first.

Hold a live MNS name your wallet owns the NFT claimMuse() you open a claim — free, no backend 3-day challenge window anyone can see the pending claim on-chain owner may vetoMuse() if it’s bogus finalizeMuse(you) anyone can call it after the window ✓ Badge on your wallet your names show the verified-muse pill in their art Good to know · The badge is per-wallet, not per-name — it follows you. · The owner can revoke any badge anytime with setMuseVerified(wallet, false).
Why a challenge window? The badge is a trust signal other apps may rely on. Three days gives the community time to flag an imposter before the badge sticks — no central approver needed for honest claims.

06 — Records: what your name points to

Every name carries on-chain records. Only the NFT owner can update them, and an empty string leaves a field unchanged.

FieldSet withWhat it’s for
walletsetRecords
name, wallet,
avatar, bio, x
The address your name resolves to (via resolve). Auto-set to the buyer; updates automatically if you transfer the NFT.
avatarImage URL shown as your name’s picture.
bioA short line about you / your muse.
xYour X (Twitter) handle.

07 — Your name is an NFT

PropertyDetail
StandardERC-721 — shows up in any wallet or marketplace.
Token IDkeccak256 of the normalized name — deterministic, so the same name is always the same token.
Display nameWallets and apps show it as label.museid.eth (e.g. leo.museid.eth).
ArtworkFully on-chain SVG: a Leo-style muse mascot with a builder hard hat, your full name, and a verified-muse pill if your wallet is badged. No IPFS, no servers — it renders forever.

Live sample — this is the contract's real output for leo (purple palette picked by keccak256("leo")):
MNSleo.museid.eth
TransfersFreely transferable. The wallet record follows the new holder automatically; the muse badge stays with the wallet, not the name.

08 — ENS bridge (opt-in)

MNS lives on Base and Robinhood Chain. If you also want your name on Ethereum mainnet as yourname.museid.eth, the bridge mints it as a wrapped ENS subname — only when you ask, and you pay the mainnet gas. MNS never claims anything on your behalf.

Own a live MNS name on Base or Robinhood Chain Get a one-time signature backend checks you own the name right now, then signs a single-use claim for you claimSubname() on mainnet you call the MNSENSRegistrar — you pay the gas signature can’t be replayed (one nonce per name) Wrapped yourname.museid.eth an ENS NameWrapper NFT in your wallet — address record set, works everywhere ENS does The fine print · Re-claiming after a name changes hands moves the subname to the new owner. · If your MNS name expires, the subname no longer tracks a live name. · Registrar: 0xf103c2b098c9102d6a175c835aa6ace72489cb9f (Ethereum).

09 — Contracts & addresses

WhatAddress
MNS Name NFT on Base0xA98F0cC6cbBfA86dB5155f8738D6bF633B4e2538
fee tokens: $LEO
MNS Name NFT on Robinhood Chain0x39A0779F3B042f957bC5ACEf1A93a352c14178eA
fee tokens: $WLEO, $MASS, $MNS
$MNS token (Robinhood Chain)0x5C4d74B6Bb033b52Faeb27FB5F85c6bD0847d83e
Muse Name Service · 1,000,000,000 supply · 18 decimals
$LEO (Base)0x997f0bdfb42a14fdf48953def8812d7ef34f1eb1
$WLEO (Robinhood)0xa2346dc647cbdab6613989b884068f431b20f726
$MASS (Robinhood)0x1C17151E82423ef61485733a32aaE27c274C5590
MNSENSRegistrar (Ethereum)0xf103c2b098c9102d6a175c835aa6ace72489cb9f
Contract owner (receives all revenue)0x25596Cc8B4091Ff6c8D6aAcD71D672C581e7CC4D
Reading the chain yourself: every fact on this page maps to a public contract function — available, ethFeeFor, tokenFeeFor, resolve, nameIsMuse, expires. Nothing here runs on a server.