go-ethereum/eth/tracers/internal/tracetest
jwasinger 715bf8e81e
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
core: invoke selfdestruct tracer hooks during finalisation (#32919)
The core part of this PR that we need to adopt is to move the code and
nonce change hook invocations to occur at tx finalization, instead of
when the selfdestruct opcode is called.

Additionally:
* remove `SelfDestruct6780` now that it is essentially the same as
`SelfDestruct` just gated by `is new contract`
* don't duplicate `BalanceIncreaseSelfdestruct` (transfer to recipient
of selfdestruct) in the hooked statedb and in the opcode handler for the
selfdestruct opcode.
* balance is burned immediately when the beneficiary of the selfdestruct
is the sender, and the contract was created in the same transaction.
Previously we emit two balance increases to the recipient (see above
point), and a balance decrease from the sender.

---------

Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com>
Co-authored-by: Gary Rong <garyrong0905@gmail.com>
Co-authored-by: lightclient <lightclient@protonmail.com>
2026-01-16 15:10:08 -07:00
..
selfdestruct_test_contracts core: invoke selfdestruct tracer hooks during finalisation (#32919) 2026-01-16 15:10:08 -07:00
testdata eth/tracers: fix prestateTracer for EIP-6780 SELFDESTRUCT (#33050) 2025-10-31 18:14:52 +01:00
calltrace_test.go eth: using testing.B.Loop (#32657) 2025-09-19 17:00:29 -06:00
erc7562_tracer_test.go eth/tracers/native: add erc7562 tracer (#31006) 2025-05-20 15:38:33 +02:00
flat_calltrace_test.go eth: using testing.B.Loop (#32657) 2025-09-19 17:00:29 -06:00
makeTest.js eth/tracers: refactor block context in test runner (#29450) 2025-02-20 15:04:35 +01:00
prestate_test.go eth/tracers: fix testcase 7702_delegate (#32349) 2025-08-27 21:40:55 +02:00
README.md eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
selfdestruct_state_test.go core: invoke selfdestruct tracer hooks during finalisation (#32919) 2026-01-16 15:10:08 -07:00
supply_test.go eth/tracers: fix supply tracer uncle accounting (#31882) 2025-08-26 15:44:16 +02:00
util.go eth/tracers: refactor block context in test runner (#29450) 2025-02-20 15:04:35 +01:00

Filling test cases

To fill test cases for the built-in tracers, the makeTest.js script can be used. Given a transaction on a dev/test network, makeTest.js will fetch its prestate and then traces with the given configuration. In the Geth console do:

let tx = '0x...'
loadScript('makeTest.js')
makeTest(tx, { tracer: 'callTracer' })