From 6c762565b8fad9c128ca94fc4c958861b0334fdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Narzis?= <78718413+lean-apple@users.noreply.github.com> Date: Wed, 22 Jan 2025 21:15:47 +0100 Subject: [PATCH] refactor: finalize proofs mod move from `reth-primitives` to `reth-primitives-traits` (#13875) --- Cargo.lock | 3 ++- crates/chain-state/src/test_utils.rs | 12 +++++++----- crates/consensus/common/src/validation.rs | 3 ++- crates/engine/util/src/reorg.rs | 4 ++-- crates/ethereum/consensus/src/lib.rs | 2 +- crates/ethereum/payload/src/lib.rs | 6 ++++-- crates/optimism/payload/src/builder.rs | 4 ++-- crates/payload/basic/Cargo.toml | 1 + crates/payload/basic/src/lib.rs | 3 ++- crates/primitives/Cargo.toml | 3 --- crates/primitives/src/lib.rs | 1 - crates/primitives/src/proofs.rs | 18 ------------------ crates/rpc/rpc-engine-api/Cargo.toml | 1 + crates/rpc/rpc-engine-api/tests/it/payload.rs | 3 ++- .../rpc/rpc/src/eth/helpers/pending_block.rs | 3 ++- testing/testing-utils/src/generators.rs | 4 ++-- 16 files changed, 30 insertions(+), 41 deletions(-) delete mode 100644 crates/primitives/src/proofs.rs diff --git a/Cargo.lock b/Cargo.lock index 547855265..577b139fd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6460,6 +6460,7 @@ dependencies = [ "reth-payload-builder-primitives", "reth-payload-primitives", "reth-primitives", + "reth-primitives-traits", "reth-provider", "reth-revm", "reth-tasks", @@ -8525,7 +8526,6 @@ dependencies = [ "alloy-genesis", "alloy-primitives", "alloy-rlp", - "alloy-trie", "arbitrary", "c-kzg", "codspeed-criterion-compat", @@ -8882,6 +8882,7 @@ dependencies = [ "reth-payload-builder-primitives", "reth-payload-primitives", "reth-primitives", + "reth-primitives-traits", "reth-provider", "reth-rpc-api", "reth-rpc-types-compat", diff --git a/crates/chain-state/src/test_utils.rs b/crates/chain-state/src/test_utils.rs index 0b7c4891b..cee6802e6 100644 --- a/crates/chain-state/src/test_utils.rs +++ b/crates/chain-state/src/test_utils.rs @@ -18,12 +18,14 @@ use rand::{thread_rng, Rng}; use reth_chainspec::{ChainSpec, EthereumHardfork, MIN_TRANSACTION_GAS}; use reth_execution_types::{Chain, ExecutionOutcome}; use reth_primitives::{ - proofs::{calculate_receipt_root, calculate_transaction_root, calculate_withdrawals_root}, - transaction::SignedTransactionIntoRecoveredExt, - BlockBody, EthPrimitives, NodePrimitives, Receipt, Receipts, Recovered, RecoveredBlock, - SealedBlock, SealedHeader, Transaction, TransactionSigned, + transaction::SignedTransactionIntoRecoveredExt, BlockBody, EthPrimitives, NodePrimitives, + Receipt, Receipts, Recovered, RecoveredBlock, SealedBlock, SealedHeader, Transaction, + TransactionSigned, +}; +use reth_primitives_traits::{ + proofs::{calculate_receipt_root, calculate_transaction_root, calculate_withdrawals_root}, + Account, }; -use reth_primitives_traits::Account; use reth_storage_api::NodePrimitivesProvider; use reth_trie::{root::state_root_unhashed, updates::TrieUpdates, HashedPostState}; use revm::{db::BundleState, primitives::AccountInfo}; diff --git a/crates/consensus/common/src/validation.rs b/crates/consensus/common/src/validation.rs index 530c50876..01bc36ac8 100644 --- a/crates/consensus/common/src/validation.rs +++ b/crates/consensus/common/src/validation.rs @@ -340,7 +340,8 @@ mod tests { use alloy_primitives::{Address, Bytes, PrimitiveSignature as Signature, U256}; use rand::Rng; use reth_chainspec::ChainSpecBuilder; - use reth_primitives::{proofs, BlockBody, Transaction, TransactionSigned}; + use reth_primitives::{BlockBody, Transaction, TransactionSigned}; + use reth_primitives_traits::proofs; fn mock_blob_tx(nonce: u64, num_blobs: usize) -> TransactionSigned { let mut rng = rand::thread_rng(); diff --git a/crates/engine/util/src/reorg.rs b/crates/engine/util/src/reorg.rs index 89dcd1bf6..75d9b9f13 100644 --- a/crates/engine/util/src/reorg.rs +++ b/crates/engine/util/src/reorg.rs @@ -19,9 +19,9 @@ use reth_evm::{ }; use reth_payload_validator::ExecutionPayloadValidator; use reth_primitives::{ - proofs, transaction::SignedTransactionIntoRecoveredExt, Block, BlockBody, Receipt, Receipts, + transaction::SignedTransactionIntoRecoveredExt, Block, BlockBody, Receipt, Receipts, }; -use reth_primitives_traits::{block::Block as _, SignedTransaction}; +use reth_primitives_traits::{block::Block as _, proofs, SignedTransaction}; use reth_provider::{BlockReader, ExecutionOutcome, ProviderError, StateProviderFactory}; use reth_revm::{ database::StateProviderDatabase, diff --git a/crates/ethereum/consensus/src/lib.rs b/crates/ethereum/consensus/src/lib.rs index 4d2daaaae..c0ca492d6 100644 --- a/crates/ethereum/consensus/src/lib.rs +++ b/crates/ethereum/consensus/src/lib.rs @@ -270,7 +270,7 @@ mod tests { use super::*; use alloy_primitives::B256; use reth_chainspec::{ChainSpec, ChainSpecBuilder}; - use reth_primitives::proofs; + use reth_primitives_traits::proofs; fn header_with_gas_limit(gas_limit: u64) -> SealedHeader { let header = reth_primitives::Header { gas_limit, ..Default::default() }; diff --git a/crates/ethereum/payload/src/lib.rs b/crates/ethereum/payload/src/lib.rs index 9a4005c7f..b4f313aa4 100644 --- a/crates/ethereum/payload/src/lib.rs +++ b/crates/ethereum/payload/src/lib.rs @@ -31,11 +31,13 @@ use reth_payload_builder::{EthBuiltPayload, EthPayloadBuilderAttributes}; use reth_payload_builder_primitives::PayloadBuilderError; use reth_payload_primitives::PayloadBuilderAttributes; use reth_primitives::{ - proofs::{self}, Block, BlockBody, EthereumHardforks, InvalidTransactionError, Receipt, RecoveredBlock, TransactionSigned, }; -use reth_primitives_traits::{Block as _, SignedTransaction}; +use reth_primitives_traits::{ + proofs::{self}, + Block as _, SignedTransaction, +}; use reth_revm::database::StateProviderDatabase; use reth_storage_api::StateProviderFactory; use reth_transaction_pool::{ diff --git a/crates/optimism/payload/src/builder.rs b/crates/optimism/payload/src/builder.rs index 4b31b7e4d..18d4b552e 100644 --- a/crates/optimism/payload/src/builder.rs +++ b/crates/optimism/payload/src/builder.rs @@ -28,9 +28,9 @@ use reth_payload_builder_primitives::PayloadBuilderError; use reth_payload_primitives::PayloadBuilderAttributes; use reth_payload_util::{NoopPayloadTransactions, PayloadTransactions}; use reth_primitives::{ - proofs, transaction::SignedTransactionIntoRecoveredExt, Block, BlockBody, SealedHeader, + transaction::SignedTransactionIntoRecoveredExt, Block, BlockBody, SealedHeader, }; -use reth_primitives_traits::{block::Block as _, RecoveredBlock}; +use reth_primitives_traits::{block::Block as _, proofs, RecoveredBlock}; use reth_provider::{ HashedPostStateProvider, ProviderError, StateProofProvider, StateProviderFactory, StateRootProvider, diff --git a/crates/payload/basic/Cargo.toml b/crates/payload/basic/Cargo.toml index f50f6159b..9fc7760de 100644 --- a/crates/payload/basic/Cargo.toml +++ b/crates/payload/basic/Cargo.toml @@ -15,6 +15,7 @@ workspace = true # reth reth-chainspec.workspace = true reth-primitives.workspace = true +reth-primitives-traits.workspace = true reth-transaction-pool.workspace = true reth-provider.workspace = true reth-payload-builder.workspace = true diff --git a/crates/payload/basic/src/lib.rs b/crates/payload/basic/src/lib.rs index b8cec6dac..32e6ec302 100644 --- a/crates/payload/basic/src/lib.rs +++ b/crates/payload/basic/src/lib.rs @@ -19,7 +19,8 @@ use reth_evm::state_change::post_block_withdrawals_balance_increments; use reth_payload_builder::{KeepPayloadJobAlive, PayloadId, PayloadJob, PayloadJobGenerator}; use reth_payload_builder_primitives::PayloadBuilderError; use reth_payload_primitives::{BuiltPayload, PayloadBuilderAttributes, PayloadKind}; -use reth_primitives::{proofs, NodePrimitives, SealedHeader}; +use reth_primitives::{NodePrimitives, SealedHeader}; +use reth_primitives_traits::proofs; use reth_provider::{BlockReaderIdExt, CanonStateNotification, StateProviderFactory}; use reth_revm::cached::CachedReads; use reth_tasks::TaskSpawner; diff --git a/crates/primitives/Cargo.toml b/crates/primitives/Cargo.toml index a71522f71..064487e72 100644 --- a/crates/primitives/Cargo.toml +++ b/crates/primitives/Cargo.toml @@ -21,7 +21,6 @@ reth-static-file-types.workspace = true # ethereum alloy-consensus.workspace = true alloy-primitives = { workspace = true, features = ["rand", "rlp"] } -alloy-trie = { workspace = true, features = ["serde"] } # for eip-4844 c-kzg = { workspace = true, features = ["serde"], optional = true } @@ -66,7 +65,6 @@ std = [ "alloy-primitives/std", "once_cell/std", "serde/std", - "alloy-trie/std", "reth-ethereum-forks/std", "derive_more/std", "serde_json/std", @@ -87,7 +85,6 @@ arbitrary = [ "reth-primitives-traits/arbitrary", "alloy-consensus/arbitrary", "alloy-primitives/arbitrary", - "alloy-trie/arbitrary", "reth-ethereum-primitives/arbitrary", "reth-codecs/arbitrary" ] diff --git a/crates/primitives/src/lib.rs b/crates/primitives/src/lib.rs index cf2788ff7..38f6b79c1 100644 --- a/crates/primitives/src/lib.rs +++ b/crates/primitives/src/lib.rs @@ -22,7 +22,6 @@ extern crate alloc; mod block; -pub mod proofs; mod receipt; pub use reth_static_file_types as static_file; pub mod transaction; diff --git a/crates/primitives/src/proofs.rs b/crates/primitives/src/proofs.rs deleted file mode 100644 index 03b288910..000000000 --- a/crates/primitives/src/proofs.rs +++ /dev/null @@ -1,18 +0,0 @@ -//! Helper function for calculating Merkle proofs and hashes. -pub use alloy_trie::root::ordered_trie_root_with_encoder; - -pub use alloy_consensus::proofs::calculate_receipt_root; - -/// Calculate a transaction root. -/// -/// `(rlp(index), encoded(tx))` pairs. -#[doc(inline)] -pub use alloy_consensus::proofs::calculate_transaction_root; - -/// Calculates the root hash of the withdrawals. -#[doc(inline)] -pub use alloy_consensus::proofs::calculate_withdrawals_root; - -/// Calculates the root hash for ommer/uncle headers. -#[doc(inline)] -pub use alloy_consensus::proofs::calculate_ommers_root; diff --git a/crates/rpc/rpc-engine-api/Cargo.toml b/crates/rpc/rpc-engine-api/Cargo.toml index 2b4560028..b358480e7 100644 --- a/crates/rpc/rpc-engine-api/Cargo.toml +++ b/crates/rpc/rpc-engine-api/Cargo.toml @@ -49,6 +49,7 @@ parking_lot.workspace = true reth-ethereum-engine-primitives.workspace = true reth-provider = { workspace = true, features = ["test-utils"] } reth-primitives.workspace = true +reth-primitives-traits.workspace = true reth-payload-builder = { workspace = true, features = ["test-utils"] } reth-tokio-util.workspace = true reth-testing-utils.workspace = true diff --git a/crates/rpc/rpc-engine-api/tests/it/payload.rs b/crates/rpc/rpc-engine-api/tests/it/payload.rs index e0debe679..6edfeaf16 100644 --- a/crates/rpc/rpc-engine-api/tests/it/payload.rs +++ b/crates/rpc/rpc-engine-api/tests/it/payload.rs @@ -8,7 +8,8 @@ use alloy_rpc_types_engine::{ PayloadError, }; use assert_matches::assert_matches; -use reth_primitives::{proofs, Block, SealedBlock, SealedHeader, TransactionSigned}; +use reth_primitives::{Block, SealedBlock, SealedHeader, TransactionSigned}; +use reth_primitives_traits::proofs; use reth_rpc_types_compat::engine::payload::{block_to_payload, block_to_payload_v1}; use reth_testing_utils::generators::{ self, random_block, random_block_range, BlockParams, BlockRangeParams, Rng, diff --git a/crates/rpc/rpc/src/eth/helpers/pending_block.rs b/crates/rpc/rpc/src/eth/helpers/pending_block.rs index d771241db..cabc0d011 100644 --- a/crates/rpc/rpc/src/eth/helpers/pending_block.rs +++ b/crates/rpc/rpc/src/eth/helpers/pending_block.rs @@ -5,7 +5,8 @@ use alloy_eips::{eip7685::EMPTY_REQUESTS_HASH, merge::BEACON_NONCE}; use alloy_primitives::U256; use reth_chainspec::{EthChainSpec, EthereumHardforks}; use reth_evm::ConfigureEvm; -use reth_primitives::{logs_bloom, proofs::calculate_transaction_root, BlockBody, Receipt}; +use reth_primitives::{logs_bloom, BlockBody, Receipt}; +use reth_primitives_traits::proofs::calculate_transaction_root; use reth_provider::{ BlockReader, BlockReaderIdExt, ChainSpecProvider, ProviderBlock, ProviderReceipt, ProviderTx, StateProviderFactory, diff --git a/testing/testing-utils/src/generators.rs b/testing/testing-utils/src/generators.rs index 895155cc7..1ffe4178a 100644 --- a/testing/testing-utils/src/generators.rs +++ b/testing/testing-utils/src/generators.rs @@ -12,11 +12,11 @@ use rand::{ distributions::uniform::SampleRange, rngs::StdRng, seq::SliceRandom, thread_rng, SeedableRng, }; use reth_primitives::{ - proofs, Account, BlockBody, Log, Receipt, SealedBlock, SealedHeader, StorageEntry, Transaction, + Account, BlockBody, Log, Receipt, SealedBlock, SealedHeader, StorageEntry, Transaction, TransactionSigned, }; -use reth_primitives_traits::{crypto::secp256k1::sign_message, Block as _}; +use reth_primitives_traits::{crypto::secp256k1::sign_message, proofs, Block as _}; use secp256k1::{Keypair, Secp256k1}; use std::{ cmp::{max, min},