# Trust & transparency
URL: https://docs.arcns.io/trust/

> 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 [#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 [#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.

> **Warning**
> 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](/pricing/#reserved-names)).

## Never guessed, never mixed [#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](/faq/#handle-arc-and-circle).

## Verified vs. unverified records [#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](/verified/).

## Recovery and locks, if something goes wrong [#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](/pricing/)) — 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 [#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](/contracts/)**

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](https://testnet.arcscan.app/address/0x520Ef0D49F2e2A66d99B460E05EC5A8C743215d2)**

0x520Ef0D49F2e2A66d99B460E05EC5A8C743215d2 — the @handle registry. Every other contract is one click away on the Contracts page.

> **Note**
> 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 [#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](/quickstart/), or resolve names from an agent through the [MCP server](/mcp/).

## Questions [#questions]

Questions: [support@arcns.io](mailto:support@arcns.io).
