# ArcNS docs
URL: https://docs.arcns.io/

> ArcNS resolves @handle, .arc and .circle names on Arc testnet. Integration guides for wallets and explorers, the resolver API contract, the SDK and the contract set.

**ArcNS** is an independent name service built on Arc, operated by [Fortiblox](https://forgejo.selfhsted.com/fortiblox). It gives one address three kinds of name, resolved by one SDK, one read-only API and one set of contracts. Names are permanent registrations: no annual renewal, no expiry, no lapse to a stranger.

<LlmActions />

<ResolverHero eyebrow="Arc name registry" title="@handle, .arc and .circle all resolve the same way" lede={<>A name carries a record per chain — <strong>Arc, Ethereum, Bitcoin, Solana</strong> — never a guessed address on the wrong one. Nothing is registered on Arc testnet yet, so try the shape rules below: they're real and already enforced.</>} />

<TryIt />

## Three shapes, three namespaces

| Input                        | Namespace | Where it lives                                                      |
| ---------------------------- | --------- | ------------------------------------------------------------------- |
| `@alice`, `pay.@alice`       | `handle`  | `HandleRegistry` (ERC-721, permanent, ASCII-only, reserved genesis) |
| `alice.arc`, `pay.alice.arc` | `arc`     | verbatim ENS registry, `.arc` registrar pair                        |
| `alice.circle`               | `circle`  | verbatim ENS registry, `.circle` registrar pair                     |

`@alice`, `alice.arc` and `alice.circle` can belong to three different people, and `alice.arc` can exist in more than one registry on the same chain. Labels are ASCII only (`a-z`, `0-9`, `-`; 1 to 32 bytes; no edge or double hyphen; not all digits), so there is no Unicode to normalise and no homograph to defend against.

## The one rule

<Callout title="Rule" type="info">
  Every result names the **namespace** and the **registry address** it was read from. No SDK function and no API route returns a bare address. Show both before you let anyone send. A mixed shape such as `@alice.arc` is refused, never guessed; two registries that disagree are refused, never picked between.
</Callout>

The SDK enforces this structurally: `Resolved.namespace` and `Resolved.registry` are required fields, `@alice.arc` throws `ambiguous`, and two registries that disagree throw `conflict` with every candidate attached. The API maps those to `409`. Your interface's job is to render what the SDK already refuses to hide.

<div className="d-secttl">
  <span className="d-chip">Why ArcNS</span>
  <h2>Built to be namespace-safe, not just fast</h2>
</div>

<p className="d-sectsub">Four things that are already true today, before a single name is registered on testnet.</p>

<FeatureCards cols={2}>
  <FeatureCard tone="teal" icon="Layers" title="Three namespaces, one rule">
    `@handle`, `.arc` and `.circle` are three independent namespaces with three different registries — never merged, never guessed between.
  </FeatureCard>

  <FeatureCard tone="blue" icon="ShieldCheck" title="Never guessed, never mixed">
    Every result names its namespace and registry address. A mixed shape like `@alice.arc` is refused, not resolved — see [the one rule](#the-one-rule) above.
  </FeatureCard>

  <FeatureCard tone="violet" icon="Infinity" title="Permanent registrations">
    No annual renewal, no expiry, no lapse to a stranger because a payment was missed — a name is registered once.
  </FeatureCard>

  <FeatureCard tone="amber" icon="Code2" href="https://forgejo.selfhsted.com/fortiblox/fortiblox-arcns" title="Open source, MIT">
    The `.arc` / `.circle` registry, resolver profiles, and reverse registrar reuse [ENS](https://docs.ens.domains/) contracts verbatim.
  </FeatureCard>
</FeatureCards>

<SpotlightCard href="/quickstart/" icon="Rocket" badge="Start here" title="Install the SDK and resolve your first name" description="One resolver, three namespaces: resolve @nike, nike.arc and nike.circle, read records with verification, reverse an address, and call the same thing over the API with curl." cta="Read the quickstart" />

## Start here

<DocIndex />

## Status

* **Testnet only.** Everything here targets Arc **testnet** (chain id `5042002`, RPC `https://rpc.testnet.arc.io`, explorer [testnet.arcscan.app](https://testnet.arcscan.app)). Nothing on testnet has monetary value and the deployment may be reset. Mainnet is a separate, gated milestone.
* **SDK.** [`@arcns/resolve`](/quickstart/) ships as `0.1.0-testnet.N` on the npm dist-tag `testnet` (pre-releases never move `latest`). As of 2026-09-07 the first testnet release has not been pushed to the registry yet; until it is, build the package from `sdk/` in the repository. This line changes when the release lands.
* **API.** `https://api.arcns.io` holds no keys and no database (see [API](/api/)); `/health` answers without touching the chain and the data routes answer once the contracts are on testnet.
* **Contracts.** The testnet deployment is pending; the [Contracts](/contracts/) page says so and carries no address until the deployment file is published.
* **App.** `app.arcns.io` is not live yet. Pages that mention it say "when it launches".

## Source and licence

The whole project is open source under the MIT licence: [fortiblox/fortiblox-arcns](https://forgejo.selfhsted.com/fortiblox/fortiblox-arcns). The `.arc` / `.circle` registry, resolver profiles, reverse registrar and universal resolver reuse [ENS](https://docs.ens.domains/) contracts verbatim, so ENS-aware wallets and libraries resolve ArcNS names with the registry address swapped.

## Questions

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