Your anonymity set
A withdrawal on chain B could have come from any approved note destined to chain B that was included in the global root the proof used. The more people bridge to the same chain with similar amounts, the larger that crowd and the stronger your privacy. All assets share one tree per chain, so ETH and stablecoin deposits make the set bigger together.
The main risk: amount and timing
If you deposit 1.2371 ETH and 40 seconds later 1.2371 ETH arrives at a fresh address, anyone can guess the link without breaking any cryptography. Warp gives you tools against this — use them:
- Round depositsDepositing a common size (1, 2, 5 × 10ⁿ) makes your deposit look like many others. The difference stays as a private change note on the destination chain.
- Partial withdrawalsWithdraw a different amount than you deposited, and withdraw the change later to another address.
- Random relay delaysStandard waits a random 5–30 minutes, Strong a random 1–6 hours. Fast relays immediately and is the easiest to correlate.
- RelayersThe withdrawal is sent by a relayer, so there is no gas-funding trail from you to the recipient.
- Fresh recipientsSending to an address already linked to you undoes the work. Don’t reuse addresses, and avoid moving funds straight back to the depositing wallet.
Why the destination chain is public
Pools must know how much value is owed on each route so independent solvers can bring liquidity where it is needed, without an operator. Hiding the destination would require shared liquidity accounting that leaks the same information through rebalancing. So deposits reveal where the value is headed; they never reveal who receives it.
Compliance: association sets and ragequit
Warp follows the Privacy Pools design. An Association Set Provider screens deposits (for example against sanctions lists) and approves their labels. Every private withdrawal proves that its deposit is in the approved set, so funds from excluded deposits cannot be mixed with everyone else’s.
If a deposit is never approved — or you simply want out — the original depositor can always ragequit: a public withdrawal that reveals the deposit and returns the full note value to the depositing address, on the destination chain or back on the source chain. Ragequit is not private, but it means your funds can never be trapped by the ASP.
No custodian
Contracts hold the funds; nobody can withdraw a note without its secrets. Relayers, root syncers, solvers, ASPs and message attesters are replaceable roles that anyone can run, and you can always relay your own withdrawal. A guardian can pause the pools or veto a suspicious root during its activation delay; it cannot move funds. Cross-chain roots travel through pluggable messengers (an attester committee, LayerZero — Robinhood Chain’s listed messaging partner — or Hyperlane, optionally combined in a quorum).
Your keys live in this browser
The first time you send, your wallet signs a fixed message (no gas). Your note secrets are derived from that signature and kept in memory; the notes themselves are saved in this browser’s storage. Deposits can be re-derived from the signature, but change notes cannot, so export a backup after transfers that leave change. A backup string is as sensitive as a private key.