> ## Documentation Index
> Fetch the complete documentation index at: https://docs.metalntwx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Contract Addresses

> System contract addresses on Metal

These protocol contract addresses are fixed by Metal. The Ethereum light-client
account is installed when the network configures its Ethereum trust policy.

## System contracts

| Contract | Address | Purpose |
| - | - | - |
| `MIP20Factory` | `0x0000000000000000000000000000000000000f4C` | Deploys MIP20 tokens and maintains the MIP20 allowlist |
| `ReceivePolicy` | `0x0000000000000000000000000000000000000f4d` | Stores account receive rules and holds quarantined MIP20 credits for authorized recovery |
| `MIP410` | `0x0000000000000000000000000000000000000410` | MIP410 shielded pool |
| `EthereumLightClient` | `0x00000000000000000000000000000000000000FC` | Read-only Ethereum checkpoints maintained by Metal block execution, when configured for the network |
| `CircuitRegistry` | `0x00000000000000000000000000000000000000F0` | Stores content-addressed UltraHonk verification keys for the `0xF2` verifier precompile |
| `MetalOutbox` | `0x0000000000000000000000000000000000000B0C` | Appends cross-chain message commitments to the message tree |
| Default gas token | `0x000000000000000000000000000000000000B5D5` | Standard Ethereum envelopes pay fees in this token. \*USDZ uses 18 decimals on testnet |
| `*EURZ` | `0x000000000000000000000000000000000000C5DC` | Second genesis gas token, selectable through `0x7f`, with 6 decimals on testnet |

> [!NOTE]
>
> Configure receive rules at the receive policy contract, `ReceivePolicy`.
> Send policy contracts, routers, and settlement contracts use their own
> deployment addresses.

## Contracts not yet on Metal Testnet

Metal reserves these addresses for protocol contracts that a network installs
through its genesis configuration or a network upgrade. Metal Testnet has none
of them yet, so a code check at these addresses returns empty bytecode there.

| Contract | Address | Purpose |
| - | - | - |
| `MetalOracle` | `0x00000000000000000000000000000000000000fd` | Validator-attested data items |
| `MetalAssertions` | `0x000000000000000000000000000000000000018c` | Bonded claims settled unless challenged |
| `Scheduler` | `0x00000000000000000000000000000000000000fe` | Contract calls run at a future time, block height, or oracle condition |
| `Beacon` | `0x00000000000000000000000000000000000000ff` | Threshold beacon: slot keys and randomness |
| `FrostRequests` | `0x000000000000000000000000000000000000f057` | Queue for validator threshold-signature requests |

## Testnet token addresses

The public testnet is seeded with stablecoins for major G20 currencies. Except
for the two genesis gas tokens above, addresses can vary by environment. Call
`MIP20Factory.isMIP20(address)` to verify MIP20 status.

Token decimals vary. The testnet default gas token, `*USDZ`, uses 18 decimals.
Read each token's `decimals()` value.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.