From 06db2ffa6172a1ac20f61998f084cfc87197c6f3 Mon Sep 17 00:00:00 2001 From: Cody Wang Date: Sat, 12 Oct 2024 21:03:38 -0400 Subject: [PATCH 1/2] add eip1559 params to executable payload --- crates/rpc-types-beacon/src/payload.rs | 11 +++++++---- crates/rpc-types-engine/src/payload.rs | 2 ++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/crates/rpc-types-beacon/src/payload.rs b/crates/rpc-types-beacon/src/payload.rs index 511e478251c..59dfc3fe4ce 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,25 @@ 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..8f061f5a6d5 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 { From 9540b4b30235ea1ffb82b1664539c79dd3e8cccc Mon Sep 17 00:00:00 2001 From: Cody Wang Date: Mon, 14 Oct 2024 23:03:33 -0400 Subject: [PATCH 2/2] fmt and fix test --- crates/rpc-types-beacon/src/payload.rs | 17 ++++++++++++++--- crates/rpc-types-engine/src/payload.rs | 2 ++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/crates/rpc-types-beacon/src/payload.rs b/crates/rpc-types-beacon/src/payload.rs index 59dfc3fe4ce..88d3f573289 100644 --- a/crates/rpc-types-beacon/src/payload.rs +++ b/crates/rpc-types-beacon/src/payload.rs @@ -367,14 +367,25 @@ struct BeaconExecutionPayloadV3<'a> { impl<'a> From> for ExecutionPayloadV3 { fn from(payload: BeaconExecutionPayloadV3<'a>) -> Self { - 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 } + 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, eip_1559_params } = 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, diff --git a/crates/rpc-types-engine/src/payload.rs b/crates/rpc-types-engine/src/payload.rs index 8f061f5a6d5..7c5b682d42b 100644 --- a/crates/rpc-types-engine/src/payload.rs +++ b/crates/rpc-types-engine/src/payload.rs @@ -399,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()?, }) } } @@ -540,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()?,