Compliance
The Problem
Privacy systems face a structural tradeoff:
- Full privacy makes it difficult to demonstrate that funds are clean
- Full transparency removes privacy entirely
Shinobi Cash adopts the Privacy Pools approach: compliance is enforced at the deposit level, while privacy is preserved at withdrawal time.
Association Set Providers (ASPs)
An Association Set Provider (ASP) is an entity that reviews deposits and decides whether they belong to a compliant set.
ASPs do not control withdrawals and do not learn which deposit is later withdrawn.
How ASPs Work
- A user makes a deposit → a commitment is added to the pool's state tree (status: pending)
- An ASP reviews the deposit source off-chain
- If approved, the commitment's label is added to the ASP's association set
- To withdraw, the user generates a zero-knowledge proof
The proof verifies:
- The deposit exists in the pool state
- The deposit exists in the ASP's approved set
- The user knows the deposit secret
It does not reveal:
- Which deposit was used
- When the deposit occurred
- The depositor's address or identity
This allows compliance checks without transaction-level surveillance.
Approval States
| State | Meaning | Withdrawal |
|---|---|---|
| Pending | Awaiting ASP decision | Not allowed (ragequit available) |
| Approved | Commitment added to ASP set | Private withdrawal allowed |
Ragequit (Fund Recovery)
While a deposit is pending, the user can ragequit:
- Funds are returned to the original depositor address
- Privacy is lost for that deposit
This ensures users are never trapped waiting for approval.
Learn More
- Privacy Pools Paper — Research foundation
- Privacy Pools — Cryptographic model
- Smart Contracts — Implementation details