ra:st makes an association policy cryptographically enforceable and publicly auditable — but it does not decide what belongs on a blocklist. That is a governance question, and this page is how we answer it in the open.
The cryptography guarantees that a withdrawal descends from a set. Which deposits belong in that set is decided outside the circuit, by a public policy anyone can reproduce.
An association set 𝒜 is the subset of pool deposits that a policy predicate ok() certifies as non-illicit. The withdrawal proof binds your note to a published root rt𝒜 of this set — so an excluded deposit has no valid path and cannot exit.
The critical property is reproducibility: the predicate and every input it reads are public. Any auditor can re-run ok() over the on-chain deposit history, rebuild the association tree, and confirm their root matches the curator’s. Nothing about membership is taken on trust.
# evaluated over public deposit provenance def ok(cm, provenance): if provenance.source in SANCTIONED_LIST: # public, versioned return False if provenance.traces_to(KNOWN_THEFT): # public incident set return False return True # included in 𝒜
The lists SANCTIONED_LIST and KNOWN_THEFT are published and versioned. When they change, a new rt𝒜 is issued and the diff is inspectable — no silent edits.
Four public steps turn a predicate into the rt𝒜 your withdrawal proves against.
The curator publishes ok() and its input lists, versioned and diffable.
Every deposit is scored by the predicate against public provenance data.
Certified leaves form the association tree; its root rt𝒜 is posted per epoch.
Auditors rebuild the tree from public data and confirm the root matches.
Curation is a design axis, not a fixed choice. A pool can adopt any of these — the protocol enforces whichever root the auditor community accepts.
| Model | How it works | Censorship risk | Overhead |
|---|---|---|---|
| Single curator | One entity publishes rt𝒜. Simple, fast, fully auditable. | higher | low |
| Attester set | A quorum of independent attesters must agree on inclusion. | medium | medium |
| Stake-weighted vote | Root ratified by stake-weighted governance; slashing for bad policy. | lower | high |
| Competing roots | Multiple curators publish in parallel; withdrawers pick any accepted root. | lowest | medium |
This is the heart of the trust model. A curator’s only real power is inclusion — and even that is contestable.
A malicious curator’s worst move is to exclude an honest deposit. It cannot steal, freeze, or unmask anyone — and a competing curator can include what it wrongly left out.
Exclusion is not final. Because association is permissionless at the root level, an honest deposit has a public path back in.
Your deposit is public. If it’s absent from the current rt𝒜, that absence is visible to you and everyone else.
Submit the public provenance that satisfies ok(). Since the predicate is reproducible, a correct claim is verifiable by anyone.
Prove against any competing association root that includes you and that your counterparty’s auditor accepts.
The full governance treatment — permissioning, transparency, and appealability — is developed in the whitepaper.