Skip to main content
Index logs from finalized blocks. Logs produced during successful execution appear in transaction receipts. Reverted transactions contain none.

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 at 0x0000000000000000000000000000000000000410 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

  1. Read logs with eth_getLogs or transaction receipts.
  2. Deduplicate by (blockHash, transactionIndex, logIndex).
  3. Advance application state only through the finalized block.
  4. 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.