MIP20 and factory
MIP20 minting emits
Transfer(address(0), to, amount). The destination is the
intended holder for an accepted mint, or ReceivePolicy for a refused mint.
A token transfer to 0x0000000000000000000000000000000000000f4d credits
ReceivePolicy quarantine. Match it with that contract’s
Quarantined(bytes32 indexed receiptId, address indexed receiver, address indexed originator, Receipt receipt, uint8 reason).
The quarantine receipt
identifies the token, amount and recovery authority.
Claimed(bytes32 indexed receiptId, address indexed to) records recovery and
must be paired with the exact token transfer out of quarantine. For an
authorized payment, match AuthorizationUsed with its transfer to determine
whether the recipient or quarantine received the funds.
MIP410
The pool at0x0000000000000000000000000000000000000410 emits the events below.
The MIP410 API lists the calls that emit them.
Pool and hold lifecycle
Index each appended note from
NoteCommitmentAppended and each spent note from
NullifierSpent. An Accept resolution emits HoldAccepted, one
NullifierSpent for each real input, one NoteCommitmentAppended for the
recipient note, and one for the change note when present. Acceptance keeps the
input locks permanently set. Rejection and reclaim release them without
appending note commitments or recording nullifiers.
Indexers derive Expired from a hold’s deadline and the finalized block
timestamp. The inputs remain locked until HoldReclaimed records their release.
The VASP tree and the sanctioned set
The tree records virtual asset service providers (VASPs). The MIP410 authority administers admission and revocation.
Each event carries the new root of its tree. An admission retains the previous
registration root. Revocations, updates, and sanctions writes retire the old
root according to the root windows. Use
the events to trigger a registry refresh through the pool’s getters. The leaf
preimage that
FiAdmitted or FiUpdated publishes lets other VASPs rebuild the
tree.
Administration
These events expose public registry and configuration changes. The submitter
account and its gas payment are also public.
Shared registries
Interoperability
Ethereum checkpoints on Metal are updated during block execution through the
read-only protocol contract, which emits no checkpoint event. Read its
checkpoint getters.
Message events support reconstruction and indexing. Inboxes authenticate
delivery using proofs against accepted checkpoints.
Finality and indexing
- Read logs with
eth_getLogsor transaction receipts. - Deduplicate by
(blockHash, transactionIndex, logIndex). - Advance application state only through the finalized block.
- Replay from the last finalized cursor after a restart.
JSON-RPC
Look up log and block methods.
Verify and reconcile payments
Build an indexer that advances on finality and replays safely.
Finality
Determine when a block and its logs are final.