Trust & transparency
Permanent ownership, anti-impersonation by design, verified records, on-chain recovery and locks, and the deployed contracts you can audit yourself on Arc testnet.
Names hold identity and route payments, so trust matters. Everything below is built in, and the last section gives you the on-chain addresses to check it all yourself.
Your name is permanently yours
Once you register a name, it's yours in every namespace — @handle, .arc, .circle — with no renewal to miss and no expiry that could quietly transfer it to someone else. A name people send money to must never change owners through inaction, so ownership doesn't lapse. It only moves when you choose to transfer or sell it.
Built to resist impersonation
Labels are ASCII only: a-z, 0-9, -; 1 to 32 bytes; no leading, trailing or doubled hyphen; not all digits.
This closes a real trap at the root. In many naming systems, an attacker can register a name that looks identical to yours using a lookalike character from another alphabet — a Cyrillic "а" in place of a Latin "a" in @alice, for instance. To the eye they're the same; to a computer they're different names. By allowing only one, plain ASCII character set, ArcNS has no Unicode to normalise and therefore no homograph to defend against — the whole attack class doesn't apply, rather than being caught after the fact. On top of that, 20,307 system words, trademarks, tickers and well-known identities were reserved at genesis so nobody can register them to impersonate someone (see Fees).
Never guessed, never mixed
@handle, .arc and .circle are three independent namespaces. Every result names its namespace and the registry address it was read from — no SDK function and no API route ever returns a bare address. A mixed shape like @alice.arc is refused, never guessed; .arc and .circle names resolve only from ArcNS's own registry — a name absent from it is a plain not-found, never a comparison against, or a blend with, another project's registry on Arc. See the one rule.
Verified vs. unverified records
Anyone can set an address record on a name. ArcNS lets an owner prove control of that address for a given chain, and shows the result honestly: a proven record is verified, an unproven one is unverified. Nothing unproven is ever dressed up as trusted, so people know what they're relying on before they send. Full mechanics, including the challenge format, are on Verified records.
Recovery and locks, if something goes wrong
A @handle carries two on-chain safety tools:
- Recovery. Set a recovery address in advance; if you lose access to the wallet that owns the handle, that address can initiate recovery and complete it after a 7-day timelock (the contract floors it at seven days). Recovery is disabled once a handle has been tokenized (see Fees) — an ERC-721 in the wild has only its holder as owner, by design.
- Locks. If you think your key is compromised, lock the handle instantly — a lock freezes ownership, records and transfers so a thief can't move it or redirect its addresses. Unlocking has its own 7-day timelock, so whoever just stole a key can't lock it and immediately walk away with it.
You can audit it yourself
ArcNS runs as a set of public contracts on Arc testnet, deployed on 2026-09-07 at block 60889698. You don't have to take our word for anything — you can inspect them directly on the Arc explorer.
Every address, from one file
The Contracts page is generated from contracts/deployments/5042002.json in the repository, which also records the bytecode hash of every contract; the build refuses to publish an address that is not in that file.
HandleRegistry on ArcScan
0x520Ef0D49F2e2A66d99B460E05EC5A8C743215d2 — the @handle registry. Every other contract is one click away on the Contracts page.
The contracts are on Arc testnet. The move to mainnet is a separate, deliberate step we're preparing for — until then, treat names as running on testnet: nothing has monetary value and the deployment may be reset. We'll make the mainnet launch clear when it happens.
For developers
If you're building something that resolves names to addresses, the public package is @arcns/resolve (0.2.0-testnet.1 in the repository's sdk/ directory). It is not on the npm registry yet — build it from source until the first testnet release lands. Start at the Quickstart, or resolve names from an agent through the MCP server.
Questions
Questions: [email protected].