go-ethereum/core
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
..
filtermaps all: fix all typos, as reported by crates-ci/typos (#35008) 2026-06-10 18:50:51 +02:00
forkid params: set osaka and BPO1 & BPO2 mainnet dates (#33063) 2025-11-03 17:41:22 +01:00
history cmd/geth: add Prague pruning points for hoodi (#34714) 2026-04-14 14:58:27 +02:00
overlay cmd, core, trie, triedb: split CachingDB into merkle + binary dbs. (#34700) 2026-04-17 08:55:54 +08:00
rawdb core/rawdb: drop stray %d verb from freezer metadata log message (#35351) 2026-07-14 09:56:22 -05:00
state core/state: fix account prefetching for absent accounts (#35256) 2026-06-30 09:03:12 +08:00
stateless eth/catalyst: implement engine_newPayloadWithWitnessV5 and use witness field spec ordering (#35009) 2026-05-21 21:00:57 +02:00
tracing core: fix tracer panic (#35396) 2026-07-22 11:37:28 +08:00
txpool core: fix tx size calculation (#35406) 2026-07-24 10:50:20 +02:00
types core: fix tx size calculation (#35406) 2026-07-24 10:50:20 +02:00
vm core, core/vm: precompile result caching (#35388) 2026-07-28 10:47:33 +08:00
.gitignore Renamed chain => core 2014-12-04 10:28:02 +01:00
bench_test.go core: implement EIP-2780 and EIP-8037 changes (#35318) 2026-07-14 14:28:26 +02:00
bintrie_witness_test.go core: implement EIP-2780 and EIP-8037 changes (#35318) 2026-07-14 14:28:26 +02:00
block_validator.go core: optimize block validation (#35403) 2026-07-23 22:49:01 +08:00
block_validator_test.go eth/catalyst: add initial OpenTelemetry tracing for newPayload (#33521) 2026-02-17 17:08:57 +01:00
blockchain.go core, core/vm: precompile result caching (#35388) 2026-07-28 10:47:33 +08:00
blockchain_insert.go core: remove unused peek function in insertIterator (#33155) 2025-11-12 15:30:16 +08:00
blockchain_reader.go core, core/vm: precompile result caching (#35388) 2026-07-28 10:47:33 +08:00
blockchain_repair_test.go core: consolidate BlockChain constructor options (#31925) 2025-06-19 12:21:15 +02:00
blockchain_sethead_test.go core, miner, tests: introduce codedb and simplify cachingDB (#33816) 2026-03-10 08:29:21 +01:00
blockchain_snapshot_test.go core: re-enable the legacy snapshot after sync (#35163) 2026-06-16 11:09:32 +08:00
blockchain_stats.go core: add code cache hit/miss meters (#34821) 2026-05-22 11:33:21 +08:00
blockchain_test.go core, core/vm: precompile result caching (#35388) 2026-07-28 10:47:33 +08:00
chain_makers.go core, consensus/misc, params: implement EIP-7997 (#35223) 2026-07-02 14:56:18 +02:00
chain_makers_test.go core: consolidate BlockChain constructor options (#31925) 2025-06-19 12:21:15 +02:00
dao_test.go all: fix all typos, as reported by crates-ci/typos (#35008) 2026-06-10 18:50:51 +02:00
eip2780_test.go core: improve amsterdam fork test coverage (#35364) 2026-07-21 11:02:02 +08:00
eip7708_test.go core: improve amsterdam fork test coverage (#35364) 2026-07-21 11:02:02 +08:00
eip7928_test.go core: improve amsterdam fork test coverage (#35364) 2026-07-21 11:02:02 +08:00
eip7997_test.go core, consensus/misc, params: implement EIP-7997 (#35223) 2026-07-02 14:56:18 +02:00
eip8037_test.go core: fix tracer panic (#35396) 2026-07-22 11:37:28 +08:00
eip8038_test.go core: implement EIP-2780 and EIP-8037 changes (#35318) 2026-07-14 14:28:26 +02:00
eip8246_test.go core: improve amsterdam fork test coverage (#35364) 2026-07-21 11:02:02 +08:00
error.go core: implement EIP-2780 and EIP-8037 changes (#35318) 2026-07-14 14:28:26 +02:00
eth_transfer_logs_test.go params: remove named hardforks from bpo schedule (#35029) 2026-07-01 16:51:05 +08:00
events.go ethstats: report newPayload processing time to stats server (#33395) 2026-01-05 17:49:30 +01:00
evm.go core: implement EIP-8037, state creation gas cost increase (#33601) 2026-06-12 14:29:03 +02:00
gaspool.go core: implement EIP-8037, state creation gas cost increase (#33601) 2026-06-12 14:29:03 +02:00
gen_genesis.go core/vm: implement eip-7843: SLOTNUM (#33589) 2026-02-26 13:53:46 +01:00
genesis.go core, consensus/misc, params: implement EIP-7997 (#35223) 2026-07-02 14:56:18 +02:00
genesis_alloc.go params: add hoodi testnet definition (#31406) 2025-03-18 12:07:49 +01:00
genesis_test.go params: remove named hardforks from bpo schedule (#35029) 2026-07-01 16:51:05 +08:00
headerchain.go core/rawdb: reduce allocations in rawdb.ReadHeaderNumber (#31913) 2025-07-15 15:48:36 +02:00
headerchain_test.go core/state, core/tracing: new state update hook (#33490) 2026-01-08 11:07:19 +08:00
jumpdest.go core/vm: global cache for jumpdest bitmaps (#34850) 2026-05-27 09:01:05 +02:00
mkalloc.go accounts, cmd/geth, core: close opened files (#29598) 2024-04-30 15:47:21 +02:00
rlp_test.go crypto/keccak: vendor in golang.org/x/crypto/sha3 (#33323) 2026-02-03 14:55:27 -07:00
sender_cacher.go core: use sync.Once for SenderCacher initialization (#31029) 2025-01-16 14:36:45 +01:00
state_prefetcher.go core, core/vm: precompile result caching (#35388) 2026-07-28 10:47:33 +08:00
state_processor.go core, core/vm: precompile result caching (#35388) 2026-07-28 10:47:33 +08:00
state_processor_test.go core/vm: implement eip-7843: SLOTNUM (#33589) 2026-02-26 13:53:46 +01:00
state_transition.go core: fix tracer panic (#35396) 2026-07-22 11:37:28 +08:00
state_transition_test.go core: implement EIP-2780 and EIP-8037 changes (#35318) 2026-07-14 14:28:26 +02:00
stateless.go core, core/vm: precompile result caching (#35388) 2026-07-28 10:47:33 +08:00
txindexer.go core, core/txpool, eth: move subscriptions to constructor (#35048) 2026-06-01 08:13:59 +08:00
txindexer_test.go core/rawdb: integrate eradb backend for RPC (#31604) 2025-06-03 10:47:38 +02:00
types.go core, core/vm: precompile result caching (#35388) 2026-07-28 10:47:33 +08:00