Withdrawal Checks
When funds leave Bermuda's shielded pool, the protocol performs withdrawal checks. For compliant funds, Bermuda implements these checks through a private Proof of Innocence (POI): a zero-knowledge proof that the withdrawn funds exclude blacklisted deposit_id lineage under the current blacklist state.
How It Works
At withdrawal time, the SDK constructs a zero-knowledge proof that demonstrates:
- The withdrawal is valid — The shielded inputs, outputs, nullifiers, and balance transition are correct.
- The withdrawal excludes blacklisted lineage — The
deposit_idvalues involved in the withdrawal are proven against the current blacklist root using exclusion proofs. - The exit remains private — The pool can verify the withdrawal on-chain without revealing the user's identity, balance, or full transaction history.
This proof is submitted alongside the withdrawal transaction and checked by the pool against the active blacklist root published through the compliance gateway.
Technical Details
In Bermuda, the private withdrawal path is implemented as an exclusion proof against the current blacklist root: the client proves that the withdrawal excludes blacklisted deposit_id lineage, and the pool verifies that proof on-chain.
The public withdrawal path does the opposite: the relevant deposit_id values become public, inclusion proofs show that the withdrawn funds belong to blacklisted lineage, and the compliance engine can use the deposit_id -> depositor address mapping recorded at deposit time to relate the withdrawal back to the original deposit.
Withdrawal Checks in Practice
| Scenario | How withdrawal checks help |
|---|---|
| Withdrawing to a centralized exchange | The exchange can verify the withdrawal check to accept the deposit without additional KYC friction |
| Receiving a private payment | The recipient can confirm the funds are not tainted |
| Regulatory audit | Compliance teams can verify withdrawal checks without accessing user data |
| Cross-chain transfers | Destination chains or bridges can run withdrawal checks before accepting funds |