diff --git a/crates/rpc-types-beacon/src/payload.rs b/crates/rpc-types-beacon/src/payload.rs index 511e478251c..88d3f573289 100644 --- a/crates/rpc-types-beacon/src/payload.rs +++ b/crates/rpc-types-beacon/src/payload.rs @@ -13,7 +13,7 @@ use alloy_eips::{ eip4895::Withdrawal, eip6110::DepositRequest, eip7002::WithdrawalRequest, eip7251::ConsolidationRequest, }; -use alloy_primitives::{Address, Bloom, Bytes, B256, U256}; +use alloy_primitives::{Address, Bloom, Bytes, B256, B64, U256}; use alloy_rpc_types_engine::{ ExecutionPayload, ExecutionPayloadV1, ExecutionPayloadV2, ExecutionPayloadV3, ExecutionPayloadV4, @@ -361,22 +361,36 @@ struct BeaconExecutionPayloadV3<'a> { blob_gas_used: u64, #[serde_as(as = "DisplayFromStr")] excess_blob_gas: u64, + #[serde_as(as = "DisplayFromStr")] + eip_1559_params: B64, } impl<'a> From> for ExecutionPayloadV3 { fn from(payload: BeaconExecutionPayloadV3<'a>) -> Self { - let BeaconExecutionPayloadV3 { payload_inner, blob_gas_used, excess_blob_gas } = payload; - Self { payload_inner: payload_inner.into(), blob_gas_used, excess_blob_gas } + let BeaconExecutionPayloadV3 { + payload_inner, + blob_gas_used, + excess_blob_gas, + eip_1559_params, + } = payload; + Self { + payload_inner: payload_inner.into(), + blob_gas_used, + excess_blob_gas, + eip_1559_params, + } } } impl<'a> From<&'a ExecutionPayloadV3> for BeaconExecutionPayloadV3<'a> { fn from(value: &'a ExecutionPayloadV3) -> Self { - let ExecutionPayloadV3 { payload_inner, blob_gas_used, excess_blob_gas } = value; + let ExecutionPayloadV3 { payload_inner, blob_gas_used, excess_blob_gas, eip_1559_params } = + value; BeaconExecutionPayloadV3 { payload_inner: payload_inner.into(), blob_gas_used: *blob_gas_used, excess_blob_gas: *excess_blob_gas, + eip_1559_params: eip_1559_params.clone(), } } } diff --git a/crates/rpc-types-engine/src/payload.rs b/crates/rpc-types-engine/src/payload.rs index faa00b4af97..7c5b682d42b 100644 --- a/crates/rpc-types-engine/src/payload.rs +++ b/crates/rpc-types-engine/src/payload.rs @@ -332,6 +332,8 @@ pub struct ExecutionPayloadV3 { /// See #[cfg_attr(feature = "serde", serde(with = "alloy_serde::quantity"))] pub excess_blob_gas: u64, + /// Array of hex[`u64`] representing the EIP-1559 parameters, enabled with V3 + pub eip_1559_params: B64, } impl ExecutionPayloadV3 { @@ -397,6 +399,7 @@ impl ssz::Decode for ExecutionPayloadV3 { }, blob_gas_used: decoder.decode_next()?, excess_blob_gas: decoder.decode_next()?, + eip_1559_params: decoder.decode_next()?, }) } } @@ -538,6 +541,7 @@ impl ssz::Decode for ExecutionPayloadV4 { }, blob_gas_used: decoder.decode_next()?, excess_blob_gas: decoder.decode_next()?, + eip_1559_params: decoder.decode_next()?, }, deposit_requests: decoder.decode_next()?, withdrawal_requests: decoder.decode_next()?,