go-ethereum/core/rawdb
minh-bq 68de26e346
core/types: create block's bloom by merging receipts' bloom (#31129)
Currently, when calculating block's bloom, we loop through all the
receipt logs to calculate the hash value. However, normally, after going
through applyTransaction, the receipt's bloom is already calculated
based on the receipt log, so the block's bloom can be calculated by just
ORing these receipt's blooms.
```
goos: darwin
goarch: arm64
pkg: github.com/ethereum/go-ethereum/core/types
cpu: Apple M1 Pro
BenchmarkCreateBloom
BenchmarkCreateBloom/small
BenchmarkCreateBloom/small-10             810922              1481 ns/op             104 B/op          5 allocs/op
BenchmarkCreateBloom/large
BenchmarkCreateBloom/large-10               8173            143764 ns/op            9614 B/op        401 allocs/op
BenchmarkCreateBloom/small-mergebloom
BenchmarkCreateBloom/small-mergebloom-10                 5178918               232.0 ns/op             0 B/op          0 allocs/op
BenchmarkCreateBloom/large-mergebloom
BenchmarkCreateBloom/large-mergebloom-10                   54110             22207 ns/op               0 B/op          0 allocs/op
```

---------

Co-authored-by: Gary Rong <garyrong0905@gmail.com>
Co-authored-by: Zsolt Felfoldi <zsfelfoldi@gmail.com>
2025-02-13 18:05:58 +01:00
..
ancienttest core/rawdb: implement in-memory freezer (#29135) 2024-04-30 11:33:22 +02:00
testdata core/rawdb: avoid unnecessary receipt processing for log filtering (#23147) 2021-09-28 12:54:49 +02:00
accessors_chain.go params,core: add max and target value to chain config (#31002) 2025-02-04 15:43:18 +01:00
accessors_chain_test.go core/types: create block's bloom by merging receipts' bloom (#31129) 2025-02-13 18:05:58 +01:00
accessors_indexes.go core/types, params: add blob transaction type, RLP encoded for now (#27049) 2023-04-21 12:52:02 +03:00
accessors_indexes_test.go ethdb: refactor Database interface (#30693) 2024-10-29 10:32:40 +02:00
accessors_metadata.go Revert "core/rawdb: remove unused transition status state accessors" (#30449) 2024-09-18 11:53:50 +03:00
accessors_snapshot.go all: fix various typos (#29542) 2024-04-16 15:44:00 +03:00
accessors_state.go all: implement path-based state scheme (#25963) 2023-08-01 15:17:32 +03:00
accessors_sync.go core, accounts, eth, trie: handle genesis state missing (#28171) 2023-09-28 10:00:53 +03:00
accessors_trie.go all: update license comments and AUTHORS (#31133) 2025-02-05 23:01:17 +01:00
ancient_scheme.go core/rawdb: introduce flush offset in freezer (#30392) 2025-02-04 11:45:45 +01:00
ancient_utils.go core/rawdb, triedb, cmd: create an isolated disk namespace for verkle (#30105) 2024-07-16 16:17:58 +03:00
chain_freezer.go all: nuke total difficulty (#30744) 2025-01-28 18:55:41 +01:00
chain_iterator.go core, core/rawdb, eth/sync: no tx indexing during snap sync (#28703) 2024-01-22 21:05:18 +01:00
chain_iterator_test.go all: refactor so `NewBlock`, `WithBody` take `types.Body` (#29482) 2024-04-30 14:55:08 +02:00
database.go all: nuke total difficulty (#30744) 2025-01-28 18:55:41 +01:00
database_test.go all: update license headers and AUTHORS from git history (#24947) 2022-05-24 20:39:40 +02:00
freezer.go core/rawdb: fix panic in freezer (#30973) 2025-01-06 14:52:01 +08:00
freezer_batch.go core/rawdb: introduce flush offset in freezer (#30392) 2025-02-04 11:45:45 +01:00
freezer_memory.go ethdb: refactor Database interface (#30693) 2024-10-29 10:32:40 +02:00
freezer_memory_test.go core/rawdb: implement in-memory freezer (#29135) 2024-04-30 11:33:22 +02:00
freezer_meta.go core/rawdb: introduce flush offset in freezer (#30392) 2025-02-04 11:45:45 +01:00
freezer_meta_test.go core/rawdb: introduce flush offset in freezer (#30392) 2025-02-04 11:45:45 +01:00
freezer_resettable.go ethdb: refactor Database interface (#30693) 2024-10-29 10:32:40 +02:00
freezer_resettable_test.go core/rawdb: implement in-memory freezer (#29135) 2024-04-30 11:33:22 +02:00
freezer_table.go core/rawdb: skip setting flushOffset in read-only mode (#31173) 2025-02-13 14:48:03 +01:00
freezer_table_test.go core/rawdb: introduce flush offset in freezer (#30392) 2025-02-04 11:45:45 +01:00
freezer_test.go core/rawdb: drop MigrateTable (#30331) 2024-08-20 14:06:00 +02:00
freezer_utils.go core/rawdb: fsync the index file after each freezer write (#28483) 2023-11-10 12:56:39 +02:00
freezer_utils_test.go all: more linters (#24783) 2022-06-13 16:24:45 +02:00
key_length_iterator.go core/rawdb: add specified key length iterator (#24535) 2022-03-15 10:28:26 +02:00
key_length_iterator_test.go core/rawdb: add specified key length iterator (#24535) 2022-03-15 10:28:26 +02:00
schema.go all: nuke total difficulty (#30744) 2025-01-28 18:55:41 +01:00
table.go ethdb: add DeleteRange feature (#30668) 2024-10-25 17:33:46 +02:00
table_test.go all: simplify and fix database iteration with prefix/start (#20808) 2020-04-15 14:08:53 +03:00