Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

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

  1. A user makes a deposit → a commitment is added to the pool's state tree (status: pending)
  2. An ASP reviews the deposit source off-chain
  3. If approved, the commitment's label is added to the ASP's association set
  4. 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

StateMeaningWithdrawal
PendingAwaiting ASP decisionNot allowed (ragequit available)
ApprovedCommitment added to ASP setPrivate 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