CommitmentInserted. The Transfer Console derives its decryption key from a verified browser-wallet signature. The SDK exposes the strict envelope restore boundary; application code owns wallet authorization and log discovery.
Onchain discovery record
Reject malformed logs, wrong pools, non-field commitments, nonpositive amounts, unsafe leaf indexes, and wrong payload lengths before decryption.
Wallet key derivation
The browser requests EIP-712 typed data whose domain binds the chain ID and verifying pool. Its message binds wallet, pool, recovery and encryption versions, purpose, issuance scope, and warning text. Required order:- Accept only a full or compact secp256k1 signature with canonical scalars.
- Normalize its encoding and recover the typed-data signer.
- Require the recovered signer to equal the requested EOA wallet.
- Feed the exact canonical signature bytes into HKDF-SHA-256.
- Bind the recovery root to application ID, chain ID, and lowercased pool.
- Derive a bundle-specific key from the recovery epoch and bundle commitment.
Authenticated envelope
AES-GCM associated data binds:- Chain ID and lowercased pool
- Runtime ID and template-set hash
- Bundle commitment
- Recovery associated-data schema and version
Restore through the SDK
Complete recovery order
- Scan
CommitmentInsertedonly from the configured pool and deployment block. - Parse the event and construct the exact recovery record without field coercion.
- Derive the verified wallet recovery key, or explicitly import a bearer recovery root.
- Verify payload shape, byte length, and hash.
- Decrypt with the exact authenticated context.
- Recompute and match the externally anchored bundle commitment.
- Resolve onchain membership and current accepted root.
- Check each child nullifier; expose only positive, unspent children.
- Leave note selection empty until the user chooses one.
Bearer fallback
Thenullark1_... recovery note packages the recovery root with chain, pool, runtime, template, amount, commitment, deposit-context, payload-hash, and ciphertext bindings. It is independent spend authority and is a recommended optional export. Wallet-derived recovery is the required deposit path; exporting a bearer note reduces the availability risk created by EIP-1193 wallets having no universal deterministic-signature guarantee.
Do not write a looser compatibility parser. If a field, hash, runtime, key, or commitment differs, restoration fails and no chain action should follow.
Recovery security and operational boundaries live on the recovery-note safety page. The formal report covers withdrawal fund safety separately.
