go-ethereum/core
Sina Mahmoodi 2def62b99b
eth/filters: avoid block body retrieval when no matching logs (#25199)
Logs stored on disk have minimal information. Contextual information such as block
number, index of log in block, index of transaction in block are filled in upon request.
We can fill in all these fields only having the block header and list of receipts.
But determining the transaction hash of a log requires the block body.

The goal of this PR is postponing this retrieval until we are sure we the transaction hash.
It happens often that the header bloom filter signals there might be matches in a block,
but after actually checking them reveals the logs do not match. We want to avoid fetching
the body in this case.

Note that this changes the semantics of Backend.GetLogs. Downstream callers of
GetLogs now assume log context fields have not been derived, and need to call
DeriveFields on the logs if necessary.
2023-02-13 10:59:27 +01:00
..
asm all: change format `0x%x` to `%#x` (#25221) 2022-07-04 11:03:32 +03:00
bloombits all: fix spelling mistakes (#25961) 2022-10-11 09:37:00 +02:00
forkid params: schedule shanghai fork on sepolia (#26662) 2023-02-10 13:34:45 +02:00
rawdb eth/filters: avoid block body retrieval when no matching logs (#25199) 2023-02-13 10:59:27 +01:00
state core/state, trie: remove unused error-return from trie Commit operation (#26641) 2023-02-09 08:56:59 -05:00
txpool common/prque: generic priority queue (#26290) 2023-02-09 13:03:54 +02:00
types all: implement withdrawals (EIP-4895) (#26484) 2023-01-25 15:32:25 +01:00
vm core/vm: set tracer-observable `value` of a delegatecall to match parent `value` (#26632) 2023-02-10 10:26:43 +01:00
.gitignore Renamed `chain` => `core` 2014-12-04 10:28:02 +01:00
bench_test.go core/vm: implement EIP-3860: Limit and meter initcode (#23847) 2023-01-11 04:05:47 -05:00
block_validator.go tests: update (#26548) 2023-02-06 14:52:51 -05:00
block_validator_test.go tests: update tests (#26314) 2022-12-20 09:56:52 -05:00
blockchain.go common/prque: generic priority queue (#26290) 2023-02-09 13:03:54 +02:00
blockchain_insert.go core: fix log order in "Imported new chain segment" (#25768) 2022-09-15 13:18:23 +02:00
blockchain_reader.go core, eth, les, tests, trie: abstract node scheme (#25532) 2022-11-28 14:31:28 +01:00
blockchain_repair_test.go ethdb: pebble backend (64bit platforms only) (#26517) 2023-02-09 10:48:34 +02:00
blockchain_sethead_test.go ethdb: pebble backend (64bit platforms only) (#26517) 2023-02-09 10:48:34 +02:00
blockchain_snapshot_test.go ethdb: pebble backend (64bit platforms only) (#26517) 2023-02-09 10:48:34 +02:00
blockchain_test.go all: remove support for Ropsten (#26644) 2023-02-09 10:03:00 +02: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.go all: make logs a bit easier on the eye to digest (#22665) 2021-04-15 20:35:00 +03:00
chain_indexer_test.go core: fix potential race in chainIndexerTest (#22346) 2021-03-19 13:32:57 +01:00
chain_makers.go all: remove database commit callback, rework noderesolver (#26637) 2023-02-08 06:14:34 -05:00
chain_makers_test.go all: move genesis initialization to blockchain (#25523) 2022-08-30 18:22:28 +02:00
dao_test.go all: remove database commit callback, rework noderesolver (#26637) 2023-02-08 06:14:34 -05:00
error.go core/vm: implement EIP-3860: Limit and meter initcode (#23847) 2023-01-11 04:05:47 -05:00
events.go eth/filters: remove use of event.TypeMux for pending logs (#20312) 2019-12-10 12:39:14 +01:00
evm.go all: make timestamp-based fork checks based on uint64 (#26474) 2023-01-25 12:12:28 +01:00
forkchoice.go core: clarify code in forkchoice (#26257) 2022-11-28 11:07:25 +01:00
gaspool.go miner: avoid unnecessary work (#15883) 2018-01-15 12:57:06 +02:00
gen_genesis.go core: change baseFee into baseFeePerGas in genesis json 2021-06-14 14:04:44 +02:00
gen_genesis_account.go tests: update for London (#22976) 2021-06-07 14:37:56 +02:00
genesis.go all: remove support for Ropsten (#26644) 2023-02-09 10:03:00 +02:00
genesis_alloc.go all: remove support for Ropsten (#26644) 2023-02-09 10:03:00 +02:00
genesis_test.go all: remove support for Ropsten (#26644) 2023-02-09 10:03:00 +02:00
headerchain.go cmd, core, eth, els, params: disallow setheads below genesis, tweaks 2023-01-06 15:29:58 +02:00
headerchain_test.go core, eth, les, tests, trie: abstract node scheme (#25532) 2022-11-28 14:31:28 +01:00
mkalloc.go build: upgrade to go 1.19 (#25726) 2022-09-10 13:25:40 +02:00
rlp_test.go all: cleanup tests (#25641) 2022-09-07 20:21:59 +02: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 all: implement EIP-1153 transient storage (#26003) 2022-11-16 10:18:52 +01:00
state_processor.go all: implement withdrawals (EIP-4895) (#26484) 2023-01-25 15:32:25 +01:00
state_processor_test.go tests: update (#26548) 2023-02-06 14:52:51 -05:00
state_transition.go core/vm: implement EIP-3860: Limit and meter initcode (#23847) 2023-01-11 04:05:47 -05:00
types.go core: prefetch next block state concurrently 2019-04-01 11:06:15 +03:00