From 914fc51f234d9dca20bf446ccef8aed47bd0ad42 Mon Sep 17 00:00:00 2001 From: Ishika Choudhury <117741714+Rimeeeeee@users.noreply.github.com> Date: Mon, 24 Mar 2025 19:23:49 +0530 Subject: [PATCH] remove reth-primitives dep from reth-provider (#15203) Co-authored-by: Matthias Seitz --- Cargo.lock | 1 + crates/primitives-traits/src/lib.rs | 1 + crates/storage/provider/Cargo.toml | 6 +- crates/storage/provider/src/lib.rs | 4 +- .../src/providers/blockchain_provider.rs | 7 +- .../src/providers/bundle_state_provider.rs | 2 +- .../provider/src/providers/consistent.rs | 5 +- .../provider/src/providers/database/chain.rs | 9 +- .../provider/src/providers/database/mod.rs | 3 +- .../src/providers/database/provider.rs | 8 +- .../src/providers/state/historical.rs | 2 +- .../provider/src/providers/state/latest.rs | 2 +- .../provider/src/providers/state/macros.rs | 4 +- .../provider/src/providers/static_file/jar.rs | 4 +- .../src/providers/static_file/manager.rs | 14 +- .../src/providers/static_file/metrics.rs | 2 +- .../provider/src/providers/static_file/mod.rs | 3 +- .../src/providers/static_file/writer.rs | 5 +- .../storage/provider/src/test_utils/blocks.rs | 101 +++++++------- .../storage/provider/src/test_utils/mock.rs | 126 +++++++----------- crates/storage/provider/src/test_utils/mod.rs | 4 +- crates/storage/provider/src/traits/block.rs | 3 +- .../provider/src/traits/header_sync_gap.rs | 2 +- crates/storage/provider/src/writer/mod.rs | 7 +- reth-ethereum-primitives | 0 25 files changed, 146 insertions(+), 179 deletions(-) create mode 100644 reth-ethereum-primitives diff --git a/Cargo.lock b/Cargo.lock index b6fc460dd9..13202cdb6e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9194,6 +9194,7 @@ dependencies = [ "reth-primitives-traits", "reth-prune-types", "reth-stages-types", + "reth-static-file-types", "reth-storage-api", "reth-storage-errors", "reth-testing-utils", diff --git a/crates/primitives-traits/src/lib.rs b/crates/primitives-traits/src/lib.rs index 6007a1ef75..eb64a1d78b 100644 --- a/crates/primitives-traits/src/lib.rs +++ b/crates/primitives-traits/src/lib.rs @@ -90,6 +90,7 @@ pub use alloy_consensus::{ transaction::{Recovered, TransactionMeta}, ReceiptWithBloom, }; + pub use transaction::{ execute::FillTxEnv, signed::{FullSignedTx, SignedTransaction}, diff --git a/crates/storage/provider/Cargo.toml b/crates/storage/provider/Cargo.toml index c99e5d8f11..f4d63cc233 100644 --- a/crates/storage/provider/Cargo.toml +++ b/crates/storage/provider/Cargo.toml @@ -15,8 +15,8 @@ workspace = true # reth reth-chainspec.workspace = true reth-execution-types.workspace = true -reth-primitives = { workspace = true, features = ["reth-codec", "secp256k1"] } -reth-primitives-traits = { workspace = true, features = ["reth-codec"] } +reth-ethereum-primitives = { workspace = true, features = ["reth-codec"] } +reth-primitives-traits = { workspace = true, features = ["reth-codec", "secp256k1"] } reth-fs-util.workspace = true reth-errors.workspace = true reth-storage-errors.workspace = true @@ -33,7 +33,7 @@ reth-codecs.workspace = true reth-evm.workspace = true reth-chain-state.workspace = true reth-node-types.workspace = true - +reth-static-file-types.workspace = true # ethereum alloy-eips.workspace = true alloy-primitives.workspace = true diff --git a/crates/storage/provider/src/lib.rs b/crates/storage/provider/src/lib.rs index c35a2a6d9a..6c7826c82d 100644 --- a/crates/storage/provider/src/lib.rs +++ b/crates/storage/provider/src/lib.rs @@ -27,10 +27,12 @@ pub use providers::{ #[cfg(any(test, feature = "test-utils"))] /// Common test helpers for mocking the Provider. pub mod test_utils; - /// Re-export provider error. pub use reth_storage_errors::provider::{ProviderError, ProviderResult}; +pub use reth_static_file_types as static_file; +pub use static_file::StaticFileSegment; + pub use reth_execution_types::*; pub mod bundle_state; diff --git a/crates/storage/provider/src/providers/blockchain_provider.rs b/crates/storage/provider/src/providers/blockchain_provider.rs index e564e04c80..49e397023f 100644 --- a/crates/storage/provider/src/providers/blockchain_provider.rs +++ b/crates/storage/provider/src/providers/blockchain_provider.rs @@ -26,14 +26,13 @@ use reth_db_api::{ transaction::DbTx, Database, }; +use reth_ethereum_primitives::{Block, EthPrimitives, Receipt, TransactionSigned}; use reth_evm::{ConfigureEvm, EvmEnv}; use reth_execution_types::ExecutionOutcome; use reth_node_types::{BlockTy, HeaderTy, NodeTypesWithDB, ReceiptTy, TxTy}; -use reth_primitives::{ - Account, Block, EthPrimitives, NodePrimitives, Receipt, RecoveredBlock, SealedBlock, - SealedHeader, StorageEntry, TransactionSigned, +use reth_primitives_traits::{ + Account, BlockBody, NodePrimitives, RecoveredBlock, SealedBlock, SealedHeader, StorageEntry, }; -use reth_primitives_traits::BlockBody; use reth_prune_types::{PruneCheckpoint, PruneSegment}; use reth_stages_types::{StageCheckpoint, StageId}; use reth_storage_api::{ diff --git a/crates/storage/provider/src/providers/bundle_state_provider.rs b/crates/storage/provider/src/providers/bundle_state_provider.rs index 72cf6e6cf8..491e7c8943 100644 --- a/crates/storage/provider/src/providers/bundle_state_provider.rs +++ b/crates/storage/provider/src/providers/bundle_state_provider.rs @@ -2,7 +2,7 @@ use crate::{ AccountReader, BlockHashReader, ExecutionDataProvider, StateProvider, StateRootProvider, }; use alloy_primitives::{Address, BlockNumber, Bytes, B256}; -use reth_primitives::{Account, Bytecode}; +use reth_primitives_traits::{Account, Bytecode}; use reth_storage_api::{HashedPostStateProvider, StateProofProvider, StorageRootProvider}; use reth_storage_errors::provider::ProviderResult; use reth_trie::{ diff --git a/crates/storage/provider/src/providers/consistent.rs b/crates/storage/provider/src/providers/consistent.rs index aca717710a..121518720e 100644 --- a/crates/storage/provider/src/providers/consistent.rs +++ b/crates/storage/provider/src/providers/consistent.rs @@ -20,8 +20,9 @@ use reth_chainspec::{ChainInfo, EthereumHardforks}; use reth_db_api::models::{AccountBeforeTx, BlockNumberAddress, StoredBlockBodyIndices}; use reth_execution_types::{BundleStateInit, ExecutionOutcome, RevertsInit}; use reth_node_types::{BlockTy, HeaderTy, ReceiptTy, TxTy}; -use reth_primitives::{Account, RecoveredBlock, SealedBlock, SealedHeader, StorageEntry}; -use reth_primitives_traits::BlockBody; +use reth_primitives_traits::{ + Account, BlockBody, RecoveredBlock, SealedBlock, SealedHeader, StorageEntry, +}; use reth_prune_types::{PruneCheckpoint, PruneSegment}; use reth_stages_types::{StageCheckpoint, StageId}; use reth_storage_api::{ diff --git a/crates/storage/provider/src/providers/database/chain.rs b/crates/storage/provider/src/providers/database/chain.rs index f9cb8749ba..9d0e0158a5 100644 --- a/crates/storage/provider/src/providers/database/chain.rs +++ b/crates/storage/provider/src/providers/database/chain.rs @@ -1,7 +1,8 @@ use crate::{providers::NodeTypesForProvider, DatabaseProvider}; use reth_db_api::transaction::{DbTx, DbTxMut}; -use reth_node_types::{FullNodePrimitives, FullSignedTx}; -use reth_primitives_traits::FullBlockHeader; +use reth_node_types::FullNodePrimitives; + +use reth_primitives_traits::{FullBlockHeader, FullSignedTx}; use reth_storage_api::{ChainStorageReader, ChainStorageWriter, EthStorage}; /// Trait that provides access to implementations of [`ChainStorage`] @@ -24,9 +25,9 @@ where T: FullSignedTx, H: FullBlockHeader, N: FullNodePrimitives< - Block = reth_primitives::Block, + Block = alloy_consensus::Block, BlockHeader = H, - BlockBody = reth_primitives::BlockBody, + BlockBody = alloy_consensus::BlockBody, SignedTx = T, >, { diff --git a/crates/storage/provider/src/providers/database/mod.rs b/crates/storage/provider/src/providers/database/mod.rs index 9517aee2a3..70dbfdfc41 100644 --- a/crates/storage/provider/src/providers/database/mod.rs +++ b/crates/storage/provider/src/providers/database/mod.rs @@ -18,9 +18,10 @@ use reth_errors::{RethError, RethResult}; use reth_node_types::{ BlockTy, HeaderTy, NodeTypes, NodeTypesWithDB, NodeTypesWithDBAdapter, ReceiptTy, TxTy, }; -use reth_primitives::{RecoveredBlock, SealedBlock, SealedHeader, StaticFileSegment}; +use reth_primitives_traits::{RecoveredBlock, SealedBlock, SealedHeader}; use reth_prune_types::{PruneCheckpoint, PruneModes, PruneSegment}; use reth_stages_types::{StageCheckpoint, StageId}; +use reth_static_file_types::StaticFileSegment; use reth_storage_api::{ BlockBodyIndicesProvider, NodePrimitivesProvider, OmmersProvider, StateCommitmentProvider, TryIntoHistoricalStateProvider, diff --git a/crates/storage/provider/src/providers/database/provider.rs b/crates/storage/provider/src/providers/database/provider.rs index 2ff98b70c7..cefde9144d 100644 --- a/crates/storage/provider/src/providers/database/provider.rs +++ b/crates/storage/provider/src/providers/database/provider.rs @@ -44,15 +44,15 @@ use reth_db_api::{ use reth_execution_types::{Chain, ExecutionOutcome}; use reth_network_p2p::headers::downloader::SyncTarget; use reth_node_types::{BlockTy, BodyTy, HeaderTy, NodeTypes, ReceiptTy, TxTy}; -use reth_primitives::{ - Account, Bytecode, GotExpected, NodePrimitives, RecoveredBlock, SealedBlock, SealedHeader, - StaticFileSegment, StorageEntry, +use reth_primitives_traits::{ + Account, Block as _, BlockBody as _, Bytecode, GotExpected, NodePrimitives, RecoveredBlock, + SealedBlock, SealedHeader, SignedTransaction, StorageEntry, }; -use reth_primitives_traits::{Block as _, BlockBody as _, SignedTransaction}; use reth_prune_types::{ PruneCheckpoint, PruneMode, PruneModes, PruneSegment, MINIMUM_PRUNING_DISTANCE, }; use reth_stages_types::{StageCheckpoint, StageId}; +use reth_static_file_types::StaticFileSegment; use reth_storage_api::{ BlockBodyIndicesProvider, BlockBodyReader, NodePrimitivesProvider, OmmersProvider, StateProvider, StorageChangeSetReader, TryIntoHistoricalStateProvider, diff --git a/crates/storage/provider/src/providers/state/historical.rs b/crates/storage/provider/src/providers/state/historical.rs index a54d054ade..243f1b928b 100644 --- a/crates/storage/provider/src/providers/state/historical.rs +++ b/crates/storage/provider/src/providers/state/historical.rs @@ -12,7 +12,7 @@ use reth_db_api::{ transaction::DbTx, BlockNumberList, }; -use reth_primitives::{Account, Bytecode}; +use reth_primitives_traits::{Account, Bytecode}; use reth_storage_api::{ BlockNumReader, DBProvider, StateCommitmentProvider, StateProofProvider, StorageRootProvider, }; diff --git a/crates/storage/provider/src/providers/state/latest.rs b/crates/storage/provider/src/providers/state/latest.rs index d6a203804f..8443e6b4c5 100644 --- a/crates/storage/provider/src/providers/state/latest.rs +++ b/crates/storage/provider/src/providers/state/latest.rs @@ -4,7 +4,7 @@ use crate::{ }; use alloy_primitives::{Address, BlockNumber, Bytes, StorageKey, StorageValue, B256}; use reth_db_api::{cursor::DbDupCursorRO, tables, transaction::DbTx}; -use reth_primitives::{Account, Bytecode}; +use reth_primitives_traits::{Account, Bytecode}; use reth_storage_api::{ DBProvider, StateCommitmentProvider, StateProofProvider, StorageRootProvider, }; diff --git a/crates/storage/provider/src/providers/state/macros.rs b/crates/storage/provider/src/providers/state/macros.rs index 145fceb258..36216755ec 100644 --- a/crates/storage/provider/src/providers/state/macros.rs +++ b/crates/storage/provider/src/providers/state/macros.rs @@ -31,7 +31,7 @@ macro_rules! delegate_provider_impls { $crate::providers::state::macros::delegate_impls_to_as_ref!( for $target => AccountReader $(where [$($generics)*])? { - fn basic_account(&self, address: &alloy_primitives::Address) -> reth_storage_errors::provider::ProviderResult>; + fn basic_account(&self, address: &alloy_primitives::Address) -> reth_storage_errors::provider::ProviderResult>; } BlockHashReader $(where [$($generics)*])? { fn block_hash(&self, number: u64) -> reth_storage_errors::provider::ProviderResult>; @@ -39,7 +39,7 @@ macro_rules! delegate_provider_impls { } StateProvider $(where [$($generics)*])? { fn storage(&self, account: alloy_primitives::Address, storage_key: alloy_primitives::StorageKey) -> reth_storage_errors::provider::ProviderResult>; - fn bytecode_by_hash(&self, code_hash: &alloy_primitives::B256) -> reth_storage_errors::provider::ProviderResult>; + fn bytecode_by_hash(&self, code_hash: &alloy_primitives::B256) -> reth_storage_errors::provider::ProviderResult>; } StateRootProvider $(where [$($generics)*])? { fn state_root(&self, state: reth_trie::HashedPostState) -> reth_storage_errors::provider::ProviderResult; diff --git a/crates/storage/provider/src/providers/static_file/jar.rs b/crates/storage/provider/src/providers/static_file/jar.rs index 794d969843..64b0d6e284 100644 --- a/crates/storage/provider/src/providers/static_file/jar.rs +++ b/crates/storage/provider/src/providers/static_file/jar.rs @@ -19,8 +19,7 @@ use reth_db_api::{ table::{Decompress, Value}, }; use reth_node_types::{FullNodePrimitives, NodePrimitives}; -use reth_primitives::SealedHeader; -use reth_primitives_traits::SignedTransaction; +use reth_primitives_traits::{SealedHeader, SignedTransaction}; use reth_storage_api::{BlockBodyIndicesProvider, OmmersProvider, WithdrawalsProvider}; use reth_storage_errors::provider::{ProviderError, ProviderResult}; use std::{ @@ -28,7 +27,6 @@ use std::{ ops::{Deref, RangeBounds, RangeInclusive}, sync::Arc, }; - /// Provider over a specific `NippyJar` and range. #[derive(Debug)] pub struct StaticFileJarProvider<'a, N> { diff --git a/crates/storage/provider/src/providers/static_file/manager.rs b/crates/storage/provider/src/providers/static_file/manager.rs index 7ff129f222..03f7a514f2 100644 --- a/crates/storage/provider/src/providers/static_file/manager.rs +++ b/crates/storage/provider/src/providers/static_file/manager.rs @@ -30,17 +30,15 @@ use reth_db_api::{ tables, transaction::DbTx, }; +use reth_ethereum_primitives::{Receipt, TransactionSigned}; use reth_nippy_jar::{NippyJar, NippyJarChecker, CONFIG_FILE_EXTENSION}; use reth_node_types::{FullNodePrimitives, NodePrimitives}; -use reth_primitives::{ - static_file::{ - find_fixed_range, HighestStaticFiles, SegmentHeader, SegmentRangeInclusive, - DEFAULT_BLOCKS_PER_STATIC_FILE, - }, - Receipt, RecoveredBlock, SealedBlock, SealedHeader, StaticFileSegment, TransactionSigned, -}; -use reth_primitives_traits::SignedTransaction; +use reth_primitives_traits::{RecoveredBlock, SealedBlock, SealedHeader, SignedTransaction}; use reth_stages_types::{PipelineTarget, StageId}; +use reth_static_file_types::{ + find_fixed_range, HighestStaticFiles, SegmentHeader, SegmentRangeInclusive, StaticFileSegment, + DEFAULT_BLOCKS_PER_STATIC_FILE, +}; use reth_storage_api::{BlockBodyIndicesProvider, DBProvider, OmmersProvider}; use reth_storage_errors::provider::{ProviderError, ProviderResult}; use std::{ diff --git a/crates/storage/provider/src/providers/static_file/metrics.rs b/crates/storage/provider/src/providers/static_file/metrics.rs index 72589ca698..ad73833483 100644 --- a/crates/storage/provider/src/providers/static_file/metrics.rs +++ b/crates/storage/provider/src/providers/static_file/metrics.rs @@ -3,7 +3,7 @@ use std::{collections::HashMap, time::Duration}; use itertools::Itertools; use metrics::{Counter, Gauge, Histogram}; use reth_metrics::Metrics; -use reth_primitives::StaticFileSegment; +use reth_static_file_types::StaticFileSegment; use strum::{EnumIter, IntoEnumIterator}; /// Metrics for the static file provider. diff --git a/crates/storage/provider/src/providers/static_file/mod.rs b/crates/storage/provider/src/providers/static_file/mod.rs index da4c71a345..44a2660461 100644 --- a/crates/storage/provider/src/providers/static_file/mod.rs +++ b/crates/storage/provider/src/providers/static_file/mod.rs @@ -8,9 +8,8 @@ mod writer; pub use writer::{StaticFileProviderRW, StaticFileProviderRWRefMut}; mod metrics; - use reth_nippy_jar::NippyJar; -use reth_primitives::{static_file::SegmentHeader, StaticFileSegment}; +use reth_static_file_types::{SegmentHeader, StaticFileSegment}; use reth_storage_errors::provider::{ProviderError, ProviderResult}; use std::{ops::Deref, sync::Arc}; diff --git a/crates/storage/provider/src/providers/static_file/writer.rs b/crates/storage/provider/src/providers/static_file/writer.rs index 8274b0edab..023007ed1f 100644 --- a/crates/storage/provider/src/providers/static_file/writer.rs +++ b/crates/storage/provider/src/providers/static_file/writer.rs @@ -11,10 +11,7 @@ use reth_db_api::models::{ }; use reth_nippy_jar::{NippyJar, NippyJarError, NippyJarWriter}; use reth_node_types::NodePrimitives; -use reth_primitives::{ - static_file::{SegmentHeader, SegmentRangeInclusive}, - StaticFileSegment, -}; +use reth_static_file_types::{SegmentHeader, SegmentRangeInclusive, StaticFileSegment}; use reth_storage_errors::provider::{ProviderError, ProviderResult, StaticFileWriterError}; use std::{ borrow::Borrow, diff --git a/crates/storage/provider/src/test_utils/blocks.rs b/crates/storage/provider/src/test_utils/blocks.rs index a9ee4f8e4d..6dd4110b57 100644 --- a/crates/storage/provider/src/test_utils/blocks.rs +++ b/crates/storage/provider/src/test_utils/blocks.rs @@ -9,11 +9,9 @@ use alloy_consensus::Header; use alloy_eips::eip4895::{Withdrawal, Withdrawals}; use alloy_primitives::PrimitiveSignature as Signature; use reth_db_api::{database::Database, models::StoredBlockBodyIndices, tables}; +use reth_ethereum_primitives::{BlockBody, Receipt, Transaction, TransactionSigned, TxType}; use reth_node_types::NodeTypes; -use reth_primitives::{ - Account, BlockBody, Receipt, RecoveredBlock, SealedBlock, SealedHeader, Transaction, - TransactionSigned, TxType, -}; +use reth_primitives_traits::{Account, RecoveredBlock, SealedBlock, SealedHeader}; use reth_trie::root::{state_root_unhashed, storage_root_unhashed}; use revm_database::BundleState; use revm_state::AccountInfo; @@ -22,7 +20,7 @@ use std::{str::FromStr, sync::LazyLock}; /// Assert genesis block pub fn assert_genesis_block( provider: &DatabaseProviderRW, - g: SealedBlock, + g: SealedBlock, ) { let n = g.number; let h = B256::ZERO; @@ -63,39 +61,40 @@ pub fn assert_genesis_block( // StageCheckpoints is not updated in tests } -pub(crate) static TEST_BLOCK: LazyLock = LazyLock::new(|| { - SealedBlock::from_sealed_parts( - SealedHeader::new( - Header { - parent_hash: hex!( - "c86e8cc0310ae7c531c758678ddbfd16fc51c8cef8cec650b032de9869e8b94f" - ) - .into(), - ommers_hash: EMPTY_OMMER_ROOT_HASH, - beneficiary: hex!("2adc25665018aa1fe0e6bc666dac8fc2697ff9ba").into(), - state_root: hex!( - "50554882fbbda2c2fd93fdc466db9946ea262a67f7a76cc169e714f105ab583d" - ) - .into(), - transactions_root: hex!( - "0967f09ef1dfed20c0eacfaa94d5cd4002eda3242ac47eae68972d07b106d192" - ) - .into(), - receipts_root: hex!( - "e3c8b47fbfc94667ef4cceb17e5cc21e3b1eebd442cebb27f07562b33836290d" - ) - .into(), - difficulty: U256::from(131_072), - number: 1, - gas_limit: 1_000_000, - gas_used: 14_352, - timestamp: 1_000, - ..Default::default() - }, - hex!("cf7b274520720b50e6a4c3e5c4d553101f44945396827705518ce17cb7219a42").into(), - ), - BlockBody { - transactions: vec![TransactionSigned::new( +pub(crate) static TEST_BLOCK: LazyLock> = + LazyLock::new(|| { + SealedBlock::from_sealed_parts( + SealedHeader::new( + Header { + parent_hash: hex!( + "c86e8cc0310ae7c531c758678ddbfd16fc51c8cef8cec650b032de9869e8b94f" + ) + .into(), + ommers_hash: EMPTY_OMMER_ROOT_HASH, + beneficiary: hex!("2adc25665018aa1fe0e6bc666dac8fc2697ff9ba").into(), + state_root: hex!( + "50554882fbbda2c2fd93fdc466db9946ea262a67f7a76cc169e714f105ab583d" + ) + .into(), + transactions_root: hex!( + "0967f09ef1dfed20c0eacfaa94d5cd4002eda3242ac47eae68972d07b106d192" + ) + .into(), + receipts_root: hex!( + "e3c8b47fbfc94667ef4cceb17e5cc21e3b1eebd442cebb27f07562b33836290d" + ) + .into(), + difficulty: U256::from(131_072), + number: 1, + gas_limit: 1_000_000, + gas_used: 14_352, + timestamp: 1_000, + ..Default::default() + }, + hex!("cf7b274520720b50e6a4c3e5c4d553101f44945396827705518ce17cb7219a42").into(), + ), + BlockBody { + transactions: vec![TransactionSigned::new( Transaction::Legacy(TxLegacy { gas_price: 10, gas_limit: 400_000, @@ -115,19 +114,19 @@ pub(crate) static TEST_BLOCK: LazyLock = LazyLock::new(|| { ), b256!("0x3541dd1d17e76adeb25dcf2b0a9b60a1669219502e58dcf26a2beafbfb550397"), )], - ..Default::default() - }, - ) -}); + ..Default::default() + }, + ) + }); /// Test chain with genesis, blocks, execution results /// that have valid changesets. #[derive(Debug)] pub struct BlockchainTestData { /// Genesis - pub genesis: SealedBlock, + pub genesis: SealedBlock, /// Blocks with its execution result - pub blocks: Vec<(RecoveredBlock, ExecutionOutcome)>, + pub blocks: Vec<(RecoveredBlock, ExecutionOutcome)>, } impl BlockchainTestData { @@ -162,7 +161,7 @@ impl Default for BlockchainTestData { } /// Genesis block -pub fn genesis() -> SealedBlock { +pub fn genesis() -> SealedBlock { SealedBlock::from_sealed_parts( SealedHeader::new( Header { number: 0, difficulty: U256::from(1), ..Default::default() }, @@ -192,7 +191,9 @@ fn bundle_state_root(execution_outcome: &ExecutionOutcome) -> B256 { } /// Block one that points to genesis -fn block1(number: BlockNumber) -> (RecoveredBlock, ExecutionOutcome) { +fn block1( + number: BlockNumber, +) -> (RecoveredBlock, ExecutionOutcome) { // block changes let account1: Address = [0x60; 20].into(); let account2: Address = [0x61; 20].into(); @@ -242,7 +243,7 @@ fn block2( number: BlockNumber, parent_hash: B256, prev_execution_outcome: &ExecutionOutcome, -) -> (RecoveredBlock, ExecutionOutcome) { +) -> (RecoveredBlock, ExecutionOutcome) { // block changes let account: Address = [0x60; 20].into(); let slot = U256::from(5); @@ -300,7 +301,7 @@ fn block3( number: BlockNumber, parent_hash: B256, prev_execution_outcome: &ExecutionOutcome, -) -> (RecoveredBlock, ExecutionOutcome) { +) -> (RecoveredBlock, ExecutionOutcome) { let address_range = 1..=20; let slot_range = 1..=100; @@ -358,7 +359,7 @@ fn block4( number: BlockNumber, parent_hash: B256, prev_execution_outcome: &ExecutionOutcome, -) -> (RecoveredBlock, ExecutionOutcome) { +) -> (RecoveredBlock, ExecutionOutcome) { let address_range = 1..=20; let slot_range = 1..=100; @@ -441,7 +442,7 @@ fn block5( number: BlockNumber, parent_hash: B256, prev_execution_outcome: &ExecutionOutcome, -) -> (RecoveredBlock, ExecutionOutcome) { +) -> (RecoveredBlock, ExecutionOutcome) { let address_range = 1..=20; let slot_range = 1..=100; diff --git a/crates/storage/provider/src/test_utils/mock.rs b/crates/storage/provider/src/test_utils/mock.rs index 3f3adebeba..4338d1c993 100644 --- a/crates/storage/provider/src/test_utils/mock.rs +++ b/crates/storage/provider/src/test_utils/mock.rs @@ -5,9 +5,7 @@ use crate::{ StateProvider, StateProviderBox, StateProviderFactory, StateReader, StateRootProvider, TransactionVariant, TransactionsProvider, WithdrawalsProvider, }; -use alloy_consensus::{ - constants::EMPTY_ROOT_HASH, transaction::TransactionMeta, Header, Transaction, -}; +use alloy_consensus::{constants::EMPTY_ROOT_HASH, transaction::TransactionMeta, Header}; use alloy_eips::{eip4895::Withdrawals, BlockHashOrNumber, BlockId, BlockNumberOrTag}; use alloy_primitives::{ keccak256, map::HashMap, Address, BlockHash, BlockNumber, Bytes, StorageKey, StorageValue, @@ -20,13 +18,12 @@ use reth_db_api::{ mock::{DatabaseMock, TxMock}, models::{AccountBeforeTx, StoredBlockBodyIndices}, }; +use reth_ethereum_primitives::{EthPrimitives, Receipt}; use reth_execution_types::ExecutionOutcome; use reth_node_types::NodeTypes; -use reth_primitives::{ - Account, Block, Bytecode, EthPrimitives, GotExpected, Receipt, RecoveredBlock, SealedBlock, - SealedHeader, TransactionSigned, +use reth_primitives_traits::{ + Account, Bytecode, GotExpected, RecoveredBlock, SealedBlock, SealedHeader, SignedTransaction, }; -use reth_primitives_traits::SignedTransaction; use reth_prune_types::PruneModes; use reth_stages_types::{StageCheckpoint, StageId}; use reth_storage_api::{ @@ -49,9 +46,9 @@ use tokio::sync::broadcast; /// A mock implementation for Provider interfaces. #[derive(Debug)] -pub struct MockEthProvider { +pub struct MockEthProvider { /// Local block store - pub blocks: Arc>>>, + pub blocks: Arc>>, /// Local header store pub headers: Arc>>, /// Local account store @@ -64,7 +61,7 @@ pub struct MockEthProvider, } -impl Clone for MockEthProvider { +impl Clone for MockEthProvider { fn clone(&self) -> Self { Self { blocks: self.blocks.clone(), @@ -78,7 +75,7 @@ impl Clone for MockEthProvider { } } -impl MockEthProvider { +impl MockEthProvider { /// Create a new, empty instance pub fn new() -> Self { Self { @@ -92,16 +89,18 @@ impl MockEthProvider { } } } - -impl MockEthProvider { +impl MockEthProvider { /// Add block to local block store - pub fn add_block(&self, hash: B256, block: Block) { + pub fn add_block(&self, hash: B256, block: reth_ethereum_primitives::Block) { self.add_header(hash, block.header.clone()); self.blocks.lock().insert(hash, block); } /// Add multiple blocks to local block store - pub fn extend_blocks(&self, iter: impl IntoIterator)>) { + pub fn extend_blocks( + &self, + iter: impl IntoIterator, + ) { for (hash, block) in iter { self.add_header(hash, block.header.clone()); self.add_block(hash, block) @@ -138,7 +137,7 @@ impl MockEthProvider { } /// Set chain spec. - pub fn with_chain_spec(self, chain_spec: C) -> MockEthProvider { + pub fn with_chain_spec(self, chain_spec: C) -> MockEthProvider { MockEthProvider { blocks: self.blocks, headers: self.headers, @@ -205,14 +204,12 @@ impl NodeTypes for MockNode { type Storage = EthStorage; } -impl StateCommitmentProvider - for MockEthProvider -{ +impl StateCommitmentProvider for MockEthProvider { type StateCommitment = ::StateCommitment; } -impl DatabaseProviderFactory - for MockEthProvider +impl DatabaseProviderFactory + for MockEthProvider { type DB = DatabaseMock; type Provider = Self; @@ -233,9 +230,7 @@ impl DatabaseProvider } } -impl DBProvider - for MockEthProvider -{ +impl DBProvider for MockEthProvider { type Tx = TxMock; fn tx_ref(&self) -> &Self::Tx { @@ -255,7 +250,7 @@ impl DBProvider } } -impl HeaderProvider for MockEthProvider { +impl HeaderProvider for MockEthProvider { type Header = Header; fn header(&self, block_hash: &BlockHash) -> ProviderResult> { @@ -314,9 +309,7 @@ impl HeaderProvider for MockEthProvider } } -impl ChainSpecProvider - for MockEthProvider -{ +impl ChainSpecProvider for MockEthProvider { type ChainSpec = ChainSpec; fn chain_spec(&self) -> Arc { @@ -324,10 +317,8 @@ impl ChainSpecProvider } } -impl TransactionsProvider - for MockEthProvider -{ - type Transaction = T; +impl TransactionsProvider for MockEthProvider { + type Transaction = reth_ethereum_primitives::TransactionSigned; fn transaction_id(&self, tx_hash: TxHash) -> ProviderResult> { let lock = self.blocks.lock(); @@ -465,7 +456,7 @@ impl TransactionsProvider } } -impl ReceiptProvider for MockEthProvider { +impl ReceiptProvider for MockEthProvider { type Receipt = Receipt; fn receipt(&self, _id: TxNumber) -> ProviderResult> { @@ -488,12 +479,9 @@ impl ReceiptProvider for MockEthProvide } } -impl ReceiptProviderIdExt - for MockEthProvider -{ -} +impl ReceiptProviderIdExt for MockEthProvider {} -impl BlockHashReader for MockEthProvider { +impl BlockHashReader for MockEthProvider { fn block_hash(&self, number: u64) -> ProviderResult> { let lock = self.blocks.lock(); @@ -517,7 +505,7 @@ impl BlockHashReader for MockEthProvide } } -impl BlockNumReader for MockEthProvider { +impl BlockNumReader for MockEthProvider { fn chain_info(&self) -> ProviderResult { let best_block_number = self.best_block_number()?; let lock = self.headers.lock(); @@ -548,7 +536,7 @@ impl BlockNumReader for MockEthProvider } } -impl BlockIdReader for MockEthProvider { +impl BlockIdReader for MockEthProvider { fn pending_block_num_hash(&self) -> ProviderResult> { Ok(None) } @@ -562,8 +550,8 @@ impl BlockIdReader for MockEthProvider< } } -impl BlockReader for MockEthProvider { - type Block = Block; +impl BlockReader for MockEthProvider { + type Block = reth_ethereum_primitives::Block; fn find_block_by_hash( &self, @@ -636,10 +624,8 @@ impl BlockReader for MockEthProvi } } -impl BlockReaderIdExt - for MockEthProvider -{ - fn block_by_id(&self, id: BlockId) -> ProviderResult>> { +impl BlockReaderIdExt for MockEthProvider { + fn block_by_id(&self, id: BlockId) -> ProviderResult> { match id { BlockId::Number(num) => self.block_by_number_or_tag(num), BlockId::Hash(hash) => self.block_by_hash(hash.block_hash), @@ -665,15 +651,13 @@ impl BlockReaderIdExt } } -impl AccountReader for MockEthProvider { +impl AccountReader for MockEthProvider { fn basic_account(&self, address: &Address) -> ProviderResult> { Ok(self.accounts.lock().get(address).cloned().map(|a| a.account)) } } -impl StageCheckpointReader - for MockEthProvider -{ +impl StageCheckpointReader for MockEthProvider { fn get_stage_checkpoint(&self, _id: StageId) -> ProviderResult> { Ok(None) } @@ -687,7 +671,7 @@ impl StageCheckpointReader } } -impl StateRootProvider for MockEthProvider { +impl StateRootProvider for MockEthProvider { fn state_root(&self, _state: HashedPostState) -> ProviderResult { Ok(self.state_roots.lock().pop().unwrap_or_default()) } @@ -713,9 +697,7 @@ impl StateRootProvider for MockEthProvi } } -impl StorageRootProvider - for MockEthProvider -{ +impl StorageRootProvider for MockEthProvider { fn storage_root( &self, _address: Address, @@ -743,7 +725,7 @@ impl StorageRootProvider } } -impl StateProofProvider for MockEthProvider { +impl StateProofProvider for MockEthProvider { fn proof( &self, _input: TrieInput, @@ -766,17 +748,13 @@ impl StateProofProvider for MockEthProv } } -impl HashedPostStateProvider - for MockEthProvider -{ +impl HashedPostStateProvider for MockEthProvider { fn hashed_post_state(&self, _state: &revm_database::BundleState) -> HashedPostState { HashedPostState::default() } } -impl StateProvider - for MockEthProvider -{ +impl StateProvider for MockEthProvider { fn storage( &self, account: Address, @@ -799,9 +777,7 @@ impl StateProvider } } -impl StateProviderFactory - for MockEthProvider -{ +impl StateProviderFactory for MockEthProvider { fn latest(&self) -> ProviderResult { Ok(Box::new(self.clone())) } @@ -853,9 +829,7 @@ impl StateProviderFacto } } -impl WithdrawalsProvider - for MockEthProvider -{ +impl WithdrawalsProvider for MockEthProvider { fn withdrawals_by_block( &self, _id: BlockHashOrNumber, @@ -865,15 +839,13 @@ impl WithdrawalsProvider } } -impl OmmersProvider for MockEthProvider { +impl OmmersProvider for MockEthProvider { fn ommers(&self, _id: BlockHashOrNumber) -> ProviderResult>> { Ok(None) } } -impl BlockBodyIndicesProvider - for MockEthProvider -{ +impl BlockBodyIndicesProvider for MockEthProvider { fn block_body_indices(&self, _num: u64) -> ProviderResult> { Ok(None) } @@ -885,7 +857,7 @@ impl BlockBodyIndicesProvider } } -impl ChangeSetReader for MockEthProvider { +impl ChangeSetReader for MockEthProvider { fn account_block_changeset( &self, _block_number: BlockNumber, @@ -894,7 +866,7 @@ impl ChangeSetReader for MockEthProvide } } -impl StateReader for MockEthProvider { +impl StateReader for MockEthProvider { type Receipt = Receipt; fn get_state(&self, _block: BlockNumber) -> ProviderResult> { @@ -902,16 +874,12 @@ impl StateReader for MockEthProvider CanonStateSubscriptions - for MockEthProvider -{ +impl CanonStateSubscriptions for MockEthProvider { fn subscribe_to_canonical_state(&self) -> CanonStateNotifications { broadcast::channel(1).1 } } -impl NodePrimitivesProvider - for MockEthProvider -{ +impl NodePrimitivesProvider for MockEthProvider { type Primitives = EthPrimitives; } diff --git a/crates/storage/provider/src/test_utils/mod.rs b/crates/storage/provider/src/test_utils/mod.rs index 1fe4404cd8..ddb7679572 100644 --- a/crates/storage/provider/src/test_utils/mod.rs +++ b/crates/storage/provider/src/test_utils/mod.rs @@ -10,7 +10,7 @@ use reth_db::{ }; use reth_errors::ProviderResult; use reth_node_types::{NodeTypes, NodeTypesWithDBAdapter}; -use reth_primitives::{Account, StorageEntry}; +use reth_primitives_traits::{Account, StorageEntry}; use reth_trie::StateRoot; use reth_trie_db::DatabaseStateRoot; use std::sync::Arc; @@ -25,7 +25,7 @@ pub use reth_chain_state::test_utils::TestCanonStateSubscriptions; /// Mock [`reth_node_types::NodeTypes`] for testing. pub type MockNodeTypes = reth_node_types::AnyNodeTypesWithEngine< - reth_primitives::EthPrimitives, + reth_ethereum_primitives::EthPrimitives, reth_ethereum_engine_primitives::EthEngineTypes, reth_chainspec::ChainSpec, reth_trie_db::MerklePatriciaTrie, diff --git a/crates/storage/provider/src/traits/block.rs b/crates/storage/provider/src/traits/block.rs index 12ae006d88..26a7ed306c 100644 --- a/crates/storage/provider/src/traits/block.rs +++ b/crates/storage/provider/src/traits/block.rs @@ -2,8 +2,7 @@ use alloy_primitives::BlockNumber; use reth_db_api::models::StoredBlockBodyIndices; use reth_execution_types::{Chain, ExecutionOutcome}; use reth_node_types::NodePrimitives; -use reth_primitives::RecoveredBlock; -use reth_primitives_traits::Block; +use reth_primitives_traits::{Block, RecoveredBlock}; use reth_storage_api::{NodePrimitivesProvider, StorageLocation}; use reth_storage_errors::provider::ProviderResult; use reth_trie::{updates::TrieUpdates, HashedPostStateSorted}; diff --git a/crates/storage/provider/src/traits/header_sync_gap.rs b/crates/storage/provider/src/traits/header_sync_gap.rs index f9e628513e..8c3d29325c 100644 --- a/crates/storage/provider/src/traits/header_sync_gap.rs +++ b/crates/storage/provider/src/traits/header_sync_gap.rs @@ -2,7 +2,7 @@ use alloy_consensus::{BlockHeader, Header}; use alloy_eips::BlockHashOrNumber; use alloy_primitives::{BlockNumber, Sealable, B256}; use reth_network_p2p::headers::downloader::SyncTarget; -use reth_primitives::SealedHeader; +use reth_primitives_traits::SealedHeader; use reth_storage_errors::provider::ProviderResult; use tokio::sync::watch; diff --git a/crates/storage/provider/src/writer/mod.rs b/crates/storage/provider/src/writer/mod.rs index 811ea9c52e..ce26f50ac9 100644 --- a/crates/storage/provider/src/writer/mod.rs +++ b/crates/storage/provider/src/writer/mod.rs @@ -7,8 +7,8 @@ use alloy_consensus::BlockHeader; use reth_chain_state::{ExecutedBlock, ExecutedBlockWithTrieUpdates}; use reth_db_api::transaction::{DbTx, DbTxMut}; use reth_errors::ProviderResult; -use reth_primitives::{NodePrimitives, StaticFileSegment}; -use reth_primitives_traits::SignedTransaction; +use reth_primitives_traits::{NodePrimitives, SignedTransaction}; +use reth_static_file_types::StaticFileSegment; use reth_storage_api::{DBProvider, StageCheckpointWriter, TransactionsProviderExt}; use reth_storage_errors::writer::UnifiedStorageWriterError; use revm_database::OriginalValuesKnown; @@ -234,8 +234,9 @@ mod tests { tables, transaction::{DbTx, DbTxMut}, }; + use reth_ethereum_primitives::Receipt; use reth_execution_types::ExecutionOutcome; - use reth_primitives::{Account, Receipt, StorageEntry}; + use reth_primitives_traits::{Account, StorageEntry}; use reth_storage_api::{DatabaseProviderFactory, HashedPostStateProvider}; use reth_trie::{ test_utils::{state_root, storage_root_prehashed}, diff --git a/reth-ethereum-primitives b/reth-ethereum-primitives new file mode 100644 index 0000000000..e69de29bb2