Skip to content

Snapshots

Snapshots are a critical component of modern blockchain node infrastructure, enabling rapid node synchronization and significantly reducing the time required to join a network. This chapter provides comprehensive coverage of snapshot management.


Blockchain snapshots are pre-computed state data that allow new nodes to synchronize much faster than traditional methods. Instead of processing the entire transaction history, nodes can download and verify the current state directly.

┌─────────────────────────────────────────────────────────────────────────────┐
│ SNAPSHOT SYNC VS FULL SYNC │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ FULL SYNC SNAPSHOT SYNC │
│ ━━━━━━━━━━ ━━━━━━━━━━━━━ │
│ │
│ ┌─────────┐ ┌─────────┐ │
│ │ Genesis │ │ Snapshot│ │
│ │ Block │ │ Download│ │
│ └────┬────┘ └────┬────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌────────────────┐ ┌────────────────┐ │
│ │ Process all │ │ Verify state │ │
│ │ transactions │ │ hash │ │
│ │ from block 1 │ └───────┬────────┘ │
│ └────┬─────────┘ │ │
│ │ ▼ │
│ ▼ ┌────────────────┐ │
│ ┌────────────┐ │ Start normal │ │
│ │ ...thousands│ │ operation │ │
│ │ of blocks │ └────────────────┘ │
│ └────┬───────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Latest Block│ │
│ └─────────────┘ │
│ │
│ Time: Weeks Time: Hours │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
BenefitDescription
SpeedReduces sync time from weeks to hours
Resource EfficiencyLess CPU/bandwidth usage
TrustlessState is verified by execution
AccessibilityEnables faster network participation

┌─────────────────────────────────────────────────────────────────┐
│ ETHEREUM SNAPSHOT TYPES │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. STATE SNAPS (Snap Sync) │
│ ━━━━━━━━━━━━━━━━━━━ │
│ - Downloads Merkle trie state │
│ - Started in Geth v1.10.0 │
│ - Automatically selected in snap sync mode │
│ - Size: ~10-15 GB for mainnet │
│ │
│ 2. HISTORY SNAPS │
│ ━━━━━━━━━━━━━━━━ │
│ - Contains historical block data │
│ - Erigon-specific feature │
│ - Enables historical queries │
│ - Size: ~100 GB+ for mainnet │
│ │
│ 3. SNAPSHOT FILES (.seg) │
│ ━━━━━━━━━━━━━━━━━━━ │
│ - Segmented snapshot files │
│ - Erigon generates automatically │
│ - Can be shared between nodes │
│ │
└─────────────────────────────────────────────────────────────────┘
ProviderURLDescription
ErigonBuilt-inAutomatic during snap sync
PolygonPolygon SnapshotsAvailable from various providers
AvalancheAvalanche SnapshotsCommunity-provided
CustomVariousCommunity snapshots

44.3 Using Snapshots with Different Clients

Section titled “44.3 Using Snapshots with Different Clients”
Terminal window
# Start with snap sync (automatically uses snapshots)
geth \
--mainnet \
--syncmode "snap" \
--datadir /data/ethereum \
--cache 8192
# Verify snapshot status
geth snapshot status --datadir /data/ethereum
Terminal window
# Erigon automatically uses snapshots in snap sync
erigon \
--chain mainnet \
--datadir /data/erigon \
--snapshots=true
# List available snapshots
ls -la /data/erigon/snapshots/
# Verify snapshot data
erigon snapshot check
Terminal window
# Nethermind supports various sync modes
dotnet Nethermind.Runner.dll \
--config mainnet \
--Sync.SnapSync true \
--Init.Datapath /data/nethermind

Terminal window
# Generate snapshots from existing full node
erigon snapshot build \
--datadir /data/erigon \
--from 15000000
# Verify snapshots
erigon snapshot verify \
--datadir /data/erigon
# List snapshot segments
erigon snapshot ls /data/erigon/snapshots/
Terminal window
# Compress snapshots for transfer
tar -czvf erigon-snapshots.tar.gz /data/erigon/snapshots/
# Extract on new machine
tar -xzvf erigon-snapshots.tar.gz -C /data/erigon/
# Verify integrity
erigon snapshot check --datadir /data/erigon

┌─────────────────────────────────────────────────────────────────┐
│ SNAPSHOT VERIFICATION │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Snapshots are verified through: │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ STATE ROOT VERIFICATION │ │
│ │ │ │
│ │ Snapshot → Compute State Root → Compare with Block │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Snapshot │───▶│ Compute │ │ │
│ │ │ Data │ │ Root Hash │ │ │
│ │ └──────────────┘ └──────┬───────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌──────────────┐ │ │
│ │ │ Block │ │ │
│ │ │ Header │ │ │
│ │ │ State Root │ │ │
│ │ └──────┬───────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌──────────────┐ │ │
│ │ │ MATCH? │ │ │
│ │ │ VERIFIED │ │ │
│ │ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ This ensures trustless verification without external trust │
│ │
└─────────────────────────────────────────────────────────────────┘
Terminal window
# Check Geth snapshot status
geth snapshot status --datadir /data/ethereum
# Verify state root
geth snapshot verify-state --datadir /data/ethereum
# Erigon verification
erigon snapshot check --datadir /data/erigon
# Check block hash continuity
geth db check-chain-gap --datadir /data/ethereum

Snapshot TypeSize (Ethereum Mainnet)Recommended Storage
Snap Sync State~10-15 GB50 GB NVMe
Full Erigon~100-150 GB200 GB NVMe
Archive~12 TBMultiple NVMe
Terminal window
# Schedule periodic snapshot verification
# Add to crontab
0 2 * * 0 /usr/bin/geth snapshot verify-state --datadir /data/ethereum
# Clean up old snapshots
erigon snapshot prune \
--datadir /data/erigon \
--older-than 30d
Terminal window
# Watch snapshot sync progress
geth --attach /data/ethereum/geth.ipc \
-exec 'eth.syncing'
# Prometheus metrics
# Enable with --metrics
# Check: eth_snapshot_*

IssueCauseSolution
Slow snap syncNetwork bandwidthIncrease peers, check bandwidth
Snapshot verification failsCorrupted dataDelete and re-sync
Out of disk spaceLarge stateEnable pruning, use smaller disk
Stuck at snapshotPeer issuesAdd more bootnodes, try different peers
Terminal window
# 1. Stop the node
systemctl stop geth
# 2. Remove corrupted snapshots
rm -rf /data/ethereum/snapshots/*
rm -rf /data/ethereum/trie*
# 3. Restart with fresh sync
systemctl start geth
# 4. Monitor sync progress
geth --attach /data/ethereum/geth.ipc -exec 'eth.syncing'

QuestionAnswer
What is snap sync?Fast sync method using pre-computed state snapshots
How are snapshots verified?By computing state root and comparing with block header
What clients support snapshots?Geth, Erigon, Nethermind all support snap sync
How large are Ethereum snapshots?~10-15 GB for state, ~100 GB+ for history
Can snapshots be shared between nodes?Yes, with proper verification

  • Snapshots enable fast node synchronization (hours vs weeks)
  • Snap sync is trustless through state root verification
  • Different clients have different snapshot implementations
  • Regular verification ensures data integrity
  • Proper storage planning is essential

In Chapter 45: Common Node Issues, we’ll explore troubleshooting common problems.


Last Updated: 2026-02-20