Roles
Customer
- Gives a payment instruction: who to pay, how much, and when
- Holds the spending key in their own wallet for self-custody, or entrusts it to a custodian
- Instructs their VASP to prepare the transaction
Custodian
- Safeguards the customer’s spending key and signs authorizations with it
- Cryptographically authorizes the transaction by signing with the key
- May be the customer’s VASP. Under self-custody, the customer’s wallet performs this signing role
VASP
- Prepares transactions for its customers and applies the required policies
- Obtains signed authorizations from the customer’s wallet or custodian and arranges proof construction
- May serve both sender and recipient. It holds spending keys only if it also provides custody
Proving service
- Builds proofs that a transaction satisfies the circuit’s checks, including any required signed authorization. The VASP can do this itself or delegate it to a separate service.
- Receives the keys, authorizations, and private inputs needed for the proof. For proofs that check spending-key signatures, these include the spend-verification key and nullifier key. It does not need the spending key.
- Can read the private inputs it receives, and identify spends of known notes via the nullifier key
- Cannot create a new spending authorization without the spending key.
Submitter
- Broadcasts the prepared transaction and pays gas in a MIP20 gas token
- Can be the customer’s EVM account, the VASP’s account, or a relayer acting on their behalf
- The submitting account, gas token, and fee are public
- Needs the prepared transaction and proofs, but not the customer’s spending or viewing keys
- Cannot change values bound by a proof or authorization, such as the amount, destination, or resolution decision, without invalidating it.
MIP410 authority
- Administers the pool’s shared compliance rules and participation requirements.
- Uses an EVM administrator address configured at deployment or network genesis.
- Admits and revokes VASPs and shielding assets, updates the sanctioned set, and controls the maximum hold duration, circuit IDs, bridge gateway, and pause.
- Can transfer administration through a two-step authority transfer.
- Has a regulatory viewing role in the design. This requires access to the relevant wallet’s incoming viewing key, nullifier key, and payment data.
- With that access, can read payments received by the wallet and identify spends of known notes.
MIP410 shielded pool
- Verifies submitted proofs and checks the transaction against its current state.
- Records note commitments, holds, input locks, and spent-note nullifiers.
- Holds the public MIP20 value backing the notes and transfers it during shielding and unshielding.
- Executes the verified transaction without holding customers’ spending or viewing keys.