go-ethereum/core/state
Guillaume Ballet a15778c52f
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
trie: group 2^N binary trie nodes in serialization (#34794)
This PR addresses one of the biggest performance issue with binary
tries: storing each internal node individually bloats the index, the
disk, and triggers a lot of write amplifications. To fix this issue,
this PR serializes groups of nodes together.

Because we are still looking for the ideal group size, the "depth" of
the group tree is made a parameter, but that will be removed in the
future, once the perfect size is known.


This is a rebase of #33658

---------

Co-authored-by: Copilot <copilot@github.com>
2026-05-01 15:28:19 +02:00
..
pruner all: improve ETA calculation across all progress indicators (#32521) 2025-09-01 13:47:02 +08:00
snapshot core/state: and instead of or (#34819) 2026-04-26 11:54:07 +02:00
access_events.go trie, go.mod: remove all references to go-verkle and go-ipa (#33461) 2025-12-30 20:44:04 +08:00
access_events_test.go trie, go.mod: remove all references to go-verkle and go-ipa (#33461) 2025-12-30 20:44:04 +08:00
access_list.go core/state: improve accessList copy (#33024) 2025-10-26 16:13:59 +08:00
database.go core/state: export StateUpdate struct (#34724) 2026-04-20 17:12:10 +02:00
database_code.go core, miner, tests: introduce codedb and simplify cachingDB (#33816) 2026-03-10 08:29:21 +01:00
database_history.go core/state: export StateUpdate struct (#34724) 2026-04-20 17:12:10 +02:00
database_iterator.go core/state: export StateUpdate struct (#34724) 2026-04-20 17:12:10 +02:00
database_iterator_test.go core/state: export StateUpdate struct (#34724) 2026-04-20 17:12:10 +02:00
database_mpt.go core/state: export StateUpdate struct (#34724) 2026-04-20 17:12:10 +02:00
database_ubt.go trie: group 2^N binary trie nodes in serialization (#34794) 2026-05-01 15:28:19 +02:00
dump.go core/state: export StateUpdate struct (#34724) 2026-04-20 17:12:10 +02:00
iterator.go core, miner, tests: introduce codedb and simplify cachingDB (#33816) 2026-03-10 08:29:21 +01:00
iterator_test.go core/state: state reader abstraction (#29761) 2024-09-05 13:10:47 +03:00
journal.go core: miner: reduce allocations in block building (#33375) 2026-02-03 08:19:16 +01:00
metrics.go core/rawdb,state: add preimage miss metric (#31295) 2025-03-07 11:23:19 +01:00
reader.go trie: group 2^N binary trie nodes in serialization (#34794) 2026-05-01 15:28:19 +02:00
reader_eip_7928.go core: implement BAL reader for prefetching (#33737) 2026-04-28 13:10:15 +02:00
reader_eip_7928_test.go core: implement BAL reader for prefetching (#33737) 2026-04-28 13:10:15 +02:00
reader_stater.go core, miner, tests: introduce codedb and simplify cachingDB (#33816) 2026-03-10 08:29:21 +01:00
state_object.go core/state: opt stateObject.GetState (#34825) 2026-04-28 20:33:40 +08:00
state_object_test.go core/state: using testing.B.Loop (#32658) 2025-09-19 16:57:43 -06:00
state_sizer.go core/state: export StateUpdate struct (#34724) 2026-04-20 17:12:10 +02:00
state_sizer_test.go core/state: export StateUpdate struct (#34724) 2026-04-20 17:12:10 +02:00
state_test.go core, consensus/beacon: defer trie resolution (#31725) 2025-06-25 09:42:11 +08:00
statedb.go core/state,core/types/bal: copy stateReadList in StateDB.Copy 2026-04-24 17:30:03 +02:00
statedb_fuzz_test.go core/state: export StateUpdate struct (#34724) 2026-04-20 17:12:10 +02:00
statedb_hooked.go core: track the state access footprint (#34776) 2026-04-22 13:42:49 +08:00
statedb_hooked_test.go core: invoke selfdestruct tracer hooks during finalisation (#32919) 2026-01-16 15:10:08 -07:00
statedb_test.go core/state: handle *bintrie.BinaryTrie in mustCopyTrie (#34758) 2026-04-18 18:47:22 +02:00
stateupdate.go core/state: export StateUpdate struct (#34724) 2026-04-20 17:12:10 +02:00
sync.go core,eth,internal: fix typo (#29024) 2024-02-20 19:42:48 +08:00
sync_test.go core, miner, tests: introduce codedb and simplify cachingDB (#33816) 2026-03-10 08:29:21 +01:00
transient_storage.go core/state: optimize transient storage (#33695) 2026-04-14 15:39:42 +02:00
trie_prefetcher.go cmd, core, trie, triedb: split CachingDB into merkle + binary dbs. (#34700) 2026-04-17 08:55:54 +08:00
trie_prefetcher_test.go cmd, core, trie, triedb: split CachingDB into merkle + binary dbs. (#34700) 2026-04-17 08:55:54 +08:00