--- issue: 132 title: "Scanner: EVM checkpoint saved every 2000-block chunk — write amplification during catch-up" severity: low domain: Scanner labels: [performance, scanner] status: open created: 2026-05-30 source: Full Codebase Audit 2026-05-30 --- # Scanner: EVM checkpoint saved every 2000-block chunk — write amplification during catch-up **Severity:** low **Domain:** Scanner **Labels:** performance, scanner ## Description `scanner/chain.go:260` saves the checkpoint to SQLite after every 2000-block chunk during catch-up. For a scanner catching up thousands of blocks, this means many small writes per cycle. Saving once per successful scan cycle (or every large N during deep catch-up) would reduce write load. ## Options 1. Save checkpoint only at end of a successful scan cycle. 2. Save every N chunks (larger N) during catch-up. 3. Leave as-is (SQLite WAL is efficient). ## Recommendation Persist the checkpoint once per successful cycle (or every large N during deep catch-up). ## Affected Files - `scanner/chain.go:260` ## References - [Full Codebase Audit 2026-05-30](../09%20-%20Audits/Full%20Codebase%20Audit%20-%202026-05-30.md) — DEC-71