From 058c55cd8cb78fa3aee97ad89cb39944df5d528b Mon Sep 17 00:00:00 2001 From: Roman Krasiuk Date: Wed, 9 Aug 2023 14:25:55 +0300 Subject: [PATCH] fix(trie): include destroyed accounts in account prefix set (#4126) --- Cargo.lock | 92 +++++++++---------- .../src/providers/database/provider.rs | 5 +- 2 files changed, 48 insertions(+), 49 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 984cb8c1a0e1..65fe6644c353 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1131,7 +1131,7 @@ checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" [[package]] name = "codecs-derive" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "convert_case 0.6.0", "parity-scale-codec", @@ -1930,7 +1930,7 @@ dependencies = [ [[package]] name = "ef-tests" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "reth-db", "reth-interfaces", @@ -5218,7 +5218,7 @@ dependencies = [ [[package]] name = "reth" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "backon", "clap", @@ -5288,7 +5288,7 @@ dependencies = [ [[package]] name = "reth-auto-seal-consensus" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "futures-util", "reth-beacon-consensus", @@ -5305,7 +5305,7 @@ dependencies = [ [[package]] name = "reth-basic-payload-builder" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "futures-core", "futures-util", @@ -5324,7 +5324,7 @@ dependencies = [ [[package]] name = "reth-beacon-consensus" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "assert_matches", "futures", @@ -5352,7 +5352,7 @@ dependencies = [ [[package]] name = "reth-blockchain-tree" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "aquamarine", "assert_matches", @@ -5371,7 +5371,7 @@ dependencies = [ [[package]] name = "reth-codecs" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "arbitrary", "bytes", @@ -5386,7 +5386,7 @@ dependencies = [ [[package]] name = "reth-config" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "confy", "reth-discv4", @@ -5403,7 +5403,7 @@ dependencies = [ [[package]] name = "reth-consensus-common" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "assert_matches", "mockall", @@ -5414,7 +5414,7 @@ dependencies = [ [[package]] name = "reth-db" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "arbitrary", "assert_matches", @@ -5455,7 +5455,7 @@ dependencies = [ [[package]] name = "reth-discv4" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "discv5", "enr 0.8.1", @@ -5478,7 +5478,7 @@ dependencies = [ [[package]] name = "reth-dns-discovery" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "async-trait", "data-encoding", @@ -5502,7 +5502,7 @@ dependencies = [ [[package]] name = "reth-downloaders" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "assert_matches", "futures", @@ -5527,7 +5527,7 @@ dependencies = [ [[package]] name = "reth-ecies" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "aes 0.8.3", "block-padding", @@ -5558,7 +5558,7 @@ dependencies = [ [[package]] name = "reth-eth-wire" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "arbitrary", "async-trait", @@ -5591,7 +5591,7 @@ dependencies = [ [[package]] name = "reth-interfaces" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "arbitrary", "async-trait", @@ -5619,7 +5619,7 @@ dependencies = [ [[package]] name = "reth-ipc" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "async-trait", "bytes", @@ -5638,7 +5638,7 @@ dependencies = [ [[package]] name = "reth-libmdbx" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "bitflags 2.3.3", "byteorder", @@ -5658,7 +5658,7 @@ dependencies = [ [[package]] name = "reth-mdbx-sys" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "bindgen 0.65.1", "cc", @@ -5667,7 +5667,7 @@ dependencies = [ [[package]] name = "reth-metrics" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "futures", "metrics 0.20.1", @@ -5677,7 +5677,7 @@ dependencies = [ [[package]] name = "reth-metrics-derive" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "metrics 0.20.1", "once_cell", @@ -5691,7 +5691,7 @@ dependencies = [ [[package]] name = "reth-net-common" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "pin-project", "reth-primitives", @@ -5700,7 +5700,7 @@ dependencies = [ [[package]] name = "reth-net-nat" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "igd", "pin-project-lite", @@ -5714,7 +5714,7 @@ dependencies = [ [[package]] name = "reth-network" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "aquamarine", "async-trait", @@ -5764,7 +5764,7 @@ dependencies = [ [[package]] name = "reth-network-api" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "async-trait", "reth-eth-wire", @@ -5777,7 +5777,7 @@ dependencies = [ [[package]] name = "reth-payload-builder" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "futures-util", "reth-interfaces", @@ -5796,7 +5796,7 @@ dependencies = [ [[package]] name = "reth-primitives" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "arbitrary", "assert_matches", @@ -5845,7 +5845,7 @@ dependencies = [ [[package]] name = "reth-provider" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "auto_impl", "derive_more", @@ -5866,7 +5866,7 @@ dependencies = [ [[package]] name = "reth-prune" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "assert_matches", "itertools 0.11.0", @@ -5883,7 +5883,7 @@ dependencies = [ [[package]] name = "reth-revm" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "once_cell", "reth-consensus-common", @@ -5899,7 +5899,7 @@ dependencies = [ [[package]] name = "reth-revm-inspectors" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "boa_engine", "boa_gc", @@ -5915,7 +5915,7 @@ dependencies = [ [[package]] name = "reth-revm-primitives" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "reth-primitives", "revm", @@ -5923,7 +5923,7 @@ dependencies = [ [[package]] name = "reth-rlp" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "arrayvec", "auto_impl", @@ -5942,7 +5942,7 @@ dependencies = [ [[package]] name = "reth-rlp-derive" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "proc-macro2 1.0.66", "quote 1.0.32", @@ -5951,7 +5951,7 @@ dependencies = [ [[package]] name = "reth-rpc" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "assert_matches", "async-trait", @@ -5998,7 +5998,7 @@ dependencies = [ [[package]] name = "reth-rpc-api" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "jsonrpsee", "reth-primitives", @@ -6008,7 +6008,7 @@ dependencies = [ [[package]] name = "reth-rpc-api-testing-util" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "async-trait", "futures", @@ -6022,7 +6022,7 @@ dependencies = [ [[package]] name = "reth-rpc-builder" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "hyper", "jsonrpsee", @@ -6053,7 +6053,7 @@ dependencies = [ [[package]] name = "reth-rpc-engine-api" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "assert_matches", "async-trait", @@ -6075,7 +6075,7 @@ dependencies = [ [[package]] name = "reth-rpc-types" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "itertools 0.11.0", "jsonrpsee-types", @@ -6090,7 +6090,7 @@ dependencies = [ [[package]] name = "reth-stages" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "aquamarine", "assert_matches", @@ -6126,7 +6126,7 @@ dependencies = [ [[package]] name = "reth-tasks" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "dyn-clone", "futures-util", @@ -6139,7 +6139,7 @@ dependencies = [ [[package]] name = "reth-tracing" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "tracing", "tracing-appender", @@ -6149,7 +6149,7 @@ dependencies = [ [[package]] name = "reth-transaction-pool" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "aquamarine", "assert_matches", @@ -6178,7 +6178,7 @@ dependencies = [ [[package]] name = "reth-trie" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "criterion", "derive_more", diff --git a/crates/storage/provider/src/providers/database/provider.rs b/crates/storage/provider/src/providers/database/provider.rs index 56d4c0f39233..5c9bedc41083 100644 --- a/crates/storage/provider/src/providers/database/provider.rs +++ b/crates/storage/provider/src/providers/database/provider.rs @@ -1435,9 +1435,8 @@ impl<'this, TX: DbTxMut<'this> + DbTx<'this>> HashingWriter for DatabaseProvider let accounts = self.basic_accounts(lists)?; let hashed_addresses = self.insert_account_for_hashing(accounts)?; for (hashed_address, account) in hashed_addresses { - if account.is_some() { - account_prefix_set.insert(Nibbles::unpack(hashed_address)); - } else { + account_prefix_set.insert(Nibbles::unpack(hashed_address)); + if account.is_none() { destroyed_accounts.insert(hashed_address); } }