go-ethereum/core/state
CPerezz bfb77d98f6
core/state,triedb/pathdb: enable bintrie flat state reads end-to-end
Wires the pieces from Commits 1-9 into a running system:

* triedb/pathdb.New: install the bintrieFlatCodec when isVerkle is set,
  backed by the same verkle-namespaced db used for trie nodes.
* triedb/pathdb.database.go: drop isVerkle from the noBuild guard so the
  bintrie generator (Commit 9) runs on startup, and remove it from the
  generateSnapshot call path for the same reason.
* triedb/pathdb.disklayer.revert: hard-fail on bintrie because the
  reorg path would replay merkle-shaped origin records against a
  per-stem layout. Tracked in BINTRIE_FLAT_STATE_REORG_GAP.md.
* triedb/pathdb.journal: add IsBintrie to journalGenerator (rlp:"optional"
  so v3 journals still decode) and make journalProgress a method on
  generator so it stamps the active scheme; loadGenerator discards any
  journal whose scheme does not match the database, forcing a fresh
  regeneration.
* triedb/pathdb.reader: export RawStateReader, a small extension of
  database.StateReader that exposes AccountRLP so callers outside the
  package can reach the raw flat-state bytes without going through the
  slim-RLP decode path that assumes merkle shape.
* core/state.reader: add bintrieFlatReader, the bintrie equivalent of
  flatReader. It derives the EIP-7864 stem keys from (addr, slot),
  performs two AccountRLP lookups per Account call (BasicData +
  CodeHash), and decodes via bintrie.UnpackBasicData. Storage reads go
  through a single AccountRLP lookup at the slot's full bintrie key.
* core/state.database.StateReader: dispatch to bintrieFlatReader when
  the path database is in verkle mode; merkle path unchanged.

Depends on the lookup sentinel fix in the previous commit; without it
missing-account reads on bintrie misreport as "layer stale".
2026-04-15 15:00:40 +02:00
..
pruner all: improve ETA calculation across all progress indicators (#32521) 2025-09-01 13:47:02 +08:00
snapshot crypto/keccak: vendor in golang.org/x/crypto/sha3 (#33323) 2026-02-03 14:55:27 -07: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,triedb/pathdb: enable bintrie flat state reads end-to-end 2026-04-15 15:00:40 +02:00
database_code.go core, miner, tests: introduce codedb and simplify cachingDB (#33816) 2026-03-10 08:29:21 +01:00
database_hasher.go core/state: hook leaf production in binaryHasher 2026-04-15 15:00:40 +02:00
database_hasher_binary.go core/state: hook leaf production in binaryHasher 2026-04-15 15:00:40 +02:00
database_hasher_binary_test.go core/state,triedb/pathdb: wire bintrie leaves through stateUpdate 2026-04-15 15:00:40 +02:00
database_hasher_merkle.go core: fix memory leaking 2026-04-15 15:00:39 +02:00
database_hasher_merkle_test.go core: fix memory leaking 2026-04-15 15:00:39 +02:00
database_history.go core/state: build hasher skeleton 2026-04-15 15:00:38 +02:00
database_iterator.go core/state: introduce state iterator interface (#33102) 2026-04-03 10:35:32 +08:00
database_iterator_test.go core/state: introduce state iterator interface (#33102) 2026-04-03 10:35:32 +08:00
dump.go core/state: build hasher skeleton 2026-04-15 15:00:38 +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/state: integrate witness collector 2026-04-15 15:00:39 +02:00
reader.go core/state,triedb/pathdb: enable bintrie flat state reads end-to-end 2026-04-15 15:00:40 +02:00
reader_bintrie_test.go core/state,triedb/pathdb: enable bintrie flat state reads end-to-end 2026-04-15 15:00:40 +02:00
reader_stater.go core, miner, tests: introduce codedb and simplify cachingDB (#33816) 2026-03-10 08:29:21 +01:00
state_mut.go core/state: integrate witness collector 2026-04-15 15:00:39 +02:00
state_object.go core/state: integrate witness collector 2026-04-15 15:00:39 +02: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: implement merkle hasher 2026-04-15 15:00:38 +02:00
state_sizer_test.go core/state: fix incorrect contract code state metrics (#33376) 2025-12-10 11:33:59 +08:00
state_test.go core, consensus/beacon: defer trie resolution (#31725) 2025-06-25 09:42:11 +08:00
statedb.go core/state,triedb/pathdb: wire bintrie leaves through stateUpdate 2026-04-15 15:00:40 +02:00
statedb_fuzz_test.go core/state: improve binary hasher 2026-04-15 15:00:39 +02:00
statedb_hooked.go cmd/geth, core/state, tests: rework EIP7610 check (#34718) 2026-04-14 15:54:36 +02:00
statedb_hooked_test.go core: invoke selfdestruct tracer hooks during finalisation (#32919) 2026-01-16 15:10:08 -07:00
statedb_stats.go core/state: integrate witness collector 2026-04-15 15:00:39 +02:00
statedb_test.go core/state: plumb CodeSize through AccountMut for binaryHasher 2026-04-15 15:00:39 +02:00
stateupdate.go core/state,triedb/pathdb: wire bintrie leaves through stateUpdate 2026-04-15 15:00:40 +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 core/state: integrate prefetching into merkle hasher 2026-04-15 15:00:38 +02:00
trie_prefetcher_test.go core/state: integrate prefetching into merkle hasher 2026-04-15 15:00:38 +02:00