go-ethereum/eth
Jonny Rhea d6f222a081
core, core/vm: precompile result caching (#35388)
Blocks heavy in precompile calls (e.g. Aztec's proof settlement txs)
spend most of their processing time on operations (ECMUL, pairings, KZG
point evaluation, MODEXP) that the state prefetcher has already computed
and thrown away.

This PR adds a precompile result cache shared between the prefetcher and
block processing (and the miner), following the JumpDestCache pattern.
Note that cached precompiles are keyed by address and input, with
entries partitioned by the active precompile set, so a fork that changes
the behavior behind an address can never be served results from before
it.

---------

Co-authored-by: Gary Rong <garyrong0905@gmail.com>
2026-07-28 10:47:33 +08:00
..
catalyst eth/catalyst: allow reorg depth equal to maxReorgDepth (#35391) 2026-07-23 22:49:48 +08:00
downloader eth/downloader: hold pivotLock when marking pivot committed (#35405) 2026-07-24 16:19:35 +08:00
ethconfig cmd/geth, eth/ethconfig: preserve zero engine reorg depth (#35373) 2026-07-20 10:53:19 +08:00
fetcher eth/fetcher: clear partial map when dropping last waitlist peer (#35399) 2026-07-23 10:22:47 +02:00
filters eth/filters: return -32602 when exceeding the block range limit (#34647) 2026-04-08 12:57:29 +02:00
gasestimator core: use uint256 in core.Message (#34934) 2026-05-11 22:25:57 +08:00
gasprice cmd, core, trie, triedb: split CachingDB into merkle + binary dbs. (#34700) 2026-04-17 08:55:54 +08:00
protocols eth/protocols/eth: track announced tx hashes only after send (#35384) 2026-07-20 15:40:04 +02:00
syncer eth,node: replace the deprecated TypeMux with Feed (#32585) 2026-05-08 10:12:46 +08:00
tracers eth/tracers/logger: respect logging limit (#35349) 2026-07-13 19:51:38 +08:00
txtracker eth: protect high-value peers from random dropping based on tx inclusion stats (#34702) 2026-07-09 18:54:27 +02:00
api_admin.go eth: ignore genesis block on importChain (#27956) 2023-08-21 13:32:34 -04:00
api_backend.go core: improve chain reset head (#35252) 2026-07-08 16:44:34 -05:00
api_backend_test.go core/txpool: add eip2681 check for incoming transactions (#32726) 2025-09-25 13:15:12 +02:00
api_debug.go eth: add debug_clearTxpool api (#33347) 2026-06-09 14:39:46 +02:00
api_debug_test.go eth: fix borked test introduced in merging #33347 (#35130) 2026-06-09 18:13:24 +02:00
api_miner.go miner: refactor the miner, make the pending block on demand (#28623) 2024-03-06 14:45:03 +02:00
backend.go core/txpool/blobpool, eth: implement sparse blobpool (#34047) 2026-07-15 14:41:04 +02:00
dropper.go eth: protect high-value peers from random dropping based on tx inclusion stats (#34702) 2026-07-09 18:54:27 +02:00
dropper_test.go eth: protect high-value peers from random dropping based on tx inclusion stats (#34702) 2026-07-09 18:54:27 +02:00
handler.go core/txpool/blobpool, eth: implement sparse blobpool (#34047) 2026-07-15 14:41:04 +02:00
handler_eth.go core/txpool/blobpool, eth: implement sparse blobpool (#34047) 2026-07-15 14:41:04 +02:00
handler_eth_test.go core/txpool/blobpool, eth: implement sparse blobpool (#34047) 2026-07-15 14:41:04 +02:00
handler_snap.go eth: check snap satelliteness, delegate drop to eth (#22235) 2021-02-02 10:44:36 +02:00
handler_test.go core/txpool/blobpool, eth: implement sparse blobpool (#34047) 2026-07-15 14:41:04 +02:00
peer.go eth/protocols/eth: implement eth/69 (#29158) 2025-05-16 17:10:47 +02:00
peerset.go eth: reserve peer slot for usable snap peer (#35180) 2026-06-17 09:55:36 +08:00
state_accessor.go core, core/vm: precompile result caching (#35388) 2026-07-28 10:47:33 +08:00
sync.go miner: add OpenTelemetry spans for block building path (#33773) 2026-03-16 19:24:41 +01:00
sync_test.go core/txpool/blobpool, eth: implement sparse blobpool (#34047) 2026-07-15 14:41:04 +02:00