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.