Search

Search for projects by name or address

Privacy

Privacy Pools logo
Privacy Pools

About

A privacy pool system for any amount, where only centrally approved deposits can be withdrawn privately.


  • Total Value Locked
    $9.38 M1.69%
    across 14 assets and 14 buckets
  • TVL
    $9.38 M1.69%
  • Assets tracked
    14
  • Buckets tracked
    14
  • Deposits 7D
    18992.8%
  • Deposits 30D
    540
  • Deposits Total
    7.83 K
  • Active Relayers 30D
    5

  • Privacy
    Link privacy
  • Trusted setup
  • Exit window
  • Reproducibility

  • Tracked on
    Ethereum logo
  • Attributes
    ZKAny amount
  • Public observerChain analystNetwork observerPrivileged insiderFuture adversary

    About

    A privacy pool system for any amount, where only centrally approved deposits can be withdrawn privately.

    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)An Association Set Provider (ASP) is the compliance layer used in Privacy Pools. It maintains the set of approved deposits and updates the corresponding roots used by withdrawal proofs, allowing users to prove in zero knowledge that their withdrawal belongs to an approved set without revealing which deposit they are spending. 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 permissionlessAnyone willing should be able to join and leave the network at any time, without causing significant disturbance to the network or being detrimental to the party in question. No single entity should have the power to allowlist or blocklist participants.: 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 gasA virtual fuel used to execute smart contracts on a rollup. The EVM (or other VM within the rollup) uses an accounting mechanism to correspond the consumption of gas to the consumption of computing resources, and to limit the consumption of computing resources. 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, built from public source 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 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 setIn privacy protocols, anonymity set denotes all users, to which a particular withdrawal could be plausibly attributed. Anonymity set depends on a particular withdrawal, the size of the anonymity set is a metric for level of user's privacy.

    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.

    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 observerChain analystNetwork observerPrivileged insiderFuture adversary
    Public observer
    Private

    A zero-knowledgeA cryptographic technology and sub-discipline of cryptography that allows an individual to prove that a statement or computation is true without revealing any additional information. 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.

    Chain analyst
    Private

    A relayed withdrawal of a common amount hides among all approved deposits of its pool. The approved list at any blockAn ordered list of transactions and chain-related metadata that gets bundled together and published to the L1/DA layer. Nodes execute the transactions contained within blocks to change the rollup chain’s state. Protocol rules dictate what constitutes a valid block, and invalid blocks are skipped over. is public. Any amount is allowed, so an unusual one pairs a deposit with its withdrawal. Paying gasA virtual fuel used to execute smart contracts on a rollup. The EVM (or other VM within the rollup) uses an accounting mechanism to correspond the consumption of gas to the consumption of computing resources, and to limit the consumption of computing resources. 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.

    Network observer
    Private

    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.

    Privileged insider
    At risk

    The ASPAn Association Set Provider (ASP) is the compliance layer used in Privacy Pools. It maintains the set of approved deposits and updates the corresponding roots used by withdrawal proofs, allowing users to prove in zero knowledge that their withdrawal belongs to an approved set without revealing which deposit they are spending. 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 setIn privacy protocols, anonymity set denotes all users, to which a particular withdrawal could be plausibly attributed. Anonymity set depends on a particular withdrawal, the size of the anonymity set is a metric for level of user's privacy. 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.

    Future adversary
    Private

    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.

    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.

    Asset
    Deposits 7D
    Deposits 30D
    Deposits Total
    Value Locked
    USDTUSDT
    13
    $145.47 K
    89
    $612.73 K
    516
    $10.45 M
    $6.84 M
    ETHETH
    156
    $119.27 K
    400
    $852.59 K
    6.22 K
    $12.08 M
    $1.89 M
    USDCUSDC
    12
    $27.39 K
    43
    $200.19 K
    893
    $4.94 M
    $416.21 K
    wstETHwstETH
    6
    $94.97 K
    6
    $94.97 K
    45
    $408.20 K
    $153.93 K
    BOLDBOLD
    0
    $0.00
    0
    $0.00
    20
    $50.42 K
    $49.58 K
    frxUSDfrxUSD
    0
    $0.00
    0
    $0.00
    9
    $11.73 K
    $10.14 K
    wOETHwOETH
    0
    $0.00
    0
    $0.00
    4
    $12.88 K
    $5.87 K
    DAIDAI
    2
    $10.26 K
    2
    $10.26 K
    8
    $21.76 K
    $4.78 K
    WBTCWBTC
    0
    $0.00
    0
    $0.00
    6
    $17.01 K
    $4.53 K
    USDSUSDS
    0
    $0.00
    0
    $0.00
    18
    $13.51 K
    $2.48 K
    sUSDSsUSDS
    0
    $0.00
    0
    $0.00
    11
    $4.83 K
    $1.38 K
    USD1USD1
    0
    $0.00
    0
    $0.00
    4
    $2.33 K
    $1.34 K
    fxUSDfxUSD
    0
    $0.00
    0
    $0.00
    76
    $1.75 M
    $710.67
    USDeUSDe
    0
    $0.00
    0
    $0.00
    1
    $995.39
    —
    Total
    189
    $397.37 K
    540
    $1.77 M
    7.83 K
    $29.78 M
    $9.38 M

    ASP revokes every fxUSD approval

    2026 Mar 11th

    Approved fxUSD deposits leave the list for 13 days, with public ragequit as the only exit.

    Learn more

    ASP halts all private withdrawals

    2026 Mar 11th

    The ASPAn Association Set Provider (ASP) is the compliance layer used in Privacy Pools. It maintains the set of approved deposits and updates the corresponding roots used by withdrawal proofs, allowing users to prove in zero knowledge that their withdrawal belongs to an approved set without revealing which deposit they are spending. posts a root no deposit belongs to, blocking every private withdrawal for two hours.

    Learn more

    Funds can be stolen if

    1. the zk proof systemThe infrastructure that allows projects to verify their state transitions. It is composed by onchain verifiers and offchain provers. The main two flavors are optimistic and ZK proof systems, but they can be combined in a hybrid model. In general though, if a system is able to accept state roots optimistically, even if it has a ZK component, it is considered an optimistic proof system. is broken, allowing invalid withdrawals.
    2. the trusted setup is compromised or all ceremony participants collude, allowing invalid withdrawals.
    3. the Entrypoint owner deploys a malicious upgrade 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 ASPAn Association Set Provider (ASP) is the compliance layer used in Privacy Pools. It maintains the set of approved deposits and updates the corresponding roots used by withdrawal proofs, allowing users to prove in zero knowledge that their withdrawal belongs to an approved set without revealing which deposit they are spending. leaves deposits out of its latest list, which blocksAn ordered list of transactions and chain-related metadata that gets bundled together and published to the L1/DA layer. Nodes execute the transactions contained within blocks to change the rollup chain’s state. Protocol rules dictate what constitutes a valid block, and invalid blocks are skipped over. 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 networkA constellation of nodes (peers) that communicate via a peer-to-peer protocol, for example, in propagating transactions and blocks to other nodes. observer).

    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 ASPAn Association Set Provider (ASP) is the compliance layer used in Privacy Pools. It maintains the set of approved deposits and updates the corresponding roots used by withdrawal proofs, allowing users to prove in zero knowledge that their withdrawal belongs to an approved set without revealing which deposit they are spending. 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.

    Privacy Pools

    Snarkjs

    Detailed description

    Trusted setupGeneration of a piece of data that must then be used for some cryptographic protocol to run. Generating this data requires some secret information. The "trust" comes from the fact the secret must be destroyed after the ceremony, otherwise cryptographic properties of the protocol could be broken. Once the data is generated, and the secrets are forgotten, no further participation from the creators of the ceremony is required. There are two types of trusted setups for SNARKs: (i) trusted setup per circuit where it is generated from scratch for each circuit, (ii) trusted universal setup per proving system where it can be used for several circuits. for two Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. Privacy Pools circuits: the Ragequit circuitA program written for the purpose of being proven within a proving system. A circuit is a mathematical representation of the computation to be executed, arithmetic circuits and zkVM execution trace are examples of circuits. Circuits can be written in different languages, ranging from low-level to high-level. and the private Withdrawal circuit.

    This trusted setup ceremony builds on top of the 80th contribution to the Perpetual Powers of Tau ceremony as phase 1For Groth16 trusted setup, phase 1 represents circuit-independent part of the trusted setup (e.g. Perpetual Powers of Tau), which could be reused across different circuits. It generates a part of the secret cryptographic data required for Groth16 ZK protocol to work. If the outcome of phase 1 trusted setup ceremony is known, arbitrary proofs could be forged..

    Phase 2For Groth16 trusted setup, phase 2 represents circuit-dependent part of the trusted setup. It generates a part of the secret cryptographic data required for Groth16 ZK protocol to work. If the outcome of phase 2 trusted setup ceremony is known, arbitrary proofs could be forged. 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.

    Verifier
    Verification
    Used in
    Known deployments
    Privacy Pools verifiers v1.2.1
    by
    Privacy Pools logo

    Verifier ID:Privacy Pools Withdrawal and Ragequit verifiers 03.07.2026

    Known deployments

    Deployment #1

    Used in:
    Privacy Pools logo

    Deployment #2

    Used in:
    Privacy Pools logo

    Verification steps

    Privacy Pools uses two Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. 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 (commit hashA fixed-length fingerprint of variable-size input, produced by a hash function. a80836a47451e662f127af17e11430ffa976c234).
    2. Install the repo-pinned toolchain and compile the .circom circuitA program written for the purpose of being proven within a proving system. A circuit is a mathematical representation of the computation to be executed, arithmetic circuits and zkVM execution trace are examples of circuits. Circuits can be written in different languages, ranging from low-level to high-level. sources into .r1cs binaries.
    3. Download the phase 1For Groth16 trusted setup, phase 1 represents circuit-independent part of the trusted setup (e.g. Perpetual Powers of Tau), which could be reused across different circuits. It generates a part of the secret cryptographic data required for Groth16 ZK protocol to work. If the outcome of phase 1 trusted setup ceremony is known, arbitrary proofs could be forged. trusted setupGeneration of a piece of data that must then be used for some cryptographic protocol to run. Generating this data requires some secret information. The "trust" comes from the fact the secret must be destroyed after the ceremony, otherwise cryptographic properties of the protocol could be broken. Once the data is generated, and the secrets are forgotten, no further participation from the creators of the ceremony is required. There are two types of trusted setups for SNARKs: (i) trusted setup per circuit where it is generated from scratch for each circuit, (ii) trusted universal setup per proving system where it can be used for several circuits. file ppot_0080_16.ptau (Perpetual Powers of Tau contribution #80), which underlies the ceremony final keys.
    4. Verify the checked-in final proverAn entity that generates the cryptographic proof to convince the verifier that the statement is true. In a ZK-Rollup, the prover generates the ZK (validity) proof to submit to the verifier contract. keys (.zkey) against the compiled circuits and the phase 1 file. This step also implicitly checks the integrity of the phase 2For Groth16 trusted setup, phase 2 represents circuit-dependent part of the trusted setup. It generates a part of the secret cryptographic data required for Groth16 ZK protocol to work. If the outcome of phase 2 trusted setup ceremony is known, arbitrary proofs could be forged. 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 verifierAn entity in a ZK-Rollup, often a smart contract, that verifies zero-knowledge proofs submitted by a prover. smart contracts.

    Helper scripts that implement the flow above and more detailed explanations could be found in this script .zip archive. 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

    Contracts our research team classifies as critical form the project's critical perimeter. Its clock starts at the ossification genesis, and every critical change resets it (changes within 24 hours count as one). The ossification score is the share of recorded code-bug exploits whose exploited code was younger than this perimeter is today. Battle-tested exposure is the value secured, summed over that unchanged period.

    Ossification %
    83since 2025 May 22
    TVS & changes (1Y)
    Battle-tested exposure
    $5.87 M·years
    Critical changes / year
    1.3across 17 contracts
    Exit window

    Discovery updates

    2026 May 28, 10:27 UTC
    2changes

    two signers change.

    contract Privacy Pools Multisig (eth:0xAd7f9A19E2598b6eFE0A25C84FB1c87F81eB7159) [GnosisSafe] {
    +++ description: None
    values.$members.2:
    - "eth:0x554c5aF96E9e3c05AEC01ce18221d0DD25975aB4"
    + "eth:0x652E36f8EA937c19417380dCDb48D6e4375d13dA"
    values.$members.3:
    - "eth:0x42FEdcd80C8C9694DBc3b2ff0fD48BB8651dfC62"
    + "eth:0xE8A2cC5c2349615D947b9d9fE5D7F144730cAf77"
    }
    2026 April 30, 16:40 UTC
    19changes

    Discovery rerun on the same block number with only config-related changes.

    Initial discovery

    + Status: CREATED
    contract WithdrawalVerifier (eth:0x022891F938Ae7fDC8Ab9Ead0FBf50aBA8C897D6d)
    +++ description: Stateless Groth16 verifier used by Privacy Pool contracts to verify withdrawal proofs. The verification key is hardcoded in the contract and there are no privileged roles or mutable configuration.
    + Status: CREATED
    contract PrivacyPoolUSDS (eth:0x05e4DBD71B56861eeD2Aaa12d00A797F04B5D3c0)
    +++ description: ERC20 Privacy Pool that escrows one asset for one scope. Only the Entrypoint can create deposits or wind the pool down. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint.
    + Status: CREATED
    contract PrivacyPoolWstETH (eth:0x1A604E9DFa0EFDC7FFda378AF16Cb81243b61633)
    +++ description: ERC20 Privacy Pool that escrows one asset for one scope. Only the Entrypoint can create deposits or wind the pool down. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint.
    + Status: CREATED
    contract PrivacyPoolDAI (eth:0x1c31C03B8CB2EE674D0F11De77135536db828257)
    +++ description: ERC20 Privacy Pool that escrows one asset for one scope. Only the Entrypoint can create deposits or wind the pool down. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint.
    + Status: CREATED
    contract PrivacyPoolsEntrypoint (eth:0x6818809EefCe719E480a7526D76bD3e561526b46)
    +++ description: UUPS-upgradeable hub for Privacy Pools. It accepts deposits, relays withdrawals, tracks association-set roots published by the ASP, and maps each supported asset and scope to a pool. Trusting this contract means trusting OWNER_ROLE holders to upgrade it, manage pools and fees, and withdraw fees, and trusting ASP_POSTMAN holders to publish the latest association-set root used by withdrawals.
    + Status: CREATED
    contract PrivacyPoolWOETH (eth:0x7d2959bCFb936a84531518e8391DdBa844e03ebE)
    +++ description: ERC20 Privacy Pool that escrows one asset for one scope. Only the Entrypoint can create deposits or wind the pool down. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint.
    + Status: CREATED
    contract RagequitVerifier (eth:0xa45ACa8604a73D80C551fAad6355A5c3A5565eC6)
    +++ description: Stateless Groth16 verifier used by Privacy Pool contracts to verify ragequit proofs. The verification key is hardcoded in the contract and there are no privileged roles or mutable configuration.
    + Status: CREATED
    contract PrivacyPoolsAdminSafe (eth:0xAd7f9A19E2598b6eFE0A25C84FB1c87F81eB7159)
    +++ description: None
    + Status: CREATED
    contract PrivacyPoolUSDC (eth:0xb419c2867aB3CBc78921660cB95150d95A94ce86)
    +++ description: ERC20 Privacy Pool that escrows one asset for one scope. Only the Entrypoint can create deposits or wind the pool down. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint.
    + Status: CREATED
    contract PrivacyPoolBOLD (eth:0xb4b5Fd38Fd4788071d7287e3cB52948e0d10b23E)
    +++ description: ERC20 Privacy Pool that escrows one asset for one scope. Only the Entrypoint can create deposits or wind the pool down. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint.
    + Status: CREATED
    contract PrivacyPoolSUSDS (eth:0xBBdA2173CDFEA1c3bD7F2908798F1265301d750c)
    +++ description: ERC20 Privacy Pool that escrows one asset for one scope. Only the Entrypoint can create deposits or wind the pool down. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint.
    + Status: CREATED
    contract PrivacyPoolUSD1 (eth:0xc0A8Bc0F4F982b4d4f1fFae8F4FCCb58c9B29c98)
    +++ description: ERC20 Privacy Pool that escrows one asset for one scope. Only the Entrypoint can create deposits or wind the pool down. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint.
    + Status: CREATED
    contract PrivacyPoolFrxUSD (eth:0xC6C769fac7AABEadd31a03fAe5Ca0Ec5B4C50f84)
    +++ description: ERC20 Privacy Pool that escrows one asset for one scope. Only the Entrypoint can create deposits or wind the pool down. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint.
    + Status: CREATED
    contract PrivacyPoolFxUSD (eth:0xD14F4B36E1D1D98c218db782c49149876042BC56)
    +++ description: ERC20 Privacy Pool that escrows one asset for one scope. Only the Entrypoint can create deposits or wind the pool down. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint.
    + Status: CREATED
    EOA (eth:0xd76eEb2A6fcf55dc80D046FFbc96D1A2B45AB52E)
    +++ description: None
    + Status: CREATED
    contract PrivacyPoolUSDe (eth:0xe6D36B33b00A7C0cB0C2a8d39D07e7dB0c526Abc)
    +++ description: ERC20 Privacy Pool that escrows one asset for one scope. Only the Entrypoint can create deposits or wind the pool down. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint.
    + Status: CREATED
    contract PrivacyPoolUSDT (eth:0xe859C0bD25f260BaEE534Fb52e307D3b64D24572)
    +++ description: ERC20 Privacy Pool that escrows one asset for one scope. Only the Entrypoint can create deposits or wind the pool down. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint.
    + Status: CREATED
    contract PrivacyPoolETH (eth:0xF241d57C6DebAe225c0F2e6eA1529373C9A9C9fB)
    +++ description: Native-asset Privacy Pool that escrows ETH commitments for one scope. Only the Entrypoint can create deposits or wind the pool down. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint.
    + Status: CREATED
    contract PrivacyPoolWBTC (eth:0xF973f4B180A568157Cd7A0E6006449139E6Bfc32)
    +++ description: ERC20 Privacy Pool that escrows one asset for one scope. Only the Entrypoint can create deposits or wind the pool down. Withdrawals and ragequits depend on the linked Groth16 verifiers and on the latest association-set root in the Entrypoint.
    A dashboard to explore contracts and permissions
    Go to Disco
    Disco UI Banner

    Ethereum

    Actors:

    Privacy Pools Multisig0xAd7f…7159

    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
    • 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
    A dashboard to explore contracts and permissions
    Go to Disco
    Disco UI Banner
    A diagram of the smart contract architecture
    A diagram of the smart contract architecture

    Ethereum

    PrivacyPoolUSDS0x05e4…D3c0

    ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifiers and on the latest association-set root in the Entrypoint.

    PrivacyPoolWstETH0x1A60…1633

    ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifiers and on the latest association-set root in the Entrypoint.

    PrivacyPoolDAI0x1c31…8257

    ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifiers and on the latest association-set root in the Entrypoint.

    Main hub for Privacy Pools. Entrypoint for deposits, relayed withdrawals, pool registry/configuration, ASPAn Association Set Provider (ASP) is the compliance layer used in Privacy Pools. It maintains the set of approved deposits and updates the corresponding roots used by withdrawal proofs, allowing users to prove in zero knowledge that their withdrawal belongs to an approved set without revealing which deposit they are spending. root updates, fee withdrawal, and wind-down management.

    • Roles:
      • aspPostmen: EOA 1, Privacy Pools Multisig
      • ownerRoleMembers: Privacy Pools Multisig
    PrivacyPoolWOETH0x7d29…3ebE

    ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifiers and on the latest association-set root in the Entrypoint.

    PrivacyPoolUSDC0xb419…ce86

    ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifiers and on the latest association-set root in the Entrypoint.

    PrivacyPoolBOLD0xb4b5…b23E

    ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifiers and on the latest association-set root in the Entrypoint.

    PrivacyPoolSUSDS0xBBdA…750c

    ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifiers and on the latest association-set root in the Entrypoint.

    PrivacyPoolUSD10xc0A8…9c98

    ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifiers and on the latest association-set root in the Entrypoint.

    PrivacyPoolFrxUSD0xC6C7…0f84

    ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifiers and on the latest association-set root in the Entrypoint.

    PrivacyPoolFxUSD0xD14F…BC56

    ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifiers and on the latest association-set root in the Entrypoint.

    PrivacyPoolUSDe0xe6D3…6Abc

    ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifiers and on the latest association-set root in the Entrypoint.

    PrivacyPoolUSDT0xe859…4572

    ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifiers and on the latest association-set root in the Entrypoint.

    PrivacyPoolETH0xF241…C9fB

    Native-asset Privacy Pool that escrows ETH commitments for one scope. Withdrawals and ragequits depend on the linked Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifiers and on the latest association-set root in the Entrypoint.

    PrivacyPoolWBTC0xF973…fc32

    ERC20 Privacy Pool that escrows one asset for one scope. Withdrawals and ragequits depend on the linked Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifiers and on the latest association-set root in the Entrypoint.

    WithdrawalVerifier0x0228…7D6d

    Stateless Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifierAn entity in a ZK-Rollup, often a smart contract, that verifies zero-knowledge proofs submitted by a prover. used by Privacy Pool contracts to verify withdrawal proofs.

    RagequitVerifier0xa45A…5eC6

    Stateless Groth16A zk-SNARK proving system introduced by Groth in 2016 that proves arithmetic circuits and requires a separate trusted setup for each circuit. It allows extremely efficient proof verification. verifierAn entity in a ZK-Rollup, often a smart contract, that verifies zero-knowledge proofs submitted by a prover. used by Privacy Pool contracts to verify ragequit proofs.