diff --git a/Cargo.lock b/Cargo.lock index d25c100d4bb..05916ae26d0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4061,6 +4061,7 @@ dependencies = [ "hex", "hex-literal", "rocksdb", + "rustc-hash 2.1.1", "serde", "serde_json", "sha3", diff --git a/Cargo.toml b/Cargo.toml index 842476811f1..d86c3574955 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -99,6 +99,7 @@ tokio-util = { version = "0.7.15", features = ["rt"] } jsonwebtoken = "9.3.0" rand = "0.8.5" reqwest = { version = "0.12.7", features = ["socks", "json"] } +rustc-hash = "2.1.1" snap = "1.1.1" secp256k1 = { version = "0.30.0", default-features = false, features = [ "global-context", diff --git a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock index e40a125d9ce..8e8c96b1bb5 100644 --- a/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/risc0/Cargo.lock @@ -1324,6 +1324,7 @@ dependencies = [ "ethrex-rlp", "ethrex-trie", "hex", + "rustc-hash", "serde", "serde_json", "sha3", @@ -3056,6 +3057,12 @@ version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + [[package]] name = "rustc-hex" version = "2.1.0" diff --git a/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock b/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock index 916487d932d..cedd71882f5 100644 --- a/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/sp1/Cargo.lock @@ -1103,6 +1103,7 @@ dependencies = [ "ethrex-rlp", "ethrex-trie", "hex", + "rustc-hash", "serde", "serde_json", "sha3", @@ -2462,6 +2463,12 @@ version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + [[package]] name = "rustc-hex" version = "2.1.0" diff --git a/crates/l2/tee/quote-gen/Cargo.lock b/crates/l2/tee/quote-gen/Cargo.lock index 831510407cb..986932028c6 100644 --- a/crates/l2/tee/quote-gen/Cargo.lock +++ b/crates/l2/tee/quote-gen/Cargo.lock @@ -2071,7 +2071,7 @@ dependencies = [ [[package]] name = "ethrex-blockchain" -version = "4.0.0" +version = "5.0.0" dependencies = [ "bytes", "ethrex-common", @@ -2089,7 +2089,7 @@ dependencies = [ [[package]] name = "ethrex-common" -version = "4.0.0" +version = "5.0.0" dependencies = [ "bytes", "crc32fast", @@ -2117,7 +2117,7 @@ dependencies = [ [[package]] name = "ethrex-config" -version = "4.0.0" +version = "5.0.0" dependencies = [ "ethrex-common", "ethrex-p2p", @@ -2128,7 +2128,7 @@ dependencies = [ [[package]] name = "ethrex-crypto" -version = "4.0.0" +version = "5.0.0" dependencies = [ "c-kzg", "kzg-rs", @@ -2137,7 +2137,7 @@ dependencies = [ [[package]] name = "ethrex-dev" -version = "4.0.0" +version = "5.0.0" dependencies = [ "bytes", "envy", @@ -2156,7 +2156,7 @@ dependencies = [ [[package]] name = "ethrex-l2" -version = "4.0.0" +version = "5.0.0" dependencies = [ "aligned-sdk", "axum", @@ -2213,7 +2213,7 @@ dependencies = [ [[package]] name = "ethrex-l2-common" -version = "4.0.0" +version = "5.0.0" dependencies = [ "bytes", "ethereum-types 0.15.1", @@ -2233,7 +2233,7 @@ dependencies = [ [[package]] name = "ethrex-l2-rpc" -version = "4.0.0" +version = "5.0.0" dependencies = [ "axum", "bytes", @@ -2262,7 +2262,7 @@ dependencies = [ [[package]] name = "ethrex-levm" -version = "4.0.0" +version = "5.0.0" dependencies = [ "ark-bn254", "ark-ec", @@ -2293,7 +2293,7 @@ dependencies = [ [[package]] name = "ethrex-metrics" -version = "4.0.0" +version = "5.0.0" dependencies = [ "ethrex-common", "serde", @@ -2304,7 +2304,7 @@ dependencies = [ [[package]] name = "ethrex-p2p" -version = "4.0.0" +version = "5.0.0" dependencies = [ "aes", "async-trait", @@ -2345,7 +2345,7 @@ dependencies = [ [[package]] name = "ethrex-rlp" -version = "4.0.0" +version = "5.0.0" dependencies = [ "bytes", "ethereum-types 0.15.1", @@ -2358,7 +2358,7 @@ dependencies = [ [[package]] name = "ethrex-rpc" -version = "4.0.0" +version = "5.0.0" dependencies = [ "axum", "axum-extra", @@ -2392,7 +2392,7 @@ dependencies = [ [[package]] name = "ethrex-sdk" -version = "4.0.0" +version = "5.0.0" dependencies = [ "bytes", "ethereum-types 0.15.1", @@ -2417,7 +2417,7 @@ dependencies = [ [[package]] name = "ethrex-sdk-contract-utils" -version = "4.0.0" +version = "5.0.0" dependencies = [ "thiserror 2.0.16", "tracing", @@ -2425,7 +2425,7 @@ dependencies = [ [[package]] name = "ethrex-storage" -version = "4.0.0" +version = "5.0.0" dependencies = [ "anyhow", "async-trait", @@ -2436,6 +2436,7 @@ dependencies = [ "ethrex-rlp", "ethrex-trie", "hex", + "rustc-hash", "serde", "serde_json", "sha3", @@ -2445,7 +2446,7 @@ dependencies = [ [[package]] name = "ethrex-storage-rollup" -version = "4.0.0" +version = "5.0.0" dependencies = [ "anyhow", "async-trait", @@ -2471,7 +2472,7 @@ dependencies = [ [[package]] name = "ethrex-trie" -version = "4.0.0" +version = "5.0.0" dependencies = [ "anyhow", "bytes", @@ -2492,7 +2493,7 @@ dependencies = [ [[package]] name = "ethrex-vm" -version = "4.0.0" +version = "5.0.0" dependencies = [ "bincode", "bytes", @@ -2869,7 +2870,7 @@ dependencies = [ [[package]] name = "guest_program" -version = "4.0.0" +version = "5.0.0" dependencies = [ "bytes", "ethrex-blockchain", @@ -5212,6 +5213,12 @@ version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + [[package]] name = "rustc-hex" version = "2.1.0" diff --git a/crates/storage/Cargo.toml b/crates/storage/Cargo.toml index 508ee5866b7..0d1578150cf 100644 --- a/crates/storage/Cargo.toml +++ b/crates/storage/Cargo.toml @@ -23,6 +23,7 @@ hex.workspace = true serde = { version = "1.0.203", features = ["derive"] } serde_json = "1.0.117" rocksdb = { workspace = true, optional = true } +rustc-hash.workspace = true tokio = { workspace = true, optional = true, features = ["rt"] } bincode = "1.3.3" diff --git a/crates/storage/trie_db/layering.rs b/crates/storage/trie_db/layering.rs index 437a2aff1e7..a2356e8002e 100644 --- a/crates/storage/trie_db/layering.rs +++ b/crates/storage/trie_db/layering.rs @@ -1,12 +1,13 @@ use ethrex_common::H256; use ethrex_rlp::decode::RLPDecode; -use std::{collections::HashMap, sync::Arc, sync::RwLock}; +use rustc_hash::FxHashMap; +use std::{sync::Arc, sync::RwLock}; use ethrex_trie::{EMPTY_TRIE_HASH, Nibbles, Node, TrieDB, TrieError}; #[derive(Debug)] struct TrieLayer { - nodes: HashMap, Vec>, + nodes: FxHashMap, Vec>, parent: H256, id: usize, } @@ -16,7 +17,7 @@ pub struct TrieLayerCache { /// Monotonically increasing ID for layers, starting at 1. /// TODO: this implementation panics on overflow last_id: usize, - layers: HashMap, + layers: FxHashMap, } impl TrieLayerCache { @@ -74,7 +75,7 @@ impl TrieLayerCache { .or_insert_with(|| { self.last_id += 1; TrieLayer { - nodes: HashMap::new(), + nodes: FxHashMap::default(), parent, id: self.last_id, }