pub struct ExecutionPayload {Show 19 fields
pub parent_hash: [u8; 32],
pub fee_recipient: Bytes20,
pub state_root: [u8; 32],
pub receipts_root: [u8; 32],
pub logs_bloom: LogsBloom,
pub prev_randao: [u8; 32],
pub block_number: u64,
pub gas_limit: u64,
pub gas_used: u64,
pub timestamp: u64,
pub extra_data: SszList<u8, MAX_EXTRA_DATA_BYTES>,
pub base_fee_per_gas: [u8; 32],
pub block_hash: [u8; 32],
pub transactions: ProgressiveList<ProgressiveList<u8>>,
pub withdrawals: ProgressiveList<Withdrawal>,
pub blob_gas_used: u64,
pub excess_blob_gas: u64,
pub block_access_list: ProgressiveList<u8>,
pub slot_number: u64,
}Expand description
SSZ container matching SszExecutionPayload at execution-specs 3c3b6f4af
(#3248): a ProgressiveContainer(active_fields=[1; 19]) whose transaction,
withdrawal and block-access-list fields are progressive lists.
HashTreeRoot is hand-written because libssz-derive has no progressive
support; encode/decode still derive, since nothing progressive changes the
wire layout (ProgressiveList delegates both to Vec<T>).
Fields§
§parent_hash: [u8; 32]§fee_recipient: Bytes20§state_root: [u8; 32]§receipts_root: [u8; 32]§logs_bloom: LogsBloom§prev_randao: [u8; 32]§block_number: u64§gas_limit: u64§gas_used: u64§timestamp: u64§extra_data: SszList<u8, MAX_EXTRA_DATA_BYTES>§base_fee_per_gas: [u8; 32]base_fee_per_gas encoded as a 256-bit unsigned integer (little-endian).
block_hash: [u8; 32]§transactions: ProgressiveList<ProgressiveList<u8>>§withdrawals: ProgressiveList<Withdrawal>§blob_gas_used: u64§excess_blob_gas: u64§block_access_list: ProgressiveList<u8>EIP-7928 block-level access list (full serialized BAL bytes).
slot_number: u64EIP-7843 slot number (Amsterdam+). Last field, matching the execution-specs
ExecutionPayloadV4 layout so the native path is byte-compatible with the
spec-current payload. Provided by the L2 producer and carried to L1.
Trait Implementations§
Source§impl Clone for ExecutionPayload
impl Clone for ExecutionPayload
Source§impl Debug for ExecutionPayload
impl Debug for ExecutionPayload
impl Eq for ExecutionPayload
Source§impl HashTreeRoot for ExecutionPayload
impl HashTreeRoot for ExecutionPayload
fn hash_tree_root(&self, hasher: &impl Sha256Hasher) -> Node
Source§fn is_basic_type() -> boolwhere
Self: Sized,
fn is_basic_type() -> boolwhere
Self: Sized,
true for SSZ basic types (bool, uN, byte arrays).
Composite types (containers, vectors, lists) return false.
Used by Vector/List HTR to decide between packing and per-element hashing.Source§impl PartialEq for ExecutionPayload
impl PartialEq for ExecutionPayload
Source§impl SszDecode for ExecutionPayload
impl SszDecode for ExecutionPayload
Source§fn is_fixed_size() -> bool
fn is_fixed_size() -> bool
true if this type has a fixed SSZ size.Source§fn fixed_size() -> usize
fn fixed_size() -> usize
is_fixed_size() is true.Source§fn from_ssz_bytes(bytes: &[u8]) -> Result<Self, DecodeError>
fn from_ssz_bytes(bytes: &[u8]) -> Result<Self, DecodeError>
Source§fn ssz_decode_fixed_vec(bytes: &[u8]) -> Result<Vec<Self>, DecodeError>
fn ssz_decode_fixed_vec(bytes: &[u8]) -> Result<Vec<Self>, DecodeError>
Vec of fixed-size items. Read moreSource§impl SszEncode for ExecutionPayload
impl SszEncode for ExecutionPayload
Source§fn is_fixed_size() -> bool
fn is_fixed_size() -> bool
true if this type has a fixed SSZ size.Source§fn fixed_size() -> usize
fn fixed_size() -> usize
is_fixed_size() is true.Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn ssz_append(&self, buf: &mut Vec<u8>)
fn ssz_append(&self, buf: &mut Vec<u8>)
self to buf.impl StructuralPartialEq for ExecutionPayload
Auto Trait Implementations§
impl Freeze for ExecutionPayload
impl RefUnwindSafe for ExecutionPayload
impl Send for ExecutionPayload
impl Sync for ExecutionPayload
impl Unpin for ExecutionPayload
impl UnsafeUnpin for ExecutionPayload
impl UnwindSafe for ExecutionPayload
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.