From 51b7dcbac7226e748b711ced1920bcf11b326577 Mon Sep 17 00:00:00 2001 From: Martin Paulucci Date: Fri, 21 Feb 2025 19:57:41 +0100 Subject: [PATCH] refactor(l1): cleanup storage crate. (#2049) **Motivation** Prepare the ground to divide the store into multiple stores (state, history, etc) **Description** - Created `lib.rs` file that exposed the modules to the outside world. - Renamed `engines` to `store_db` to be more aligned with `trie_db` - Renamed `storage.rs` to `store.rs` --- crates/storage/store/Cargo.toml | 2 +- crates/storage/store/{engines => }/api.rs | 2 +- crates/storage/store/lib.rs | 13 ++++++++ crates/storage/store/{storage.rs => store.rs} | 18 +++++------ .../store/{engines => store_db}/in_memory.rs | 8 +++-- .../store/{engines => store_db}/libmdbx.rs | 6 ++-- .../store/{engines.rs => store_db/mod.rs} | 2 -- .../store/{engines => store_db}/redb.rs | 31 ++++++++----------- crates/storage/store/{engines => }/utils.rs | 0 9 files changed, 43 insertions(+), 39 deletions(-) rename crates/storage/store/{engines => }/api.rs (99%) create mode 100644 crates/storage/store/lib.rs rename crates/storage/store/{storage.rs => store.rs} (99%) rename crates/storage/store/{engines => store_db}/in_memory.rs (99%) rename crates/storage/store/{engines => store_db}/libmdbx.rs (99%) rename crates/storage/store/{engines.rs => store_db/mod.rs} (81%) rename crates/storage/store/{engines => store_db}/redb.rs (99%) rename crates/storage/store/{engines => }/utils.rs (100%) diff --git a/crates/storage/store/Cargo.toml b/crates/storage/store/Cargo.toml index f19bd16b2f..fcace9632b 100644 --- a/crates/storage/store/Cargo.toml +++ b/crates/storage/store/Cargo.toml @@ -33,4 +33,4 @@ hex-literal.workspace = true tempdir = "0.3.7" [lib] -path = "./storage.rs" +path = "./lib.rs" diff --git a/crates/storage/store/engines/api.rs b/crates/storage/store/api.rs similarity index 99% rename from crates/storage/store/engines/api.rs rename to crates/storage/store/api.rs index 18f265b1d8..a0f2a075ee 100644 --- a/crates/storage/store/engines/api.rs +++ b/crates/storage/store/api.rs @@ -6,7 +6,7 @@ use ethrex_common::types::{ }; use std::{fmt::Debug, panic::RefUnwindSafe}; -use crate::{error::StoreError, STATE_TRIE_SEGMENTS}; +use crate::{error::StoreError, store::STATE_TRIE_SEGMENTS}; use ethrex_trie::{Nibbles, Trie}; pub trait StoreEngine: Debug + Send + Sync + RefUnwindSafe { diff --git a/crates/storage/store/lib.rs b/crates/storage/store/lib.rs new file mode 100644 index 0000000000..c843af80fa --- /dev/null +++ b/crates/storage/store/lib.rs @@ -0,0 +1,13 @@ +mod api; + +mod rlp; +mod store; +mod store_db; +mod trie_db; +mod utils; + +pub mod error; +pub use store::{ + hash_address, hash_key, AccountUpdate, EngineType, Store, MAX_SNAPSHOT_READS, + STATE_TRIE_SEGMENTS, +}; diff --git a/crates/storage/store/storage.rs b/crates/storage/store/store.rs similarity index 99% rename from crates/storage/store/storage.rs rename to crates/storage/store/store.rs index f23116f915..5f9ce66346 100644 --- a/crates/storage/store/storage.rs +++ b/crates/storage/store/store.rs @@ -1,11 +1,12 @@ -use self::engines::in_memory::Store as InMemoryStore; +use crate::api::StoreEngine; +use crate::error::StoreError; +use crate::store_db::in_memory::Store as InMemoryStore; #[cfg(feature = "libmdbx")] -use self::engines::libmdbx::Store as LibmdbxStore; -use self::error::StoreError; -use bytes::Bytes; -use engines::api::StoreEngine; +use crate::store_db::libmdbx::Store as LibmdbxStore; #[cfg(feature = "redb")] -use engines::redb::RedBStore; +use crate::store_db::redb::RedBStore; +use bytes::Bytes; + use ethereum_types::{Address, H256, U256}; use ethrex_common::types::{ code_hash, AccountInfo, AccountState, BlobsBundle, Block, BlockBody, BlockHash, BlockHeader, @@ -22,11 +23,6 @@ use std::fmt::Debug; use std::sync::{Arc, Mutex}; use tracing::info; -mod engines; -pub mod error; -mod rlp; -mod trie_db; - /// Number of state trie segments to fetch concurrently during state sync pub const STATE_TRIE_SEGMENTS: usize = 2; // Maximum amount of reads from the snapshot in a single transaction to avoid performance hits due to long-living reads diff --git a/crates/storage/store/engines/in_memory.rs b/crates/storage/store/store_db/in_memory.rs similarity index 99% rename from crates/storage/store/engines/in_memory.rs rename to crates/storage/store/store_db/in_memory.rs index 834e5c8d3d..081120ee7c 100644 --- a/crates/storage/store/engines/in_memory.rs +++ b/crates/storage/store/store_db/in_memory.rs @@ -1,4 +1,8 @@ -use crate::{error::StoreError, MAX_SNAPSHOT_READS, STATE_TRIE_SEGMENTS}; +use crate::{ + api::StoreEngine, + error::StoreError, + store::{MAX_SNAPSHOT_READS, STATE_TRIE_SEGMENTS}, +}; use bytes::Bytes; use ethereum_types::{H256, U256}; use ethrex_common::types::{ @@ -12,8 +16,6 @@ use std::{ sync::{Arc, Mutex, MutexGuard}, }; -use super::api::StoreEngine; - pub type NodeMap = Arc, Vec>>>; #[derive(Default, Clone)] diff --git a/crates/storage/store/engines/libmdbx.rs b/crates/storage/store/store_db/libmdbx.rs similarity index 99% rename from crates/storage/store/engines/libmdbx.rs rename to crates/storage/store/store_db/libmdbx.rs index 44dc9ac7f8..96c1342e67 100644 --- a/crates/storage/store/engines/libmdbx.rs +++ b/crates/storage/store/store_db/libmdbx.rs @@ -1,14 +1,14 @@ -use super::api::StoreEngine; -use super::utils::{ChainDataIndex, SnapStateIndex}; +use crate::api::StoreEngine; use crate::error::StoreError; use crate::rlp::{ AccountCodeHashRLP, AccountCodeRLP, AccountHashRLP, AccountStateRLP, BlockBodyRLP, BlockHashRLP, BlockHeaderRLP, BlockRLP, BlockTotalDifficultyRLP, ReceiptRLP, Rlp, TransactionHashRLP, TupleRLP, }; +use crate::store::{MAX_SNAPSHOT_READS, STATE_TRIE_SEGMENTS}; use crate::trie_db::libmdbx::LibmdbxTrieDB; use crate::trie_db::libmdbx_dupsort::LibmdbxDupsortTrieDB; -use crate::{MAX_SNAPSHOT_READS, STATE_TRIE_SEGMENTS}; +use crate::utils::{ChainDataIndex, SnapStateIndex}; use anyhow::Result; use bytes::Bytes; use ethereum_types::{H256, U256}; diff --git a/crates/storage/store/engines.rs b/crates/storage/store/store_db/mod.rs similarity index 81% rename from crates/storage/store/engines.rs rename to crates/storage/store/store_db/mod.rs index 1687904e8b..3da3effdfa 100644 --- a/crates/storage/store/engines.rs +++ b/crates/storage/store/store_db/mod.rs @@ -1,7 +1,5 @@ -pub mod api; pub mod in_memory; #[cfg(feature = "libmdbx")] pub mod libmdbx; #[cfg(feature = "redb")] pub mod redb; -mod utils; diff --git a/crates/storage/store/engines/redb.rs b/crates/storage/store/store_db/redb.rs similarity index 99% rename from crates/storage/store/engines/redb.rs rename to crates/storage/store/store_db/redb.rs index dc49d872ab..464d01be10 100644 --- a/crates/storage/store/engines/redb.rs +++ b/crates/storage/store/store_db/redb.rs @@ -1,21 +1,10 @@ use std::{borrow::Borrow, panic::RefUnwindSafe, sync::Arc}; -use ethrex_common::types::{AccountState, BlockBody}; -use ethrex_common::{ - types::{BlobsBundle, Block, BlockHash, BlockHeader, BlockNumber, ChainConfig, Index, Receipt}, - H256, U256, -}; -use ethrex_rlp::decode::RLPDecode; -use ethrex_rlp::encode::RLPEncode; -use ethrex_rlp::error::RLPDecodeError; -use ethrex_trie::Nibbles; - -use redb::{AccessGuard, Database, Key, MultimapTableDefinition, TableDefinition, TypeName, Value}; - use crate::rlp::{ AccountHashRLP, AccountStateRLP, BlockRLP, BlockTotalDifficultyRLP, Rlp, TransactionHashRLP, }; -use crate::MAX_SNAPSHOT_READS; +use crate::store::MAX_SNAPSHOT_READS; +use crate::trie_db::{redb::RedBTrie, redb_multitable::RedBMultiTableTrieDB}; use crate::{ error::StoreError, rlp::{ @@ -23,13 +12,19 @@ use crate::{ TupleRLP, }, }; -use crate::{ - trie_db::{redb::RedBTrie, redb_multitable::RedBMultiTableTrieDB}, - Trie, +use ethrex_common::types::{AccountState, BlockBody}; +use ethrex_common::{ + types::{BlobsBundle, Block, BlockHash, BlockHeader, BlockNumber, ChainConfig, Index, Receipt}, + H256, U256, }; +use ethrex_rlp::decode::RLPDecode; +use ethrex_rlp::encode::RLPEncode; +use ethrex_rlp::error::RLPDecodeError; +use ethrex_trie::{Nibbles, Trie}; +use redb::{AccessGuard, Database, Key, MultimapTableDefinition, TableDefinition, TypeName, Value}; -use super::utils::SnapStateIndex; -use super::{api::StoreEngine, utils::ChainDataIndex}; +use crate::utils::SnapStateIndex; +use crate::{api::StoreEngine, utils::ChainDataIndex}; const STATE_TRIE_NODES_TABLE: TableDefinition<&[u8], &[u8]> = TableDefinition::new("StateTrieNodes"); diff --git a/crates/storage/store/engines/utils.rs b/crates/storage/store/utils.rs similarity index 100% rename from crates/storage/store/engines/utils.rs rename to crates/storage/store/utils.rs