---
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
