go-ethereum/core
Arran Schlosberg 12b8aa5c2e
fix: pre-state tracer logging storage after call from precompile (#64)
## Why this should be merged

Fixes tracing when a stateful precompile calls another contract that
itself accesses storage.

## How this works

The pre-state tracer from `eth/tracers/native` doesn't implement
`CaptureEnter()` (entry of a new context), instead relying on
`CaptureState()` (per-opcode tracing) to detect that a new contract has
been entered. In doing so, it [maintains an
invariant](cb7eb89341/eth/tracers/native/prestate.go (L160))
that is expected when `CaptureState(vm.SLOAD, ...)` is called—breaking
the invariant results in a panic due to a nil map.

The fix involves (a) maintaining the invariant as part of
`CaptureEnter()` (previously a no-op); and (b) calling said method
inside `vm.PrecompileEnvironment.Call()`. The latter has the added
benefit of properly handling all tracing involving an outbound call from
precompiles.

## How this was tested

New integration test demonstrates that the tracer can log the retrieved
storage value.

---------

Co-authored-by: Darioush Jalali <darioush.jalali@avalabs.org>
2024-10-29 17:26:29 +11:00
..
asm [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
bloombits [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
forkid [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
rawdb [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
state fix: state.stateObject.empty() with extra payload (#62) 2024-10-28 11:34:19 -07:00
txpool [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
types fix: state.stateObject.empty() with extra payload (#62) 2024-10-28 11:34:19 -07:00
vm fix: pre-state tracer logging storage after call from precompile (#64) 2024-10-29 17:26:29 +11:00
.gitignore Renamed chain => core 2014-12-04 10:28:02 +01:00
bench_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
block_validator.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
block_validator_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blockchain.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blockchain_insert.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blockchain_reader.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blockchain_repair_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blockchain_sethead_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blockchain_snapshot_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blockchain_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
blocks.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
bloom_indexer.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
chain_indexer.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
chain_indexer_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
chain_makers.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
chain_makers_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
dao_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
error.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
events.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
evm.go Merge branch 'auto-rename-module_source-2bd6bd01d2e8561dd7fc21b631f4a34ac16627a1_workflow-c1fc594f020d23958b641a4e5a856b6e52c49d3bece94b95594864db16c1b0fc-main' into arr4n/rename-module 2024-10-17 13:07:28 +11:00
forkchoice.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
gaspool.go core, miner: revert block gas counter in case of invalid transaction (#26799) 2023-03-07 05:23:52 -05:00
gen_genesis.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
genesis.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
genesis_alloc.go cmd, core, params: add support for the Holesky testnet (#28007) 2023-08-25 18:11:40 +03:00
genesis_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
headerchain.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
headerchain_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
mkalloc.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
rlp_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
sender_cacher.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
state_prefetcher.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
state_processor.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
state_processor_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
state_transition.go Merge branch 'auto-rename-module_source-2bd6bd01d2e8561dd7fc21b631f4a34ac16627a1_workflow-c1fc594f020d23958b641a4e5a856b6e52c49d3bece94b95594864db16c1b0fc-main' into arr4n/rename-module 2024-10-17 13:07:28 +11:00
state_transition.libevm.go doc: licensing of libevm additions and modifications (#34) 2024-09-19 21:38:26 +00:00
state_transition.libevm_test.go Merge branch 'auto-rename-module_source-2bd6bd01d2e8561dd7fc21b631f4a34ac16627a1_workflow-c1fc594f020d23958b641a4e5a856b6e52c49d3bece94b95594864db16c1b0fc-main' into arr4n/rename-module 2024-10-17 13:07:28 +11:00
txindexer.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
txindexer_test.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00
types.go [AUTO] rename Go module + update internal import paths 2024-10-17 01:49:47 +00:00