Skip to content

Storage

Understanding how blockchain nodes store data is crucial for managing storage requirements and optimizing performance.


┌─────────────────────────────────────────────────────────────────┐
│ ETHEREUM STORAGE │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ LEVELDB / MDBX │ │
│ │ │ │
│ │ Key-Value Store │ │
│ │ │ │
│ │ ┌────────────┬──────────────────┐ │ │
│ │ │ Key │ Value │ │ │
│ │ ├────────────┼──────────────────┤ │ │
│ │ │ h:0x0000 │ Block #0 │ │ │
│ │ │ h:0x0001 │ Block #1 │ │ │
│ │ │ h:0x0002 │ Block #2 │ │ │
│ │ │ h:0x... │ ... │ │ │
│ │ │ s:0x... │ State (accounts)│ │ │
│ │ │ t:0x... │ Transactions │ │ │
│ │ └────────────┴──────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

Node TypeStorage Required
Full Node~1.2 TB
Pruned Node~1.2 TB
Archive Node~12 TB
DataApproximate Size
Block data~600 GB
State data~500 GB
Historical data~100 GB

/data/ethereum/
├── geth/
│ ├── chaindata/ # Blockchain data
│ │ └── 000001.log # LevelDB files
│ ├── triecache/ # Trie cache
│ ├── snapshots/ # State snapshots
│ └── nodes/ # Peer information
├── keystore/ # Account keys
└── history/ # Historical state

Terminal window
# Enable automatic pruning
geth --pruneancientstore
# Manual pruning
geth removedb
Terminal window
# Enable snapshots
geth --snapshot=true

  • Blockchain nodes store data in key-value databases
  • Storage requirements vary by node type
  • Pruning reduces storage needs
  • Use SSDs for performance

In Chapter 28: State & Merkle Trie Structures, we’ll explore data structures.


Last Updated: 2026-02-20