Motivation
The State Root Performance Problem
Every blockchain needs to commit to its state prove that current balances, positions, and data are correct. Ethereum and most chains use full Merkle state roots: recompute the entire tree, hash it, commit. This works. But for high-frequency financial workloads, it’s wasteful. Traditional Merkle Patricia Tries incur O(n log n) costs for global state updates. The bottleneck is disk I/O, not computation. For a binary MPT with billions of keys, this translates to dozens of random disk reads per state update. Recent analysis shows that state root computation can cause up to 10x slowdown in block building. Think about a trading system. In a 75ms block, maybe 10,000 orders execute. But total state all accounts, all positions, all balances might be millions of entries. Recomputing a full Merkle root every block means hashing data that didn’t change.Change-Log Hash Commitments (CLH)
DracoBFT replaces state root computation with Change-Log Hashes computed during block execution. Rather than committing to the entire state, CLH commits only to state modifications. CLH is a lightweight state commitment mechanism with O(m) complexity that replaces O(n log n) global state root computation, where m is the number of unique keys modified per block (typically m ≪ n for state size n).Block-Level Aggregation
If 400 transactions modify the same key, CLH hashes it once (final value), not 400 times.| System | Hash Operations (400 txns, 1 key) |
|---|---|
| Ethereum MPT | ~4,000 |
| Tendermint IAVL | ~2,000 |
| Naive CLH | 400 |
| DracoBFT CLH | 1 |
Chained CLH
CLH vs other state-commitment approaches
