Index events only from the configured pool and deployment block. A log counts only when its transaction receipt succeeded.

Value-flow events

Withdrawal is the settlement event and carries the nullifier. There is no separate spent-nullifier event and no withdrawal output commitment. CommitmentInserted.encryptedPayload is public ciphertext used for wallet recovery discovery. It carries no wallet address or plaintext note secret. Clients must bind it to the event’s pool, commitment, payload hash, runtime context, and wallet-derived key before decryption.

Tree events

An expired root leaves the deposit intact. Rebuild membership against a newer accepted root that still contains the same bundle commitment.

Fee and control events

When a flow is complete

For a deposit, match a successful receipt at the configured pool with CommitmentInserted for the prepared commitment, amount, payload, and leaf index. RootAccepted should identify that same commitment. For a withdrawal, match a successful receipt with the pool’s spent-nullifier mapping and one Withdrawal event containing the intended nullifier, destination, gross amount, net amount, fee, and payload. Completion requires a successful receipt and the expected event. If either is missing, keep the original request identity and reconcile before trying again.