mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
chore: rm receiptsext trait (#13296)
This commit is contained in:
@ -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),
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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]
|
||||
|
||||
@ -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,
|
||||
|
||||
Reference in New Issue
Block a user