go-ethereum/core
Sina M 064f37d6f6
eth/tracers: live chain tracing with hooks (#29189)
Here we add a Go API for running tracing plugins within the main block import process. 

As an advanced user of geth, you can now create a Go file in eth/tracers/live/, and within
that file register your custom tracer implementation. Then recompile geth and select your tracer
on the command line. Hooks defined in the tracer will run whenever a block is processed.

The hook system is defined in package core/tracing. It uses a struct with callbacks, instead of 
requiring an interface, for several reasons:

- We plan to keep this API stable long-term. The core/tracing hook API does not depend on
  on deep geth internals.
- There are a lot of hooks, and tracers will only need some of them. Using a struct allows you
   to implement only the hooks you want to actually use.

All existing tracers in eth/tracers/native have been rewritten to use the new hook system.

This change breaks compatibility with the vm.EVMLogger interface that we used to have.
If you are a user of vm.EVMLogger, please migrate to core/tracing, and sorry for breaking
your stuff. But we just couldn't have both the old and new tracing APIs coexist in the EVM.

---------

Co-authored-by: Matthieu Vachon <matthieu.o.vachon@gmail.com>
Co-authored-by: Delweng <delweng@gmail.com>
Co-authored-by: Martin HS <martin@swende.se>
2024-03-22 18:53:53 +01:00
..
asm core/asm: minor code-clarification (#29293) 2024-03-20 08:46:50 +01:00
bloombits core: fix typos (#28218) 2023-09-29 10:52:22 +03:00
forkid params, core/forkid: add mainnet timestamp for Cancun (#28958) 2024-02-08 19:36:38 +01:00
rawdb all: fix typos (#29288) 2024-03-20 08:49:38 +01:00
state eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
tracing eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
txpool eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
types crypto/kz4844: pass blobs by ref (#29050) 2024-03-13 07:51:46 +01:00
vm eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
.gitignore
bench_test.go core: move genesis alloc types to core/types (#29003) 2024-02-16 19:05:33 +01:00
block_validator_test.go consensus, cmd, core, eth: remove support for non-merge mode of operation (#29169) 2024-03-05 16:13:28 +02:00
block_validator.go core/types: support for optional blob sidecar in BlobTx (#27841) 2023-08-14 10:13:34 +02:00
blockchain_insert.go consensus, cmd, core, eth: remove support for non-merge mode of operation (#29169) 2024-03-05 16:13:28 +02:00
blockchain_reader.go all: remove the dependency from trie to triedb (#28824) 2024-02-13 14:49:53 +01:00
blockchain_repair_test.go cmd: use package filepath over path for file system operations (#29227) 2024-03-12 10:00:34 +01:00
blockchain_sethead_test.go core: use finalized block as the chain freeze indicator (#28683) 2024-03-04 16:25:53 +02:00
blockchain_snapshot_test.go cmd: use package filepath over path for file system operations (#29227) 2024-03-12 10:00:34 +01:00
blockchain_test.go eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
blockchain.go eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
blocks.go core: typos and comments improve 2017-05-25 17:14:33 +03:00
bloom_indexer.go core: preallocate batch size in bloomIndexer (#25289) 2022-08-03 17:02:09 +02:00
chain_indexer_test.go core: fix potential race in chainIndexerTest (#22346) 2021-03-19 13:32:57 +01:00
chain_indexer.go core,console: replace noarg fmt.Errorf with errors.New (#27332) 2023-05-25 08:24:09 -04:00
chain_makers_test.go params: use the same variable name as EIP-4788 (#29195) 2024-03-15 09:14:31 +01:00
chain_makers.go core: refactor consensus interface (#29283) 2024-03-20 14:58:47 +01:00
dao_test.go all: activate pbss as experimental feature (#26274) 2023-08-10 22:21:36 +03:00
error.go internal/ethapi: handle blobs in API methods (#28786) 2024-01-17 15:06:14 +01:00
events.go eth/filters: remove use of event.TypeMux for pending logs (#20312) 2019-12-10 12:39:14 +01:00
evm.go eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
forkchoice.go core: clarify code in forkchoice (#26257) 2022-11-28 11:07:25 +01: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 core: move genesis alloc types to core/types (#29003) 2024-02-16 19:05:33 +01: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 core: move genesis alloc types to core/types (#29003) 2024-02-16 19:05:33 +01:00
genesis.go eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
headerchain_test.go all: remove the dependency from trie to triedb (#28824) 2024-02-13 14:49:53 +01:00
headerchain.go all: remove ethash pow, only retain shims needed for consensus and tests (#27178) 2023-05-03 12:58:39 +03:00
mkalloc.go cmd, core, params: add support for the Holesky testnet (#28007) 2023-08-25 18:11:40 +03:00
rlp_test.go core: move genesis alloc types to core/types (#29003) 2024-02-16 19:05:33 +01:00
sender_cacher.go all: refactor txpool into it's own package in prep for 4844 2022-10-24 16:35:53 +03:00
state_prefetcher.go core/types, params: add blob transaction type, RLP encoded for now (#27049) 2023-04-21 12:52:02 +03:00
state_processor_test.go core: move genesis alloc types to core/types (#29003) 2024-02-16 19:05:33 +01:00
state_processor.go eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
state_transition.go eth/tracers: live chain tracing with hooks (#29189) 2024-03-22 18:53:53 +01:00
txindexer_test.go core: move genesis alloc types to core/types (#29003) 2024-02-16 19:05:33 +01:00
txindexer.go core: cache transaction indexing tail in memory (#28908) 2024-02-06 10:44:42 +08:00
types.go core: use atomic type (#27011) 2023-03-30 06:53:32 -04:00