Skip to main content

Protocol Reference

This section documents the on-chain system itself: the contracts, the circuits that authorize every user operation, and the ASP service that screens deposits.

Two kinds of state change run side by side:

  • User operations (deposit, transact, ragequit) take effect only when their zero-knowledge proof verifies on-chain.
  • Administrative changes (pausing, upgrades, verifier swaps, asset config, ASP-root publication) are authorized by roles through the AccessRouter.

Role holders control this surrounding machinery but cannot move user funds.

Contracts

The core, all UUPS proxies except the router:

Processors that call PoolVault.transact and route its public output, all immutable:

  • PrivacyPoolRelay: plain relayed withdrawals, batches, atomic register-and-withdraw, and stealth announcements
  • RelaySwaps: withdraw-and-swap, reshield, and cross-chain delivery through an aggregator
  • PPRouter: deposit and withdrawal for yield-share notes

The yield stack that sits on top of the pool as ordinary assets:

The proofs behind user operations are checked by separate generated Groth16 verifier contracts (deposit, ragequit, and twenty-five transact_NxM variants), which the vault holds and an UPGRADER_ROLE can swap as part of a deployment set. See AccessRouter and roles for the role-gated administrative paths.

Circuits

ASP