chore: rm receiptsext trait (#13296)

This commit is contained in:
Matthias Seitz
2024-12-11 15:20:27 +01:00
committed by GitHub
parent 6550d82abd
commit 9891917f61
6 changed files with 16 additions and 36 deletions

View File

@ -415,7 +415,7 @@ where
// Compute or add new fields // Compute or add new fields
transactions_root: proofs::calculate_transaction_root(&transactions), transactions_root: proofs::calculate_transaction_root(&transactions),
receipts_root: outcome.receipts_root_slow(reorg_target.header.number).unwrap(), receipts_root: outcome.ethereum_receipts_root(reorg_target.header.number).unwrap(),
logs_bloom: outcome.block_logs_bloom(reorg_target.header.number).unwrap(), logs_bloom: outcome.block_logs_bloom(reorg_target.header.number).unwrap(),
gas_used: cumulative_gas_used, gas_used: cumulative_gas_used,
blob_gas_used: blob_gas_used.map(Into::into), blob_gas_used: blob_gas_used.map(Into::into),

View File

@ -408,7 +408,7 @@ where
vec![requests.clone().unwrap_or_default()], vec![requests.clone().unwrap_or_default()],
); );
let receipts_root = let receipts_root =
execution_outcome.receipts_root_slow(block_number).expect("Number is in range"); execution_outcome.ethereum_receipts_root(block_number).expect("Number is in range");
let logs_bloom = execution_outcome.block_logs_bloom(block_number).expect("Number is in range"); let logs_bloom = execution_outcome.block_logs_bloom(block_number).expect("Number is in range");
// calculate the state root // calculate the state root

View File

@ -2,7 +2,7 @@ use crate::BlockExecutionOutput;
use alloy_eips::eip7685::Requests; use alloy_eips::eip7685::Requests;
use alloy_primitives::{logs_bloom, Address, BlockNumber, Bloom, Log, B256, U256}; use alloy_primitives::{logs_bloom, Address, BlockNumber, Bloom, Log, B256, U256};
use reth_primitives::Receipts; use reth_primitives::Receipts;
use reth_primitives_traits::{receipt::ReceiptExt, Account, Bytecode, Receipt, StorageEntry}; use reth_primitives_traits::{Account, Bytecode, Receipt, StorageEntry};
use reth_trie::{HashedPostState, KeyHasher}; use reth_trie::{HashedPostState, KeyHasher};
use revm::{ use revm::{
db::{states::BundleState, BundleAccount}, db::{states::BundleState, BundleAccount},
@ -343,18 +343,17 @@ impl<T: Receipt<Log = Log>> ExecutionOutcome<T> {
pub fn block_logs_bloom(&self, block_number: BlockNumber) -> Option<Bloom> { pub fn block_logs_bloom(&self, block_number: BlockNumber) -> Option<Bloom> {
Some(logs_bloom(self.logs(block_number)?)) Some(logs_bloom(self.logs(block_number)?))
} }
}
/// Returns the receipt root for all recorded receipts. impl ExecutionOutcome {
/// Returns the ethereum receipt root for all recorded receipts.
///
/// Note: this function calculated Bloom filters for every receipt and created merkle trees /// Note: this function calculated Bloom filters for every receipt and created merkle trees
/// of receipt. This is a expensive operation. /// of receipt. This is a expensive operation.
pub fn receipts_root_slow(&self, _block_number: BlockNumber) -> Option<B256> pub fn ethereum_receipts_root(&self, _block_number: BlockNumber) -> Option<B256> {
where self.receipts.root_slow(self.block_number_to_index(_block_number)?, |receipts| {
T: ReceiptExt, reth_primitives::proofs::calculate_receipt_root_no_memo(receipts)
{ })
#[cfg(feature = "optimism")]
panic!("This should not be called in optimism mode. Use `optimism_receipts_root_slow` instead.");
#[cfg(not(feature = "optimism"))]
self.receipts.root_slow(self.block_number_to_index(_block_number)?, T::receipts_root)
} }
} }

View File

@ -1,19 +1,16 @@
//! Receipt abstraction //! Receipt abstraction
use crate::{InMemorySize, MaybeArbitrary, MaybeCompact, MaybeSerde};
use alloc::vec::Vec; use alloc::vec::Vec;
use core::fmt;
use alloy_consensus::{ use alloy_consensus::{
Eip2718EncodableReceipt, RlpDecodableReceipt, RlpEncodableReceipt, TxReceipt, Typed2718, Eip2718EncodableReceipt, RlpDecodableReceipt, RlpEncodableReceipt, TxReceipt, Typed2718,
}; };
use alloy_primitives::B256; use core::fmt;
use crate::{InMemorySize, MaybeArbitrary, MaybeCompact, MaybeSerde};
/// Helper trait that unifies all behaviour required by receipt to support full node operations. /// Helper trait that unifies all behaviour required by receipt to support full node operations.
pub trait FullReceipt: Receipt + MaybeCompact {} pub trait FullReceipt: Receipt + MaybeCompact {}
impl<T> FullReceipt for T where T: ReceiptExt + MaybeCompact {} impl<T> FullReceipt for T where T: Receipt + MaybeCompact {}
/// Abstraction of a receipt. /// Abstraction of a receipt.
#[auto_impl::auto_impl(&, Arc)] #[auto_impl::auto_impl(&, Arc)]
@ -35,12 +32,6 @@ pub trait Receipt:
{ {
} }
/// Extension if [`Receipt`] used in block execution.
pub trait ReceiptExt: Receipt {
/// Calculates the receipts root of the given receipts.
fn receipts_root(receipts: &[&Self]) -> B256;
}
/// Retrieves gas spent by transactions as a vector of tuples (transaction index, gas used). /// Retrieves gas spent by transactions as a vector of tuples (transaction index, gas used).
pub fn gas_spent_by_transactions<I, T>(receipts: I) -> Vec<(u64, u64)> pub fn gas_spent_by_transactions<I, T>(receipts: I) -> Vec<(u64, u64)>
where where

View File

@ -9,7 +9,6 @@ use alloy_primitives::{Bloom, Log, B256};
use alloy_rlp::{Decodable, Encodable, Header, RlpDecodable, RlpEncodable}; use alloy_rlp::{Decodable, Encodable, Header, RlpDecodable, RlpEncodable};
use bytes::BufMut; use bytes::BufMut;
use derive_more::{DerefMut, From, IntoIterator}; use derive_more::{DerefMut, From, IntoIterator};
use reth_primitives_traits::receipt::ReceiptExt;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::TxType; use crate::TxType;
@ -269,15 +268,6 @@ impl Typed2718 for Receipt {
impl reth_primitives_traits::Receipt for Receipt {} impl reth_primitives_traits::Receipt for Receipt {}
impl ReceiptExt for Receipt {
fn receipts_root(_receipts: &[&Self]) -> B256 {
#[cfg(feature = "optimism")]
panic!("This should not be called in optimism mode. Use `optimism_receipts_root_slow` instead.");
#[cfg(not(feature = "optimism"))]
crate::proofs::calculate_receipt_root_no_memo(_receipts)
}
}
impl InMemorySize for Receipt { impl InMemorySize for Receipt {
/// Calculates a heuristic for the in-memory size of the [Receipt]. /// Calculates a heuristic for the in-memory size of the [Receipt].
#[inline] #[inline]

View File

@ -16,7 +16,7 @@ use reth_evm::{
ConfigureEvm, ConfigureEvmEnv, NextBlockEnvAttributes, ConfigureEvm, ConfigureEvmEnv, NextBlockEnvAttributes,
}; };
use reth_primitives::{BlockExt, InvalidTransactionError, SealedBlockWithSenders}; use reth_primitives::{BlockExt, InvalidTransactionError, SealedBlockWithSenders};
use reth_primitives_traits::receipt::ReceiptExt; use reth_primitives_traits::Receipt;
use reth_provider::{ use reth_provider::{
BlockReader, BlockReaderIdExt, ChainSpecProvider, EvmEnvProvider, ProviderBlock, ProviderError, BlockReader, BlockReaderIdExt, ChainSpecProvider, EvmEnvProvider, ProviderBlock, ProviderError,
ProviderHeader, ProviderReceipt, ProviderTx, ReceiptProvider, StateProviderFactory, ProviderHeader, ProviderReceipt, ProviderTx, ReceiptProvider, StateProviderFactory,
@ -47,7 +47,7 @@ pub trait LoadPendingBlock:
HeaderResponse = alloy_rpc_types_eth::Header<ProviderHeader<Self::Provider>>, HeaderResponse = alloy_rpc_types_eth::Header<ProviderHeader<Self::Provider>>,
>, >,
> + RpcNodeCore< > + RpcNodeCore<
Provider: BlockReaderIdExt<Receipt: ReceiptExt> Provider: BlockReaderIdExt<Receipt: Receipt>
+ EvmEnvProvider<ProviderHeader<Self::Provider>> + EvmEnvProvider<ProviderHeader<Self::Provider>>
+ ChainSpecProvider<ChainSpec: EthChainSpec + EthereumHardforks> + ChainSpecProvider<ChainSpec: EthChainSpec + EthereumHardforks>
+ StateProviderFactory, + StateProviderFactory,