- Delete header on conflict to prompt data refresh (cascade deletes all data associated with that block) - Derive header hash from rpc payload rather than computing it from data (prevents hash mismatch between blockchain and cache)
- Inject column names to reduce duplication across common behavior - Extract checked headers column names to constants