Re-issue ForkchoiceUpdate based on updated PayloadStatus (#9102)

Co-Authored-By: hopinheimer <knmanas6@gmail.com>

Co-Authored-By: Michael Sproul <michael@sigmaprime.io>

Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com>
This commit is contained in:
hopinheimer
2026-04-25 04:04:09 -04:00
committed by GitHub
parent 8a384ff445
commit df764ffa9a
14 changed files with 808 additions and 41 deletions

View File

@@ -1,7 +1,7 @@
use super::*;
use alloy_rlp::RlpEncodable;
use serde::{Deserialize, Serialize};
use ssz::{Decode, TryFromIter};
use ssz::{Decode, Encode, TryFromIter};
use ssz_types::{FixedVector, VariableList, typenum::Unsigned};
use strum::EnumString;
use superstruct::superstruct;
@@ -481,6 +481,34 @@ pub enum RequestsError {
#[serde(transparent)]
pub struct JsonExecutionRequests(pub Vec<String>);
impl<E: EthSpec> From<ExecutionRequests<E>> for JsonExecutionRequests {
fn from(requests: ExecutionRequests<E>) -> Self {
let mut result = Vec::new();
if !requests.deposits.is_empty() {
result.push(format!(
"0x{:02x}{}",
RequestType::Deposit.to_u8(),
hex::encode(requests.deposits.as_ssz_bytes())
));
}
if !requests.withdrawals.is_empty() {
result.push(format!(
"0x{:02x}{}",
RequestType::Withdrawal.to_u8(),
hex::encode(requests.withdrawals.as_ssz_bytes())
));
}
if !requests.consolidations.is_empty() {
result.push(format!(
"0x{:02x}{}",
RequestType::Consolidation.to_u8(),
hex::encode(requests.consolidations.as_ssz_bytes())
));
}
JsonExecutionRequests(result)
}
}
impl<E: EthSpec> TryFrom<JsonExecutionRequests> for ExecutionRequests<E> {
type Error = RequestsError;