The pool contract holds testnet XLM. Anyone can deposit (your signer is visible). Withdrawals settle in batches via ONE aggregated ZK proof — N transfers in one tx.
On EVM you'd call a verifier contract, then a separate multicall to dispatch transfers. Here, Soroban runs the proof verification AND moves the assets in a single invocation. That atomicity is the Stellar-native primitive — and it's why the on-chain cost stays at ~136K stroops regardless of how many withdrawals are inside.
Pay XLM, register a commitment. Your account signs the deposit (visible on-chain); the commitment's preimage stays private. Pool funds accumulate; later, any withdrawer with a valid aggregated proof can draw against them.
Submits the canonical K=4 aggregated proof to the pool contract. The contract verifies the proof (cross-contract call to oneproof_verifier), records 4 nullifiers, and dispatches 4 XLM transfers to your address — all in ONE Stellar transaction.