This commit is contained in:
Pawan Dhananjay
2026-01-19 14:51:32 -08:00
parent 47094d592c
commit 658163cfde
16 changed files with 468 additions and 44 deletions

View File

@@ -58,6 +58,8 @@ pub struct ExecutionBlockHeader {
pub excess_blob_gas: Option<u64>,
pub parent_beacon_block_root: Option<Hash256>,
pub requests_root: Option<Hash256>,
pub block_access_list_root: Option<Hash256>,
pub slot_number: Option<u64>,
}
impl ExecutionBlockHeader {
@@ -71,6 +73,8 @@ impl ExecutionBlockHeader {
rlp_excess_blob_gas: Option<u64>,
rlp_parent_beacon_block_root: Option<Hash256>,
rlp_requests_root: Option<Hash256>,
rlp_block_access_list_root: Option<Hash256>,
rlp_slot_number: Option<u64>,
) -> Self {
// Most of these field mappings are defined in EIP-3675 except for `mixHash`, which is
// defined in EIP-4399.
@@ -96,6 +100,8 @@ impl ExecutionBlockHeader {
excess_blob_gas: rlp_excess_blob_gas,
parent_beacon_block_root: rlp_parent_beacon_block_root,
requests_root: rlp_requests_root,
block_access_list_root: rlp_block_access_list_root,
slot_number: rlp_slot_number,
}
}
}
@@ -124,6 +130,8 @@ pub struct EncodableExecutionBlockHeader<'a> {
pub excess_blob_gas: Option<u64>,
pub parent_beacon_block_root: Option<&'a [u8]>,
pub requests_root: Option<&'a [u8]>,
pub block_access_list_root: Option<&'a [u8]>,
pub slot_number: Option<u64>,
}
impl<'a> From<&'a ExecutionBlockHeader> for EncodableExecutionBlockHeader<'a> {
@@ -150,6 +158,8 @@ impl<'a> From<&'a ExecutionBlockHeader> for EncodableExecutionBlockHeader<'a> {
excess_blob_gas: header.excess_blob_gas,
parent_beacon_block_root: None,
requests_root: None,
block_access_list_root: None,
slot_number: header.slot_number,
};
if let Some(withdrawals_root) = &header.withdrawals_root {
encodable.withdrawals_root = Some(withdrawals_root.as_slice());
@@ -160,6 +170,9 @@ impl<'a> From<&'a ExecutionBlockHeader> for EncodableExecutionBlockHeader<'a> {
if let Some(requests_root) = &header.requests_root {
encodable.requests_root = Some(requests_root.as_slice())
}
if let Some(block_access_list_root) = &header.block_access_list_root {
encodable.block_access_list_root = Some(block_access_list_root.as_slice())
}
encodable
}
}

View File

@@ -113,6 +113,10 @@ pub struct ExecutionPayload<E: EthSpec> {
#[superstruct(only(Gloas))]
#[serde(with = "ssz_types::serde_utils::hex_var_list")]
pub block_access_list: VariableList<u8, E::MaxBytesPerTransaction>,
/// EIP-7843: Slot number
#[superstruct(only(Gloas), partial_getter(copy))]
#[serde(with = "serde_utils::quoted_u64")]
pub slot_number: u64,
}
impl<'a, E: EthSpec> ExecutionPayloadRef<'a, E> {

View File

@@ -117,6 +117,10 @@ pub struct ExecutionPayloadHeader<E: EthSpec> {
/// EIP-7928: Block access list root
#[superstruct(only(Gloas), partial_getter(copy))]
pub block_access_list_root: Hash256,
/// EIP-7843: Slot number
#[superstruct(only(Gloas), partial_getter(copy))]
#[serde(with = "serde_utils::quoted_u64")]
pub slot_number: u64,
}
impl<E: EthSpec> ExecutionPayloadHeader<E> {
@@ -291,6 +295,7 @@ impl<E: EthSpec> ExecutionPayloadHeaderFulu<E> {
blob_gas_used: self.blob_gas_used,
excess_blob_gas: self.excess_blob_gas,
block_access_list_root: Hash256::zero(),
slot_number: 0,
}
}
}
@@ -431,6 +436,7 @@ impl<'a, E: EthSpec> From<&'a ExecutionPayloadGloas<E>> for ExecutionPayloadHead
blob_gas_used: payload.blob_gas_used,
excess_blob_gas: payload.excess_blob_gas,
block_access_list_root: payload.block_access_list.tree_hash_root(),
slot_number: payload.slot_number,
}
}
}