Skip to main content

Sepolia (testnet)

Sepolia testnet is the canonical development environment for Privacy Pools v2 (chainId 11155111). The 0xbow frontend, the SDK's default deployment table, and the latest on-chain registry currently all resolve to the same V9 contract set below. They are configured independently, so confirm they still agree before relying on one, and keep your SDK, circuits, verifiers, and addresses on a single matching set.

Contract addresses (Sepolia V9)

PoolVault 0x09b94d3127019298757A6ceeB7911922085f7C01
Entrypoint 0xEB3e3961008952348445513e418ad6F43C23ca9a
Keystore 0x6d264aCb9C3A7A3105c29470AfE2F5F1EC203C73
ASPRegistry 0x35D29EFDCf067599ab4A53cf40229477f0b1cA9c

The PrivacyPoolRelay processor address is app-configured rather than part of the SDK deployment table, so it lives in Relayer configuration below.

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

How each path resolves

The frontend pins the pool and keystore directly and resolves the entrypoint at runtime from the ASP /global/public/entrypoints feed, matching the entry whose poolVault equals the pinned pool. It can switch the active pool from that feed, while environment overrides pin a specific deployment when they are set.

The SDK resolves these addresses through DEPLOYMENTS[11155111] when no deployment is supplied in config. That table carries only the four contract addresses above, not relayer or processor routing. To target a different pool, override config.deployment explicitly and supply matching circuits.

The on-chain registry holds the newest published set, which currently matches both.

Frontend configuration

An integrating app supplies the rest of its configuration through environment variables: the ASP base URL, the RPC or provider endpoint, optional pool, keystore, and entrypoint overrides, the relayer settings, and optionally the ASP public key (otherwise fetched from the provider on first use). The v2 frontend is an Expo app, so it reads these through EXPO_PUBLIC_* names, for example EXPO_PUBLIC_SEPOLIA_POOL_ADDRESS and EXPO_PUBLIC_SEPOLIA_KEYSTORE_ADDRESS to override the pinned pool and keystore. Those prefixed names are the v2 frontend's convention rather than a protocol requirement, so a non-Expo integration uses its own variable names for the same values.

Tokens

Native ETH (placeholder) 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
USDC (Sepolia) 0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238
USDT (Sepolia) 0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0

Asset configuration (enabled flag, min amount, vetting fee BPS, max relay fee) is set per-asset on the Entrypoint. Read it live rather than hardcoding values: call Entrypoint.assets(asset), which returns AssetConfig{ enabled, minAmount, vettingFeeBPS, maxRelayFee }, and quote fees and minimums from those fields per deposit.

ASP

ASP public key (X25519) 0x18656ba6d7862cb11d995afe20bf8761edee05ec28aa29bfbcf31ebd19dede71

Relayer configuration

Endpoints used Transfers: /v1/quote/evm/11155111/transfer, /v1/relay/evm/11155111/transfer. Withdrawals: /v1/quote/evm/11155111/receive (quote) and /v1/relay/evm/11155111/withdrawal (relay).
Relayer signer EOA 0x4Ba5fF376865b370790A56276C63e7984DCFf1f7, the gas wallet that signs quotes and submits transactions.
Processor (PrivacyPoolRelay) 0x762665Dc7aAeeA25DC1759AEBef1F61730497f6e. The website binds processor to the PrivacyPoolRelay contract for both transfers and withdrawals, because the deployed relayer posts both routes through relay(). See PrivacyPoolRelay. This is the V9 relay (deployed 2026-05-27) and it exposes relay() only: relayBatch, relayAndAnnounce, registerAndRelay, and MAX_BATCH() were added to the contract afterwards, so batch and stealth withdrawal are not available against this address until the relay is redeployed.

No yield router or RelaySwaps processor is registered for Sepolia in the monorepo's ChainDeploymentRegistry; a relayer that supports them publishes their addresses in /v1/details (processors, yield[], contracts.relaySwaps).

These relayer/processor addresses are app-configured (current 0xbow website values shown) and are not part of the SDK deployment table. They can change when the pool changes.

Sepolia ETH + tokens

  • Sepolia ETH faucet: any community faucet (Alchemy, QuickNode, Sepoliafaucet).
  • Sepolia USDC: Circle faucet or DEX swap.
  • Sepolia USDT: community faucets or DEX.