# Privacy Pools Markdown version of https://l2beat.com/privacy/projects/privacy-pools ## Summary - Total Value Locked: $9.38 M (+1.30% compared to seven days ago) - Assets tracked: 14 - Buckets tracked: 14 - Deposits 7D: 196 (+97.9% compared to the previous seven days) - Deposits 30D: 562 - Deposits Total: 7.88 K - Active Relayers 30D: 5 - Tracked on: Ethereum - Attributes: ZK, Any amount ### Risks - Privacy: Link privacy. Public observer: Link private (sentiment: good); Chain analyst: Link private (sentiment: good); Network observer: Link private (sentiment: good); Privileged insider: Link at risk (sentiment: warning); Future adversary: Link private (sentiment: good). - Trusted setup: 80 participants (sentiment: warning). Privacy Pools: Trusted setup for two Groth16 Privacy Pools circuits. It was built on top of 80 phase 1 contributions, with 513 phase 2 participants. Proving system could be broken if either phase 1 or 2 is compromised. - Exit window: Infinite (sentiment: good). The depositing address can always ragequit its funds from the immutable pools, without the Entrypoint or the ASP. A ragequit is public. This protocol fails the walkaway test: users cannot fully use it if every centralized participant disappears. Private withdrawals need the ASP to approve each deposit and keep posting roots. - Reproducibility: Reproducible (sentiment: good). The contracts, circuits, SDK, relayer and website are open source and build locally. The ASP service is closed. ### About A privacy pool system for any amount, where only centrally approved deposits can be withdrawn privately. ### Links - Website: https://privacypools.com - Docs: https://docs.privacypools.com - Repository: https://github.com/0xbow-io/privacy-pools-core, https://github.com/0xbow-io/privacy-pools-website - Contracts explorer (Disco): https://disco.l2beat.com/ui/p/privacy-pools ## Protocol description Privacy Pools lets the user withdraw ETH or ERC-20 tokens in full or in parts, to an address with no visible link to their deposit. Only deposits that 0xbow's association set provider (ASP) currently approves can leave privately. Depositors, recipients, amounts and timing stay public. Users trust 0xbow, which runs the ASP and hosts the website, and the 2/4 multisig that can upgrade the Entrypoint without delay. The ASP can withhold approval for any deposit or remove it at any time. Exiting is permissionless: the depositing address can always ragequit its funds from the immutable pools, in public. ### Flow 1. **Deposit.** You send funds through the Entrypoint, which keeps the vetting fee and adds a commitment to the asset's pool. Your address and the amount are public. 2. **Approval.** The ASP adds the deposit's label to its approved list, usually within hours. It posts the list's root onchain and the list itself on IPFS. 3. **Withdraw.** The website proves that you own an approved, unspent deposit without revealing which. A relayer submits the proof and pays the gas for a fee from the withdrawal. What you leave in the pool stays behind as a change note. ### Keys All notes derive from one recovery phrase. The website creates a random one or derives it from a signature of the user's wallet. Losing it loses the funds. ### App The ratings assume the website at [privacypools.com](https://privacypools.com), built from [public source](https://github.com/0xbow-io/privacy-pools-website) and hosted by 0xbow. It accepts the user's own RPC endpoint and a sign-in with the recovery phrase alone. It offers two relayers, Fast Relay and Cloaked Relay, while anyone can relay onchain. Over Tor, Fast Relay often refuses the connection and the website switches to Cloaked Relay. Accounts from the older 12-word key method send their deposit labels to 0xbow while they migrate. ### Exits **Ragequit.** The depositing address can take out a note's funds at any time, approved or not, directly from the pool. It reveals which deposit the funds belong to, and for a change note, the withdrawal that left it. ### Compliance The ASP screens each depositing address before approving its deposit, under 0xbow's own due diligence. It may ask for a Proof of Association, which 0xbow's [separate app](https://tornado.0xbow.io) creates for Tornado Cash withdrawals. Every withdrawal must prove against the ASP's latest list, so a later list can revoke an earlier approval. A deposit without approval can leave only by ragequit. ### Fees Deposits pay a vetting fee, which the Entrypoint owner can withdraw. Relayers set their own fee per withdrawal, within a cap per asset: - 0% vetting fee, 10% maximum relayer fee: frxUSD, fxUSD, sUSDS, USDe, USDS, USDT, WBTC, wOETH, wstETH. - 0% vetting fee, 5% maximum relayer fee: DAI, USD1. - 0.5% vetting fee, 10% maximum relayer fee: BOLD, ETH, USDC. A withdrawal the user submits directly pays no relayer fee. ### Anonymity set Each pool has its own set: the approved deposits whose notes still hold at least the withdrawn amount. Deposits the ASP has not approved never count. Smaller withdrawals from larger pools hide among more deposits. ## Privacy **What the protocol promises:** Hides which deposit funds which withdrawal, for deposits the ASP approves. Everything else is public. Ethereum is public by default. Each protocol is rated on its main privacy promise, like hiding who paid, who received, how much, or which deposit became which withdrawal. Against each adversary, the colour says whether it holds for a careful user with the app's own settings: green yes, yellow only with significant extra work, red no. Fields marked at risk stay private only under the condition in their note. ### Public observer Link private (sentiment: good) **Who:** Everyone with a block explorer and some basic tools. Sees every public onchain event, but does no correlation beyond following links. Examples: A curious counterparty, an employer, a journalist. A zero-knowledge proof hides which approved deposit a withdrawal spends. Partial withdrawals leave a change note and look like full ones. **Advice:** Exit through a relayer, so none of the user's wallets pay gas for the receiving address. Ragequit only deposits the user never withdrew from, since ragequitting a change note reveals the withdrawal that left it. **Sources** - [PrivacyPoolsEntrypoint](https://l2beat.com/privacy/projects/privacy-pools#PrivacyPoolsEntrypoint) - [Withdrawal circuit](https://github.com/0xbow-io/privacy-pools-core/blob/a80836a47451e662f127af17e11430ffa976c234/packages/circuits/circuits/withdraw.circom) - [ragequit: only the depositing address, in public](https://l2beat.com/privacy/projects/privacy-pools#PrivacyPoolETH) ### Chain analyst Link private (sentiment: good) **Who:** Scrapes all public data and correlates it: timing, amounts, gas and wallet fingerprints, address clusters. Examples: Chain analytics firms, ZachXBT, data brokers. A relayed withdrawal of a common amount hides among all approved deposits of its pool. The approved list at any block is public. Any amount is allowed, so an unusual one pairs a deposit with its withdrawal. Paying gas from the user's wallet instead of a relayer exposes its fingerprint, account implementation and fee habits, even from a fresh address. **Advice:** Use a pool with a large anonymity set. Withdraw common amounts rather than everything at once. Wait before exiting and pick a different time of day than the deposit. Exit to a fresh address every time and spend from it with a different wallet than the one that deposited. **Sources** - [relay: anyone can relay, the fee comes from the withdrawal](https://l2beat.com/privacy/projects/privacy-pools#PrivacyPoolsEntrypoint) - [Blockchain Privacy and Regulatory Compliance (design paper)](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4563364) - [Tutela (arXiv:2201.06811)](https://arxiv.org/abs/2201.06811) ### Network observer Link private (sentiment: good) **Who:** Sits between the user and the services and sees traffic only: ISPs, VPNs, Tor exits, public RPCs and relayers. Learns IP addresses, timing, fingerprints and ciphertext. Services the operator runs count as the insider. Examples: Infura or Alchemy, a Tornado relayer, a wallet vendor selling telemetry, Google captcha or analytics in the dapp frontend. The website works in Tor Browser and scans every pool whole, matching notes locally without revealing the user's deposits to third parties. The relayer receives amount and asset for a quote and the recipient once the user confirms. With a wallet sign-in on the default RPC, Alchemy sees the wallet and then the polling for the user's withdrawal, tying the two by timing. **Advice:** Withdraw in a new Tor Browser session, signed in with the user's recovery phrase so no wallet address is queried. Before signing in, set the user's own node as the Ethereum endpoint. **Sources** - [Sign-in with a recovery phrase needs no wallet](https://github.com/0xbow-io/privacy-pools-website/blob/7df411128f7a18a61a77f7a0371bf0b857969e2a/src/providers/AuthProvider.tsx#L39-L47) - [Pools scanned whole from deployment](https://github.com/0xbow-io/privacy-pools-website/blob/7df411128f7a18a61a77f7a0371bf0b857969e2a/src/utils/dataService.ts#L11-L34) - [A custom endpoint takes over reads and scans](https://github.com/0xbow-io/privacy-pools-website/blob/7df411128f7a18a61a77f7a0371bf0b857969e2a/src/config/chainData.ts#L660-L689) - [Recipient sent to the relayer on confirm](https://github.com/0xbow-io/privacy-pools-website/blob/7df411128f7a18a61a77f7a0371bf0b857969e2a/src/utils/quotePhases.ts#L4-L43) ### Privileged insider Link at risk (sentiment: warning) **Who:** Holds an operator role, custodies funds, receives keys or plaintext by design, or delivers the client: upgrade admin, custodian, view key holder, enclave operator, association set provider, hosted prover, registry, frontend host. Examples: A compliance backdoor key, a DAO with an upgrade key, a KMS committee, an ASP operator, a custodial bridge. The ASP postman can publish a new approved list at any time with no delay, and withdrawals must prove against the latest one. It can deny the user a private exit or publish a list containing only their deposit, reducing their anonymity set to one. The website counts the anonymity set it shows from 0xbow's own feed, not from the list the user's withdrawal proves against. 0xbow can also change the hosted website at any time. **Advice:** Before withdrawing, check the size of the approved list behind the latest root, which its RootUpdated event links on IPFS. Run an inspected local build of the client instead of the hosted frontend. **Sources** - [updateRoot: the postman sets a new root with no delay](https://l2beat.com/privacy/projects/privacy-pools#PrivacyPoolsEntrypoint) - [validWithdrawal: only the latest ASP root is accepted](https://l2beat.com/privacy/projects/privacy-pools#PrivacyPoolETH) - [Displayed anonymity set counted from 0xbow's amount feed](https://github.com/0xbow-io/privacy-pools-website/blob/7df411128f7a18a61a77f7a0371bf0b857969e2a/src/hooks/useASP.ts#L63-L75) - [Privacy Pools Multisig and ASP postman](https://l2beat.com/privacy/projects/privacy-pools#permissions) ### Future adversary Link private (sentiment: good) **Who:** Harvest now, decrypt later. Holds every byte ever published and runs the known quantum attacks: elliptic curves, pairings and RSA fall. Hashes, symmetric ciphers and post-quantum schemes stand until an attack on them is known. Examples: An intelligence agency archiving chain data today, then anyone once a break is public. Nothing encrypted is written onchain and commitments are Poseidon hashes, so whoever breaks elliptic-curve cryptography recovers nothing from the chain. Accounts created from a wallet signature reduce to that wallet's key. **Advice:** Create the user's account from a recovery phrase, not from a wallet signature. **Sources** - [Commitment circuit (Poseidon)](https://github.com/0xbow-io/privacy-pools-core/blob/a80836a47451e662f127af17e11430ffa976c234/packages/circuits/circuits/commitment.circom) - [Wallet-signature seed derivation](https://github.com/0xbow-io/privacy-pools-website/blob/7df411128f7a18a61a77f7a0371bf0b857969e2a/src/utils/walletSeed.ts#L40-L73) - [Random recovery phrase option](https://github.com/0xbow-io/privacy-pools-website/blob/7df411128f7a18a61a77f7a0371bf0b857969e2a/src/utils/seedPhrase.ts#L3-L7) - [Trusted setup](https://l2beat.com/privacy/projects/privacy-pools#trusted-setups) ## Value Locked The interactive value chart is shown on [the HTML page](https://l2beat.com/privacy/projects/privacy-pools#privacy-tvl). ## Anonymity sets ### 30 day historic anonymity set How many unique depositors you could have blended in with if you withdrew on a particular day after depositing during the previous 30 days. This metric is a proxy for the historic anonymity set and shows how it developed over time. The metric looks backwards: it counts deposits that already happened, including from addresses that have since withdrawn. Your real anonymity also depends on deposits made after yours, which cannot be known in advance. ### Estimated anonymity set by holding duration An estimate of how many unique depositors you blend in with, depending on how long you leave your deposit in the pool. It is based on historic data of past deposits: each point counts depositors from the preceding period, so holding for up to 30 days effectively means blending in with everyone who deposited during the last 30 days. The interactive charts are shown on [the HTML page](https://l2beat.com/privacy/projects/privacy-pools#privacy-anonymity-set). ## Flows The interactive flows chart is shown on [the HTML page](https://l2beat.com/privacy/projects/privacy-pools#privacy-flows). ## Assets Breakdown | Asset | Deposits 7D | Deposits 30D | Deposits Total | Value Locked | | --- | --- | --- | --- | --- | | USDT | 12 ($145.40 K) | 88 ($600.10 K) | 519 ($10.45 M) | $6.83 M | | ETH | 166 ($90.63 K) | 425 ($873.04 K) | 6.26 K ($12.12 M) | $1.91 M | | USDC | 11 ($26.49 K) | 41 ($187.30 K) | 893 ($4.94 M) | $409.42 K | | wstETH | 5 ($93.41 K) | 6 ($94.97 K) | 45 ($408.20 K) | $144.49 K | | BOLD | 0 ($0.00) | 0 ($0.00) | 20 ($50.42 K) | $49.59 K | | frxUSD | 0 ($0.00) | 0 ($0.00) | 9 ($11.73 K) | $10.14 K | | wOETH | 0 ($0.00) | 0 ($0.00) | 4 ($12.88 K) | $5.86 K | | DAI | 2 ($10.26 K) | 2 ($10.26 K) | 8 ($21.76 K) | $4.78 K | | WBTC | 0 ($0.00) | 0 ($0.00) | 6 ($17.01 K) | $4.50 K | | USDS | 0 ($0.00) | 0 ($0.00) | 18 ($13.51 K) | $2.48 K | | sUSDS | 0 ($0.00) | 0 ($0.00) | 11 ($4.83 K) | $1.38 K | | USD1 | 0 ($0.00) | 0 ($0.00) | 4 ($2.33 K) | $1.34 K | | fxUSD | 0 ($0.00) | 0 ($0.00) | 76 ($1.75 M) | $711.39 | | USDe | 0 ($0.00) | 0 ($0.00) | 1 ($995.39) | — | | Total | 196 ($366.20 K) | 562 ($1.76 M) | 7.88 K ($29.82 M) | $9.38 M | ## Milestones & Incidents - 2026-03-11 (incident): [ASP revokes every fxUSD approval](https://etherscan.io/tx/0xd67628764f6ba49ef61e8e16b9aa3b3e4143b5daea4e37e914594c152f6120cb). Approved fxUSD deposits leave the list for 13 days, with public ragequit as the only exit. - 2026-03-11 (incident): [ASP halts all private withdrawals](https://etherscan.io/tx/0x4fbb5ecd0d2436b89756ddb584d31de6b71eaf743f71d09605bba3dff36adac0). The ASP posts a root no deposit belongs to, blocking every private withdrawal for two hours. ## Risk summary ### Funds can be stolen if 1. the zk proof system is broken, allowing invalid withdrawals. 2. the [trusted setup](https://l2beat.com/privacy/projects/privacy-pools#trusted-setups) is compromised or all ceremony participants collude, allowing invalid withdrawals. 3. the Entrypoint owner deploys a malicious [upgrade](https://l2beat.com/privacy/projects/privacy-pools#upgrades-and-governance) that steals new deposits or withdrawals relayed after it. ### Funds can be lost if 1. a user loses the recovery phrase that their notes derive from. ### Privacy can be lost if 1. the ASP leaves deposits out of its latest list, which blocks their private exit, up to halting all private withdrawals (see privileged insider). 2. the ASP keeps only a few deposits in its latest list, so withdrawals proven against it point to one of them (see privileged insider). 3. both relayers on the website refuse a withdrawal, so the user must self-relay or find a relayer elsewhere (see chain analyst). 4. a user withdraws signed in with a wallet on the default RPC, so Alchemy ties the wallet to the withdrawal by timing (see network observer). ## Upgrades & Governance The 2/4 Privacy Pools Multisig holds the Entrypoint's owner role. It can upgrade the Entrypoint, register, configure and wind down pools, set fees and withdraw the vetting fees, all without delay. It also appoints the ASP postmen, who post the approved roots. The pools and verifiers are immutable. Relayed withdrawals and new deposits pass through the Entrypoint, so a malicious upgrade can steal them. Ragequit works without the Entrypoint, so funds already in the pools can always leave to their depositing addresses. ## Trusted setup Risk levels follow the [Trusted Setups Risk Framework](https://forum.l2beat.com/t/the-trusted-setups-framework-for-zk-catalog/381). Yellow (medium risk): all contributions are published and the final output can be verified, the ceremony client is open source, there were at least 30 contributions, participation was open to the public and announced, and participants are publicly identified. Green (lowest risk): everything required for yellow, with at least 150 contributions. Red (highest risk): at least one requirement for yellow is not met. N/A: the proof system needs no trusted setup. ### Privacy Pools - Risk: yellow (medium risk) - Proof systems: Snarkjs (Groth16) Trusted setup for two Groth16 Privacy Pools circuits: the Ragequit circuit and the private Withdrawal circuit. This trusted setup ceremony builds on top of the 80th contribution to the [Perpetual Powers of Tau ceremony](https://github.com/privacy-ethereum/perpetualpowersoftau) as phase 1. Phase 2 of the ceremony was publicly announced, open to anonymous and identified participants, and concluded in March 2025. It contains 514 contributions to the Withdraw circuit and 513 participants to the Ragequit circuit. The finalized zKeys were published for independent verification, and the ceremony code and UI were open-sourced. - Phase 1 ceremony: . - Ceremony completion announcement: [https://0xbow.io/blog/celebrating-the-conclusion-of-the-trusted-setup-ceremony](https://0xbow.io/blog/celebrating-the-conclusion-of-the-trusted-setup-ceremony) - Ceremony page with finalized zKeys: [https://ceremony.pse.dev/projects/Privacy%20Pools%20Ceremony](https://ceremony.pse.dev/projects/Privacy%20Pools%20Ceremony) - Initial ceremony announcement: [https://0xbow.io/blog/privacy-pools-trusted-setup-ceremony-join-us-in-strengthening-privacy](https://0xbow.io/blog/privacy-pools-trusted-setup-ceremony-join-us-in-strengthening-privacy) - Privacy Pools repository: [https://github.com/0xbow-io/privacy-pools-core](https://github.com/0xbow-io/privacy-pools-core) ## Verifier IDs ### Privacy Pools verifiers v1.2.1 - Verifier ID: `Privacy Pools Withdrawal and Ragequit verifiers 03.07.2026` - Source: https://github.com/0xbow-io/privacy-pools-core/tree/v1.2.1/packages/circuits - Verification: successful (verified by [L2BEAT](https://l2beat.com)) - Used in: [Privacy Pools](https://l2beat.com/privacy/projects/privacy-pools) **Known deployments** - [0xa45ACa8604a73D80C551fAad6355A5c3A5565eC6](https://etherscan.io/address/0xa45ACa8604a73D80C551fAad6355A5c3A5565eC6#code) on Ethereum, used in: [Privacy Pools](https://l2beat.com/privacy/projects/privacy-pools) - [0x022891F938Ae7fDC8Ab9Ead0FBf50aBA8C897D6d](https://etherscan.io/address/0x022891F938Ae7fDC8Ab9Ead0FBf50aBA8C897D6d#code) on Ethereum, used in: [Privacy Pools](https://l2beat.com/privacy/projects/privacy-pools) #### Verification steps Privacy Pools uses two Groth16 circuits — `commitment` (named `ragequit` in the trusted-setup ceremony) and `withdraw` — whose verification keys are hard-coded in the deployed `CommitmentVerifier.sol` and `WithdrawalVerifier.sol` smart contracts. This regeneration attests that these onchain verification keys correspond to the circuits published in the Privacy Pools repo. Generally, to regenerate the two Privacy Pools verification keys, the following has to be done: 1. Checkout the `v1.2.1` tag of the [Privacy Pools core repo](https://github.com/0xbow-io/privacy-pools-core/tree/v1.2.1) (commit hash `a80836a47451e662f127af17e11430ffa976c234`). 2. Install the repo-pinned toolchain and compile the `.circom` circuit sources into `.r1cs` binaries. 3. Download the phase 1 trusted setup file `ppot_0080_16.ptau` (Perpetual Powers of Tau contribution #80), which underlies the ceremony final keys. 4. Verify the checked-in final prover keys (`.zkey`) against the compiled circuits and the phase 1 file. This step also implicitly checks the integrity of the phase 2 trusted setup. 5. Export verification keys from the final prover keys and make sure they are identical to the checked-in `.vkey` files, whose values are hard-coded in the onchain verifier smart contracts. Helper scripts that implement the flow above and more detailed explanations could be found in this [script .zip archive](https://trusted-setup-hosting.l2beat.com/privacy/privacy-pools/verification_privacy_pools.zip). This .zip must be extracted in the `privacy-pools-core` dir checked out on tag `v1.2.1` (commit hash `a80836a47451e662f127af17e11430ffa976c234`) before the execution. ## Ossification & Updates Each date links the update on the HTML page, which also shows its contract diffs. ### [2026-05-28 10:27 UTC](https://l2beat.com/privacy/projects/privacy-pools?update=f8fe6dc0) (2 changes) two signers change. ### [2026-04-30 16:40 UTC](https://l2beat.com/privacy/projects/privacy-pools?update=e4ec6d81) (19 changes) Discovery rerun on the same block number with only config-related changes. ## Permissions Explore these contracts and permissions in Disco, L2BEAT's contract explorer: https://disco.l2beat.com/ui/p/privacy-pools ### Ethereum #### Actors ##### Privacy Pools Multisig Addresses: [0xAd7f9A19E2598b6eFE0A25C84FB1c87F81eB7159](https://etherscan.io/address/0xAd7f9A19E2598b6eFE0A25C84FB1c87F81eB7159) A Multisig with 2/4 threshold. - Can interact with PrivacyPoolsEntrypoint - authorize UUPS upgrades to the Entrypoint implementation - grant and revoke OWNER_ROLE and ASP_POSTMAN - publish a new association-set root and its IPFS list at any time. Private withdrawals must prove against the latest root, so a new root can exclude any deposit or narrow the set to a few - register and remove pools, update per-asset minimum deposits and fee caps, and wind down pools - withdraw fees held in the Entrypoint Participants (4): [0xd76eEb2A6fcf55dc80D046FFbc96D1A2B45AB52E](https://etherscan.io/address/0xd76eEb2A6fcf55dc80D046FFbc96D1A2B45AB52E), [0xb1A1D5b0f3d4E8e89E55daBFEb0B96118cbc16fc](https://etherscan.io/address/0xb1A1D5b0f3d4E8e89E55daBFEb0B96118cbc16fc), [0x652E36f8EA937c19417380dCDb48D6e4375d13dA](https://etherscan.io/address/0x652E36f8EA937c19417380dCDb48D6e4375d13dA), [0xE8A2cC5c2349615D947b9d9fE5D7F144730cAf77](https://etherscan.io/address/0xE8A2cC5c2349615D947b9d9fE5D7F144730cAf77) ##### EOA 1 Addresses: [0x1f4Fe25Cf802a0605229e0Dc497aAf653E86E187](https://etherscan.io/address/0x1f4Fe25Cf802a0605229e0Dc497aAf653E86E187) - Can interact with PrivacyPoolsEntrypoint - publish a new association-set root and its IPFS list at any time. Private withdrawals must prove against the latest root, so a new root can exclude any deposit or narrow the set to a few ## Smart contracts ![A diagram of the smart contract architecture](https://l2beat.com/static/images/architecture/privacy-pools.b7cdcd4e.png) Explore these contracts and permissions in Disco, L2BEAT's contract explorer: https://disco.l2beat.com/ui/p/privacy-pools ### Ethereum #### PrivacyPoolUSDS Addresses: [0x05e4DBD71B56861eeD2Aaa12d00A797F04B5D3c0](https://etherscan.io/address/0x05e4DBD71B56861eeD2Aaa12d00A797F04B5D3c0#code) ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint. #### PrivacyPoolWstETH Addresses: [0x1A604E9DFa0EFDC7FFda378AF16Cb81243b61633](https://etherscan.io/address/0x1A604E9DFa0EFDC7FFda378AF16Cb81243b61633#code) ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint. #### PrivacyPoolDAI Addresses: [0x1c31C03B8CB2EE674D0F11De77135536db828257](https://etherscan.io/address/0x1c31C03B8CB2EE674D0F11De77135536db828257#code) ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint. #### PrivacyPoolsEntrypoint Addresses: [0x6818809EefCe719E480a7526D76bD3e561526b46](https://etherscan.io/address/0x6818809EefCe719E480a7526D76bD3e561526b46#code), [0x15e355024de1CDc74ADdea7EBDf98418Ba5B1a2c](https://etherscan.io/address/0x15e355024de1CDc74ADdea7EBDf98418Ba5B1a2c#code) (Implementation (Upgradable)), [0x0000000000000000000000000000000000000000](https://etherscan.io/address/0x0000000000000000000000000000000000000000#code) (Admin) **Past upgrades** (Count of upgrades: 1, Last upgrade: 1y 4mo ago, Avg upgrade interval: 9mo 13d) - 2025-05-22 20:30 UTC, upgrade of [PrivacyPoolsEntrypoint](https://etherscan.io/address/0x6818809EefCe719E480a7526D76bD3e561526b46#code): transaction [0xde1c41f546e3b6064433e0db1309d8ca5a3ac78a8fc626f934b13d05ee67578f](https://etherscan.io/tx/0xde1c41f546e3b6064433e0db1309d8ca5a3ac78a8fc626f934b13d05ee67578f), implementations: [0x15e355024de1CDc74ADdea7EBDf98418Ba5B1a2c](https://etherscan.io/address/0x15e355024de1CDc74ADdea7EBDf98418Ba5B1a2c#code) ([diff](https://disco.l2beat.com/diff/eth:0xdD8aA0560a08E39C0b3A84BBa356Bc025AfbD4C1/eth:0x15e355024de1CDc74ADdea7EBDf98418Ba5B1a2c)) - 2025-03-29 16:20 UTC, deployment of [PrivacyPoolsEntrypoint](https://etherscan.io/address/0x6818809EefCe719E480a7526D76bD3e561526b46#code): transaction [0x4987385c58c49c9e3117244180094c5b7c5a0566c8547d13880df5e19076776c](https://etherscan.io/tx/0x4987385c58c49c9e3117244180094c5b7c5a0566c8547d13880df5e19076776c), implementations: [0xdD8aA0560a08E39C0b3A84BBa356Bc025AfbD4C1](https://etherscan.io/address/0xdD8aA0560a08E39C0b3A84BBa356Bc025AfbD4C1#code) Main hub for Privacy Pools. Entrypoint for deposits, relayed withdrawals, pool registry/configuration, ASP root updates, fee withdrawal, and wind-down management. - Roles: - **aspPostmen**: EOA 1, Privacy Pools Multisig - **ownerRoleMembers**: Privacy Pools Multisig #### PrivacyPoolWOETH Addresses: [0x7d2959bCFb936a84531518e8391DdBa844e03ebE](https://etherscan.io/address/0x7d2959bCFb936a84531518e8391DdBa844e03ebE#code) ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint. #### PrivacyPoolUSDC Addresses: [0xb419c2867aB3CBc78921660cB95150d95A94ce86](https://etherscan.io/address/0xb419c2867aB3CBc78921660cB95150d95A94ce86#code) ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint. #### PrivacyPoolBOLD Addresses: [0xb4b5Fd38Fd4788071d7287e3cB52948e0d10b23E](https://etherscan.io/address/0xb4b5Fd38Fd4788071d7287e3cB52948e0d10b23E#code) ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint. #### PrivacyPoolSUSDS Addresses: [0xBBdA2173CDFEA1c3bD7F2908798F1265301d750c](https://etherscan.io/address/0xBBdA2173CDFEA1c3bD7F2908798F1265301d750c#code) ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint. #### PrivacyPoolUSD1 Addresses: [0xc0A8Bc0F4F982b4d4f1fFae8F4FCCb58c9B29c98](https://etherscan.io/address/0xc0A8Bc0F4F982b4d4f1fFae8F4FCCb58c9B29c98#code) ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint. #### PrivacyPoolFrxUSD Addresses: [0xC6C769fac7AABEadd31a03fAe5Ca0Ec5B4C50f84](https://etherscan.io/address/0xC6C769fac7AABEadd31a03fAe5Ca0Ec5B4C50f84#code) ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint. #### PrivacyPoolFxUSD Addresses: [0xD14F4B36E1D1D98c218db782c49149876042BC56](https://etherscan.io/address/0xD14F4B36E1D1D98c218db782c49149876042BC56#code) ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint. #### PrivacyPoolUSDe Addresses: [0xe6D36B33b00A7C0cB0C2a8d39D07e7dB0c526Abc](https://etherscan.io/address/0xe6D36B33b00A7C0cB0C2a8d39D07e7dB0c526Abc#code) ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint. #### PrivacyPoolUSDT Addresses: [0xe859C0bD25f260BaEE534Fb52e307D3b64D24572](https://etherscan.io/address/0xe859C0bD25f260BaEE534Fb52e307D3b64D24572#code) ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint. #### PrivacyPoolETH Addresses: [0xF241d57C6DebAe225c0F2e6eA1529373C9A9C9fB](https://etherscan.io/address/0xF241d57C6DebAe225c0F2e6eA1529373C9A9C9fB#code) Native-asset Privacy Pool that escrows ETH commitments for one scope. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint. #### PrivacyPoolWBTC Addresses: [0xF973f4B180A568157Cd7A0E6006449139E6Bfc32](https://etherscan.io/address/0xF973f4B180A568157Cd7A0E6006449139E6Bfc32#code) ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint. #### WithdrawalVerifier Addresses: [0x022891F938Ae7fDC8Ab9Ead0FBf50aBA8C897D6d](https://etherscan.io/address/0x022891F938Ae7fDC8Ab9Ead0FBf50aBA8C897D6d#code) Stateless Groth16 verifier used by Privacy Pool contracts to verify withdrawal proofs. #### RagequitVerifier Addresses: [0xa45ACa8604a73D80C551fAad6355A5c3A5565eC6](https://etherscan.io/address/0xa45ACa8604a73D80C551fAad6355A5c3A5565eC6#code) Stateless Groth16 verifier used by Privacy Pool contracts to verify ragequit proofs.