phase-8
Phase 8 — Wallet sync (how receivers learn updates)
8.1 Detect new finalized batch
Wallet watches Solana for:
- new
batch_index/ root update
8.2 Fetch DA blob (fast path: sequencer cache)
Wallet fetches DA_blob from:
- sequencer cache/indexer (fast)
- verifies
H(DA_blob) == batch_hashfrom Solana
If mismatch:
- ignore that source and fetch from elsewhere
8.3 Scan/decrypt outputs
Wallet scans encrypted_outputs:
- attempt decrypt with viewing key
- if success: obtain note/state update
- verify inclusion under
new_state_root(or store and prove later)
8.4 Mark spent notes
Wallet checks batch nullifiers:
- if any match wallet’s derived nullifiers → mark notes spent
Wallet’s local state updates:
- new unspent notes added
- spent notes removed
- private contract state updated (from decrypted logs)