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
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(),
gas_used: cumulative_gas_used,
blob_gas_used: blob_gas_used.map(Into::into),

View File

@ -408,7 +408,7 @@ where
vec![requests.clone().unwrap_or_default()],
);
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");
// calculate the state root

View File

@ -2,7 +2,7 @@ use crate::BlockExecutionOutput;
use alloy_eips::eip7685::Requests;
use alloy_primitives::{logs_bloom, Address, BlockNumber, Bloom, Log, B256, U256};
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 revm::{
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> {
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
/// of receipt. This is a expensive operation.
pub fn receipts_root_slow(&self, _block_number: BlockNumber) -> Option<B256>
where
T: ReceiptExt,
{
#[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)
pub fn ethereum_receipts_root(&self, _block_number: BlockNumber) -> Option<B256> {
self.receipts.root_slow(self.block_number_to_index(_block_number)?, |receipts| {
reth_primitives::proofs::calculate_receipt_root_no_memo(receipts)
})
}
}

View File

@ -1,19 +1,16 @@
//! Receipt abstraction
use crate::{InMemorySize, MaybeArbitrary, MaybeCompact, MaybeSerde};
use alloc::vec::Vec;
use core::fmt;
use alloy_consensus::{
Eip2718EncodableReceipt, RlpDecodableReceipt, RlpEncodableReceipt, TxReceipt, Typed2718,
};
use alloy_primitives::B256;
use crate::{InMemorySize, MaybeArbitrary, MaybeCompact, MaybeSerde};
use core::fmt;
/// Helper trait that unifies all behaviour required by receipt to support full node operations.
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.
#[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).
pub fn gas_spent_by_transactions<I, T>(receipts: I) -> Vec<(u64, u64)>
where

View File

@ -9,7 +9,6 @@ use alloy_primitives::{Bloom, Log, B256};
use alloy_rlp::{Decodable, Encodable, Header, RlpDecodable, RlpEncodable};
use bytes::BufMut;
use derive_more::{DerefMut, From, IntoIterator};
use reth_primitives_traits::receipt::ReceiptExt;
use serde::{Deserialize, Serialize};
use crate::TxType;
@ -269,15 +268,6 @@ impl Typed2718 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 {
/// Calculates a heuristic for the in-memory size of the [Receipt].
#[inline]

View File

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