Skip to main content

BNB Chain

BNB Chain (chainId 56) is a production deployment of Privacy Pools v2, served by the production ASP and relayer. The core contracts went live on 2026-09-01 (Keystore at block 119401440; the ASP indexes the pool from block 119614738). The core addresses are identical to Ethereum mainnet and Citrea, because the three were deployed deterministically.

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 0xd0395c08DD8eA7671a7A65bDca8E473e8E8260a8 (owner 0x0967755AfA2016866D12EefB820705026842dCe8). approvedZapList() holds the ppUSDT zap below.
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, processor, and yield addresses from the production relayer's /v1/details, which lists this chain as bsc.

The public BNB Chain RPC (bsc-dataseed.binance.org) serves calls but not eth_getLogs at any range, so note discovery on this chain needs an archive-capable provider; the 0xbow frontend treats an Alchemy key as effectively required here.

Tokens​

Read the live configuration with Entrypoint.assets(asset) before quoting; the values below were read on 2026-09-22. The vetting fee is 0 bps on every enabled asset. Stablecoins on BNB Chain have 18 decimals.

Native BNB (placeholder) 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee. Enabled; minAmount 0.02 BNB; maxRelayFee 2 BNB.
ppUSDT (yield share) 0x6C17bE9c864254CA4b2d36223f31AdE94B4d64c2. Enabled; minAmount 10 shares; maxRelayFee 1200 shares.
FDUSD 0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409. Enabled on the Entrypoint (minAmount 10 FDUSD; maxRelayFee 1200 FDUSD) but not listed by the production relayer, so it can be deposited and self-relayed today but not quoted or relayed through the relayer.
USDT 0x55d398326f99059fF775485246999027B3197955. Not enabled as a plain pool asset; it enters the pool as ppUSDT through PPRouter. The relayer lists it as a swap input and output.

Yield deployments​

ppUSDT share 0x6C17bE9c864254CA4b2d36223f31AdE94B4d64c2 over Aave v3 aBnbUSDT 0xa9251ca9DE909CB71783723713B21E4233fbf1B1 · router 0x9929Ad2Edc2E0B5D59C3f5b2910812D0c8b84E16 (ERC-20 mode) · zap 0xc0FBB5D5936a6f089C1B30Ff0Fd0BEAd27b9F766 · underlying USDT, 18 decimals · feeBps 2000

The router is the relayer's only allowed_processors entry on this chain.

ASP​

ASP public key (X25519) 0x3f651e2321b9b78c3690064b025b610942cbf755e28d44726378cf853cfd8f34, served at /public-key (the same production key as mainnet and Citrea).
Attestation state An association-set root is published (latestASPRoot() and latestIPFSCID() both answer), so attested notes are spendable.

Relayer configuration​

Relayer signer EOA 0x9e2f1B234953F46c6091636290E9035618EA3C07
Processor for transfers and withdrawals PrivacyPoolRelay 0x01a8Fa4dbb60187aD8d3c3d08E7Fb8C14198A461
Processor for swaps and reshields RelaySwaps 0xd0395c08DD8eA7671a7A65bDca8E473e8E8260a8 (swapsSupported: true)
Processor for yield withdrawals PPRouter 0x9929Ad2Edc2E0B5D59C3f5b2910812D0c8b84E16
Fee shape The relayer publishes a fixed component of 21000 plus 10 bps on BNB and USDT, and the fixed component alone on ppUSDT.

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 119401440 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.