pub trait BlockHeader {
Show 36 methods
// Required methods
fn parent_hash(&self) -> B256;
fn ommers_hash(&self) -> B256;
fn beneficiary(&self) -> Address;
fn state_root(&self) -> B256;
fn transactions_root(&self) -> B256;
fn receipts_root(&self) -> B256;
fn withdrawals_root(&self) -> Option<B256>;
fn logs_bloom(&self) -> Bloom;
fn difficulty(&self) -> U256;
fn number(&self) -> BlockNumber;
fn gas_limit(&self) -> u64;
fn gas_used(&self) -> u64;
fn timestamp(&self) -> u64;
fn mix_hash(&self) -> Option<B256>;
fn nonce(&self) -> Option<B64>;
fn base_fee_per_gas(&self) -> Option<u64>;
fn blob_gas_used(&self) -> Option<u64>;
fn excess_blob_gas(&self) -> Option<u64>;
fn parent_beacon_block_root(&self) -> Option<B256>;
fn requests_hash(&self) -> Option<B256>;
fn block_access_list_hash(&self) -> Option<B256>;
fn slot_number(&self) -> Option<u64>;
fn extra_data(&self) -> &Bytes;
// Provided methods
fn header_info(&self) -> HeaderInfo { ... }
fn header_roots(&self) -> HeaderRoots { ... }
fn blob_fee(&self, blob_params: BlobParams) -> Option<u128> { ... }
fn next_block_excess_blob_gas(&self, blob_params: BlobParams) -> Option<u64> { ... }
fn maybe_next_block_excess_blob_gas(
&self,
blob_params: Option<BlobParams>,
) -> Option<u64> { ... }
fn next_block_blob_fee(&self, blob_params: BlobParams) -> Option<u128> { ... }
fn maybe_next_block_blob_fee(
&self,
blob_params: Option<BlobParams>,
) -> Option<u128> { ... }
fn next_block_base_fee(&self, base_fee_params: BaseFeeParams) -> Option<u64> { ... }
fn parent_num_hash(&self) -> BlockNumHash { ... }
fn is_empty(&self) -> bool { ... }
fn is_zero_difficulty(&self) -> bool { ... }
fn exceeds_allowed_future_timestamp(&self, present_timestamp: u64) -> bool { ... }
fn is_nonce_zero(&self) -> bool { ... }
}Expand description
Trait for extracting specific Ethereum block data from a header
Required Methods§
Sourcefn parent_hash(&self) -> B256
fn parent_hash(&self) -> B256
Retrieves the parent hash of the block
Sourcefn ommers_hash(&self) -> B256
fn ommers_hash(&self) -> B256
Retrieves the ommers hash of the block
Sourcefn beneficiary(&self) -> Address
fn beneficiary(&self) -> Address
Retrieves the beneficiary (miner) of the block
Sourcefn state_root(&self) -> B256
fn state_root(&self) -> B256
Retrieves the state root hash of the block
Sourcefn transactions_root(&self) -> B256
fn transactions_root(&self) -> B256
Retrieves the transactions root hash of the block
Sourcefn receipts_root(&self) -> B256
fn receipts_root(&self) -> B256
Retrieves the receipts root hash of the block
Sourcefn withdrawals_root(&self) -> Option<B256>
fn withdrawals_root(&self) -> Option<B256>
Retrieves the withdrawals root hash of the block, if available
Sourcefn logs_bloom(&self) -> Bloom
fn logs_bloom(&self) -> Bloom
Retrieves the logs bloom filter of the block
Sourcefn difficulty(&self) -> U256
fn difficulty(&self) -> U256
Retrieves the difficulty of the block
Sourcefn number(&self) -> BlockNumber
fn number(&self) -> BlockNumber
Retrieves the block number
Sourcefn base_fee_per_gas(&self) -> Option<u64>
fn base_fee_per_gas(&self) -> Option<u64>
Retrieves the base fee per gas of the block, if available
Sourcefn blob_gas_used(&self) -> Option<u64>
fn blob_gas_used(&self) -> Option<u64>
Retrieves the blob gas used by the block, if available
Sourcefn excess_blob_gas(&self) -> Option<u64>
fn excess_blob_gas(&self) -> Option<u64>
Retrieves the excess blob gas of the block, if available
Sourcefn parent_beacon_block_root(&self) -> Option<B256>
fn parent_beacon_block_root(&self) -> Option<B256>
Retrieves the parent beacon block root of the block, if available
Sourcefn requests_hash(&self) -> Option<B256>
fn requests_hash(&self) -> Option<B256>
Retrieves the requests hash of the block, if available
Sourcefn block_access_list_hash(&self) -> Option<B256>
fn block_access_list_hash(&self) -> Option<B256>
Retrieves the block access list hash of the block, if available
Sourcefn slot_number(&self) -> Option<u64>
fn slot_number(&self) -> Option<u64>
Retrieves the slot number of the block, if available
Sourcefn extra_data(&self) -> &Bytes
fn extra_data(&self) -> &Bytes
Retrieves the block’s extra data field
Provided Methods§
Sourcefn header_info(&self) -> HeaderInfo
fn header_info(&self) -> HeaderInfo
Extracts essential information into one container type.
Sourcefn header_roots(&self) -> HeaderRoots
fn header_roots(&self) -> HeaderRoots
Returns all roots contained in the header.
Sourcefn blob_fee(&self, blob_params: BlobParams) -> Option<u128>
fn blob_fee(&self, blob_params: BlobParams) -> Option<u128>
Returns the blob fee for this block according to the EIP-4844 spec.
Returns None if excess_blob_gas is None
Sourcefn next_block_excess_blob_gas(&self, blob_params: BlobParams) -> Option<u64>
fn next_block_excess_blob_gas(&self, blob_params: BlobParams) -> Option<u64>
Calculate excess blob gas for the next block according to the EIP-4844 spec.
Returns a None if no excess blob gas is set, no EIP-4844 support
Sourcefn maybe_next_block_excess_blob_gas(
&self,
blob_params: Option<BlobParams>,
) -> Option<u64>
fn maybe_next_block_excess_blob_gas( &self, blob_params: Option<BlobParams>, ) -> Option<u64>
Convenience function for Self::next_block_excess_blob_gas with an optional
BlobParams argument.
Returns None if the blob_params are None.
Sourcefn next_block_blob_fee(&self, blob_params: BlobParams) -> Option<u128>
fn next_block_blob_fee(&self, blob_params: BlobParams) -> Option<u128>
Returns the blob fee for the next block according to the EIP-4844 spec.
Returns None if excess_blob_gas is None.
Sourcefn maybe_next_block_blob_fee(
&self,
blob_params: Option<BlobParams>,
) -> Option<u128>
fn maybe_next_block_blob_fee( &self, blob_params: Option<BlobParams>, ) -> Option<u128>
Convenience function for Self::next_block_blob_fee with an optional BlobParams
argument.
Returns None if the blob_params are None.
Sourcefn next_block_base_fee(&self, base_fee_params: BaseFeeParams) -> Option<u64>
fn next_block_base_fee(&self, base_fee_params: BaseFeeParams) -> Option<u64>
Calculate base fee for next block according to the EIP-1559 spec.
Returns a None if no base fee is set, no EIP-1559 support
Sourcefn parent_num_hash(&self) -> BlockNumHash
fn parent_num_hash(&self) -> BlockNumHash
Returns the parent block’s number and hash
Note: for the genesis block the parent number is 0 and the parent hash is the zero hash.
Sourcefn is_empty(&self) -> bool
fn is_empty(&self) -> bool
Checks if the header is considered empty - has no transactions, no ommers or withdrawals
Sourcefn is_zero_difficulty(&self) -> bool
fn is_zero_difficulty(&self) -> bool
Checks if the block’s difficulty is set to zero, indicating a Proof-of-Stake header.
This function is linked to EIP-3675, proposing the consensus upgrade to Proof-of-Stake: EIP-3675
Verifies whether, as per the EIP, the block’s difficulty is updated to zero, signifying the transition to a Proof-of-Stake mechanism.
Returns true if the block’s difficulty matches the constant zero set by the EIP.
Sourcefn exceeds_allowed_future_timestamp(&self, present_timestamp: u64) -> bool
fn exceeds_allowed_future_timestamp(&self, present_timestamp: u64) -> bool
Checks if the block’s timestamp is in the future based on the present timestamp.
Clock can drift but this can be consensus issue.
Note: This check is relevant only pre-merge.
Sourcefn is_nonce_zero(&self) -> bool
fn is_nonce_zero(&self) -> bool
Checks if the nonce exists, and if it exists, if it’s zero.
If the nonce is None, then this returns false.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl<'a, T: 'a + BlockHeader + ?Sized> BlockHeader for &'a T
impl<'a, T: 'a + BlockHeader + ?Sized> BlockHeader for &'a T
fn header_info(&self) -> HeaderInfo
fn header_roots(&self) -> HeaderRoots
fn parent_hash(&self) -> B256
fn ommers_hash(&self) -> B256
fn beneficiary(&self) -> Address
fn state_root(&self) -> B256
fn transactions_root(&self) -> B256
fn receipts_root(&self) -> B256
fn withdrawals_root(&self) -> Option<B256>
fn logs_bloom(&self) -> Bloom
fn difficulty(&self) -> U256
fn number(&self) -> BlockNumber
fn gas_limit(&self) -> u64
fn gas_used(&self) -> u64
fn timestamp(&self) -> u64
fn mix_hash(&self) -> Option<B256>
fn nonce(&self) -> Option<B64>
fn base_fee_per_gas(&self) -> Option<u64>
fn blob_gas_used(&self) -> Option<u64>
fn excess_blob_gas(&self) -> Option<u64>
fn parent_beacon_block_root(&self) -> Option<B256>
fn requests_hash(&self) -> Option<B256>
fn block_access_list_hash(&self) -> Option<B256>
fn slot_number(&self) -> Option<u64>
fn extra_data(&self) -> &Bytes
fn blob_fee(&self, blob_params: BlobParams) -> Option<u128>
fn next_block_excess_blob_gas(&self, blob_params: BlobParams) -> Option<u64>
fn maybe_next_block_excess_blob_gas( &self, blob_params: Option<BlobParams>, ) -> Option<u64>
fn next_block_blob_fee(&self, blob_params: BlobParams) -> Option<u128>
fn maybe_next_block_blob_fee( &self, blob_params: Option<BlobParams>, ) -> Option<u128>
fn next_block_base_fee(&self, base_fee_params: BaseFeeParams) -> Option<u64>
fn parent_num_hash(&self) -> BlockNumHash
fn is_empty(&self) -> bool
fn is_zero_difficulty(&self) -> bool
fn exceeds_allowed_future_timestamp(&self, present_timestamp: u64) -> bool
fn is_nonce_zero(&self) -> bool
Source§impl<T: BlockHeader + ?Sized> BlockHeader for Arc<T>
impl<T: BlockHeader + ?Sized> BlockHeader for Arc<T>
fn header_info(&self) -> HeaderInfo
fn header_roots(&self) -> HeaderRoots
fn parent_hash(&self) -> B256
fn ommers_hash(&self) -> B256
fn beneficiary(&self) -> Address
fn state_root(&self) -> B256
fn transactions_root(&self) -> B256
fn receipts_root(&self) -> B256
fn withdrawals_root(&self) -> Option<B256>
fn logs_bloom(&self) -> Bloom
fn difficulty(&self) -> U256
fn number(&self) -> BlockNumber
fn gas_limit(&self) -> u64
fn gas_used(&self) -> u64
fn timestamp(&self) -> u64
fn mix_hash(&self) -> Option<B256>
fn nonce(&self) -> Option<B64>
fn base_fee_per_gas(&self) -> Option<u64>
fn blob_gas_used(&self) -> Option<u64>
fn excess_blob_gas(&self) -> Option<u64>
fn parent_beacon_block_root(&self) -> Option<B256>
fn requests_hash(&self) -> Option<B256>
fn block_access_list_hash(&self) -> Option<B256>
fn slot_number(&self) -> Option<u64>
fn extra_data(&self) -> &Bytes
fn blob_fee(&self, blob_params: BlobParams) -> Option<u128>
fn next_block_excess_blob_gas(&self, blob_params: BlobParams) -> Option<u64>
fn maybe_next_block_excess_blob_gas( &self, blob_params: Option<BlobParams>, ) -> Option<u64>
fn next_block_blob_fee(&self, blob_params: BlobParams) -> Option<u128>
fn maybe_next_block_blob_fee( &self, blob_params: Option<BlobParams>, ) -> Option<u128>
fn next_block_base_fee(&self, base_fee_params: BaseFeeParams) -> Option<u64>
fn parent_num_hash(&self) -> BlockNumHash
fn is_empty(&self) -> bool
fn is_zero_difficulty(&self) -> bool
fn exceeds_allowed_future_timestamp(&self, present_timestamp: u64) -> bool
fn is_nonce_zero(&self) -> bool
Source§impl<T: BlockHeader> BlockHeader for WithOtherFields<T>
Available on crate feature serde only.
impl<T: BlockHeader> BlockHeader for WithOtherFields<T>
serde only.