# Citrea

> Citrea mainnet (chainId 4114) is a production deployment of Privacy Pools v2, served by the production ASP and relayer. The core contracts went live on 2026-09-01 (the ASP indexes the pool from block 12093842). The core addresses are identical to [Ethereum mainnet](/deployments/mainnet) and [BNB Chain](/deployments/bnb), because the three were deployed deterministically. Citrea's native coin is cBTC (18 decimals).

Citrea mainnet (chainId 4114) is a production deployment of Privacy Pools v2, served by the production ASP and relayer. The core contracts went live on 2026-09-01 (the ASP indexes the pool from block 12093842). The core addresses are identical to [Ethereum mainnet](/deployments/mainnet) and [BNB Chain](/deployments/bnb), because the three were deployed deterministically. Citrea's native coin is cBTC (18 decimals).

## Contract addresses

PoolVault 0x0Eb42804BF897662aF851370eaeAdcDBEC1b97ed (UUPS proxy; implementation 0x5f89cd5c3610c2ad870b1b33126d209fecdb69c7)
Entrypoint 0xca1e072236D231130059eeA6Bfceb7F4e9a1F0C3
Keystore 0x6E463391c79b7e1A88eF26E0B023f9A6C9938a71
ASPRegistry 0x259C0BEa1d783c202509BD3b2688d23b8AEf58B0
AccessRouter 0x40a6bC296D87f71Ab31Ca3Bfb50513441fBD5160
PrivacyPoolRelay 0x01a8Fa4dbb60187aD8d3c3d08E7Fb8C14198A461. The full relay (`MAX_BATCH()` 10, canonical `ANNOUNCER()`), so batch, stealth, and register-and-relay withdrawals are available.
RelaySwaps **Not deployed.** The address used on the other two chains has no code on Citrea, and the relayer reports `swapsSupported: false`. Citrea is not a LiFi network, so [withdraw-and-swap](/operations/withdraw-and-swap) and [reshield](/operations/reshield) are unavailable here.

Deposit verifier 0x49Ab3f48Ff9fa603EE81E5f28eB4214798E29862
Ragequit verifier 0x687059Fc9C2488f333e06aa72CBea7E4b1D05B57
Transact verifiers The 5×5 grid is registered (`transact_1x1` 0x1C838Ca4BB05838907E99A3e328e14d87a6859c1 through `transact_5x5` 0x20D183F61B7a0A0c502d136149a827C811750272), the same verifier addresses as mainnet.

**Compatibility:** SDK, circuits, deployed verifiers, and deployment addresses must all match. Mixing sets produces invalid proofs.

## Parameters

Identical to mainnet: `rootHistorySize` 16, `maxStateTreeSize` 2^22, `keystoreRootLiveness` 1200 seconds, `maxKeystoreTreeSize` 2^18. Not paused at the time of writing.

## How each path resolves

Pass the addresses above as `config.deployment` (the SDK's default table carries Sepolia only), point `aspUrl` at the production ASP, and take relayer and processor addresses from the production relayer's `/v1/details`, which lists this chain as `citrea` with no `relaySwaps`, no `processors`, and no `yield`.

RPC https://rpc.mainnet.citrea.xyz (the public endpoint; Citrea is not an Alchemy network). Keep `eth_getLogs` ranges at 1000 blocks or fewer.
Explorer https://explorer.mainnet.citrea.xyz

## Tokens

Read the live configuration with `Entrypoint.assets(asset)` before quoting; the values below were read on 2026-09-22.

Native cBTC (placeholder) 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee. Enabled; `minAmount` 0.0001 cBTC; vetting fee 0 bps; `maxRelayFee` 0.015 cBTC. The only depositable asset on Citrea today.
USDT.e, USDC.e, ctUSD 0x9f3096Bac87e7F03DC09b0B416eB0DF837304dc4, 0xE045e6c36cF77FAA2CfB54466D71A3aEF7bbE839, 0x8D82c4E3c936C7B5724A382a9c5a4E6Eb7aB6d5D (6 decimals each). The relayer lists all three with fee terms, but the Entrypoint has them **not enabled** (`enabled: false`, no configuration), so deposits in them revert with `Entrypoint_AssetNotEnabled` until they are configured.

No yield deployments exist on Citrea.

## ASP

ASP base URL https://api-v2.0xbow.io
ASP public key (X25519) 0x3f651e2321b9b78c3690064b025b610942cbf755e28d44726378cf853cfd8f34, served at `/public-key` (the same production key as mainnet and BNB Chain).
Attestation state **No association-set root had been published as of 2026-09-22**: `ASPRegistry.latestASPRoot()` reverts `ASPRegistry_EmptyAssociationSet`. Deposits succeed and are recorded, but every `transact` (transfer or withdrawal) reverts until the ASP posts its first root, because the vault requires the proof's root to equal `latestASPRoot()`. [Ragequit](/operations/ragequit) does not check the ASP root and works regardless.

## Relayer configuration

Base URL https://relayer-v2-prod-149184580131.us-east1.run.app
Relayer signer EOA 0x9e2f1B234953F46c6091636290E9035618EA3C07
Processor for transfers and withdrawals PrivacyPoolRelay 0x01a8Fa4dbb60187aD8d3c3d08E7Fb8C14198A461
Fee shape The relayer publishes a fixed component of 21000 plus 10 bps on every listed asset.

Read `/v1/details` at runtime; these values are what the production relayer published on 2026-09-22.

## Governance

Roles live on the AccessRouter above; read its `RoleGranted` and `RoleRevoked` events from block 12093842 for the current holders. This deployment is not recorded in the monorepo's `ChainDeploymentRegistry`.

Source: read live from chain and from the production ASP and relayer on 2026-09-22; pinned in the 0xbow frontend's `config/prod-deployments.ts`.
