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

# Contract addresses

# Contract Addresses

Canonical Notareum contract addresses per network. The protocol is deployed initially on Ethereum Sepolia for public testing. Mainnet deployments are pending final audits and governance activation. All addresses here are TBD until the testnet launch.

## Networks

| Network          | Status                      |  ChainId |
| ---------------- | --------------------------- | -------: |
| Ethereum Sepolia | TBD, pending testnet launch | 11155111 |
| Ethereum Mainnet | Pending audits              |        1 |
| Polygon Mainnet  | Under evaluation            |      137 |
| Arbitrum One     | Under evaluation            |    42161 |
| Base             | Under evaluation            |     8453 |
| Optimism         | Under evaluation            |       10 |

## Ethereum Sepolia (testnet)

### Core contracts

| Contract                     | Address                     |
| ---------------------------- | --------------------------- |
| `NotareumAccessManager`      | TBD, pending testnet launch |
| `NotareumNotaRegistry`       | TBD, pending testnet launch |
| `NotareumVerificationEngine` | TBD, pending testnet launch |
| `NotareumValidatorStaking`   | TBD, pending testnet launch |

### Token contracts

| Contract            | Address                     |
| ------------------- | --------------------------- |
| `NotareumNOTAToken` | TBD, pending testnet launch |
| `NotareumVeNOTA`    | TBD, pending testnet launch |

### Access and governance contracts

| Contract                  | Address                     |
| ------------------------- | --------------------------- |
| `NotareumAccessManager`   | TBD, pending testnet launch |
| `NotareumGovernor`        | TBD, pending testnet launch |
| `NotareumFeeManager`      | TBD, pending testnet launch |
| `NotareumSlashingManager` | TBD, pending testnet launch |
| Treasury multisig         | TBD, pending testnet launch |
| Validator reward pool     | TBD, pending testnet launch |

### Block explorer

Once deployed, each contract is verified on Etherscan-compatible explorers:

* `https://sepolia.etherscan.io/address/<contract>`
* `https://sepolia.blockscout.com/address/<contract>`

## Ethereum Mainnet

All addresses: **TBD, pending audits and governance activation.** Mainnet deployment requires:

1. Completed external audit with published report.
2. Successful testnet operation for the governance-set minimum observation window.
3. Passing governance proposal to schedule mainnet deployment.

## Canonical address source

Every SDK resolves addresses from a canonical `addresses.json` file served from the protocol GitHub release artifacts. This prevents hardcoded addresses from drifting in integrations.

### File location

```
https://raw.githubusercontent.com/notareum/contracts/main/deployments/<network>/addresses.json
```

Example network folders:

* `deployments/sepolia/addresses.json`
* `deployments/mainnet/addresses.json`

Each release also attaches the `addresses.json` set for every supported network as a GitHub release asset.

### File shape

```json theme={"system"}
{
  "chainId": 11155111,
  "network": "sepolia",
  "deployedAt": "2026-04-15T00:00:00Z",
  "version": "1.0.0-alpha",
  "contracts": {
    "NotareumAccessManager": "0x0000...0000",
    "NotareumNotaRegistry": "0x0000...0000",
    "NotareumVerificationEngine": "0x0000...0000",
    "NotareumValidatorStaking": "0x0000...0000",
    "NotareumNOTAToken": "0x0000...0000",
    "NotareumVeNOTA": "0x0000...0000",
    "NotareumFeeManager": "0x0000...0000",
    "NotareumSlashingManager": "0x0000...0000",
    "NotareumGovernor": "0x0000...0000"
  },
  "subgraph": {
    "endpoint": "https://api.thegraph.com/subgraphs/name/notareum/sepolia"
  }
}
```

Fields are stable across versions. New entries are additive.

## Fetching programmatically

### TypeScript

```typescript theme={"system"}
import { Notareum, fetchAddresses } from "@notareum/sdk";

const addresses = await fetchAddresses({ network: "sepolia" });
const ntm = Notareum({ provider, contracts: addresses });
```

`fetchAddresses` fetches `addresses.json` with integrity checks (SHA-256 matching the latest release manifest). In production, pin to a specific release tag to avoid surprises.

### Python

```python theme={"system"}
from notareum import Notareum, fetch_addresses

addresses = fetch_addresses(network="sepolia")
ntm = Notareum(provider=w3, contracts=addresses)
```

### Rust

```rust theme={"system"}
use std::sync::Arc;
use notareum::{Notareum, ClientConfig, ContractAddresses};
use ethers::providers::{Http, Provider};

// Fetch the published addresses for the desired network and map them onto
// the SDK's ContractAddresses struct (helper omitted for brevity).
let contracts: ContractAddresses = fetch_sepolia_addresses().await?;

let provider = Arc::new(Provider::<Http>::try_from(rpc_url)?);
let ntm = Notareum::new(ClientConfig {
    provider,
    signer: None,
    contracts,
})?;
```

### Shell

```bash theme={"system"}
curl -s https://raw.githubusercontent.com/notareum/contracts/main/deployments/sepolia/addresses.json \
  | jq .contracts
```

## Pinning to a release

To make integrations reproducible, pin the address set to a specific release tag:

```typescript theme={"system"}
const addresses = await fetchAddresses({
  network: "sepolia",
  release: "v1.0.0-alpha.3",
});
```

This reads the artifact attached to the release (immutable) rather than the mutable `main` branch. Recommended for production.

## Migration policy

If an address changes (e.g., a proxy is migrated to a new deployment), the release notes include:

1. The old and new addresses.
2. The migration window during which both are live.
3. The deprecation date of the old address.
4. Integration steps required to cut over.

SDKs surface an `addressDeprecated` warning when the configured address is no longer current per the latest `addresses.json`.

## Integrity

The `addresses.json` file is signed by the governance multisig. The SDK's `fetchAddresses` verifies the signature against the known protocol public key before returning the parsed content.

```typescript theme={"system"}
await fetchAddresses({
  network: "sepolia",
  verifySignature: true, // default true
});
```

Disabling signature verification is permitted for local testing but flagged in logs.

## Related pages

* [Smart Contracts Overview](../smart-contracts/overview.md)
* [Error Codes](error-codes.md)
* [SDK Overview](../sdks/overview.md)
* [Changelog](changelog.md)
