From 2b4b372727c8d3b7d56e69daa2e0b2874834a2c0 Mon Sep 17 00:00:00 2001 From: pellekrab <78560773+PelleKrab@users.noreply.github.com> Date: Wed, 24 Sep 2025 15:14:21 -0600 Subject: [PATCH] fix(cache): use index N-1 when reading the inclusion list and correct serialization --- beacon_node/beacon_chain/src/execution_payload.rs | 8 +++++--- .../execution_layer/src/engine_api/http.rs | 15 ++++++++------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/beacon_node/beacon_chain/src/execution_payload.rs b/beacon_node/beacon_chain/src/execution_payload.rs index d2ddefe44e..6b8f835c04 100644 --- a/beacon_node/beacon_chain/src/execution_payload.rs +++ b/beacon_node/beacon_chain/src/execution_payload.rs @@ -106,15 +106,17 @@ impl PayloadNotifier { .spec .is_focil_enabled_for_epoch(block.slot().epoch(T::EthSpec::slots_per_epoch())) { + // Inclusion lists are those submitted for the prior slot. + let il_slot = block.slot().saturating_sub(1_u64); let inclusion_list_transactions = chain .inclusion_list_cache .read() - .get_inclusion_list_transactions(block.slot()) + .get_inclusion_list_transactions(il_slot) .unwrap_or(vec![].into()); info!( - tx_count = inclusion_list_transactions.len(), - slot = ?block.slot(), + tx_count = inclusion_list_transactions.len(), + slot = ?il_slot, "Adding inclusion list transactions in the Payload Notifier" ); inclusion_list_transactions diff --git a/beacon_node/execution_layer/src/engine_api/http.rs b/beacon_node/execution_layer/src/engine_api/http.rs index 7457422ae9..68ae8e9081 100644 --- a/beacon_node/execution_layer/src/engine_api/http.rs +++ b/beacon_node/execution_layer/src/engine_api/http.rs @@ -869,13 +869,14 @@ impl HttpJsonRpc { &self, new_payload_request_eip7805: NewPayloadRequestEip7805<'_, E>, ) -> Result { - // TODO(focil) clean this up? - let mut il_transactions = vec![]; - for transaction in new_payload_request_eip7805.il_transactions { - if let Ok(hex_tx) = String::from_utf8(transaction.into()).map(|v| format!("0x{}", v)) { - il_transactions.push(hex_tx); - } - } + let il_transactions: Vec = new_payload_request_eip7805 + .il_transactions + .into_iter() + .map(|tx| { + let bytes: Vec = tx.into(); + format!("0x{}", hex::encode(bytes)) + }) + .collect(); let params = json!([ JsonExecutionPayload::V5(new_payload_request_eip7805.execution_payload.clone().into()),