# Contracts
URL: /docs/x1id/contracts

> The X1ID registry program on X1 testnet — its deployed address, the RPC endpoint it runs behind, and how to verify it yourself.

# Contracts

<Pill tone="testnet">Testnet</Pill>

<LlmActions />

X1ID runs as a single on-chain registry program on **X1 testnet**. There is no separate "resolver" or "registrar" contract split — one program owns handle registration, records, and the delegate/authority rules the [SDK](/docs/x1id/api#sdk-multi-chain-records-and-writes) and [MCP server](/docs/x1id/mcp) both read and write through.

## Deployed

|            |                                                                       |
| ---------- | --------------------------------------------------------------------- |
| Program    | X1ID registry                                                         |
| Program ID | <code>8JgnNWi24bq9uzfnT9XmkWxvaWMVgoEs9bu8QsHhLe1P</code>             |
| Network    | X1 testnet                                                            |
| RPC        | <code>[https://rpc.testnet.x1.xyz](https://rpc.testnet.x1.xyz)</code> |

<Callout type="info">
  **Mainnet is a separate, deliberate step.** Handles registered today live on X1 testnet — see [Trust & transparency](/docs/x1id/trust) for what that means and when that changes.
</Callout>

This is the same address every X1ID surface is wired to: it's what `@x1id/resolve` derives PDAs against, what the [MCP server](/docs/x1id/mcp) reads via its `X1ID_PROGRAM_ID` environment variable, and what the [Resolve API](/docs/x1id/api) ultimately reads through when it answers a lookup.

## Verify it yourself

<Callout type="success">
  **Ownership you can audit.** Nothing here asks you to take our word for it — the program is public, and every handle it manages is a readable account on X1 testnet.
</Callout>

Point any Solana-compatible RPC client at the program ID above and the testnet RPC to confirm it exists and is executable:

```bash title="terminal"
solana program show 8JgnNWi24bq9uzfnT9XmkWxvaWMVgoEs9bu8QsHhLe1P \
  --url https://rpc.testnet.x1.xyz
```

For the shape of individual accounts (a handle's registry entry, its text records), read through the [SDK](https://www.npmjs.com/package/@x1id/resolve) or the [MCP server's](/docs/x1id/mcp) read tools rather than parsing raw account bytes by hand — both derive the same PDAs this program expects and stay in sync with it as the source of truth.
