From 800304d623e99bd635821292b93d86de5911f3bf Mon Sep 17 00:00:00 2001 From: conache Date: Wed, 15 Jul 2026 14:15:07 +0300 Subject: [PATCH 1/7] Add get IL rpc requests support to the engine api module --- .../execution_layer/src/engine_api/http.rs | 19 +++++++++++++++++++ .../src/engine_api/json_structures.rs | 6 ++++++ 2 files changed, 25 insertions(+) diff --git a/beacon_node/execution_layer/src/engine_api/http.rs b/beacon_node/execution_layer/src/engine_api/http.rs index 76f172e3f72..cb7d8ed4097 100644 --- a/beacon_node/execution_layer/src/engine_api/http.rs +++ b/beacon_node/execution_layer/src/engine_api/http.rs @@ -66,6 +66,9 @@ pub const ENGINE_GET_BLOBS_V2: &str = "engine_getBlobsV2"; pub const ENGINE_GET_BLOBS_V3: &str = "engine_getBlobsV3"; pub const ENGINE_GET_BLOBS_TIMEOUT: Duration = Duration::from_secs(1); +pub const ENGINE_GET_INCLUSION_LIST_V1: &str = "engine_getInclusionListV1"; +pub const ENGINE_GET_INCLUSION_LIST_TIMEOUT: Duration = Duration::from_secs(1); + /// This error is returned during a `chainId` call by Geth. pub const EIP155_ERROR_STR: &str = "chain not synced beyond EIP-155 replay-protection fork block"; /// This code is returned by all clients when a method is not supported @@ -93,6 +96,7 @@ pub static LIGHTHOUSE_CAPABILITIES: &[&str] = &[ ENGINE_GET_CLIENT_VERSION_V1, ENGINE_GET_BLOBS_V2, ENGINE_GET_BLOBS_V3, + ENGINE_GET_INCLUSION_LIST_V1, ]; /// We opt to initialize the JsonClientVersionV1 rather than the ClientVersionV1 @@ -743,6 +747,21 @@ impl HttpJsonRpc { .await } + pub async fn get_inclusion_list_v1( + &self, + block_hash: ExecutionBlockHash, + ) -> Result, Error> { + let params = json!([block_hash]); + + self.rpc_request::>( + ENGINE_GET_INCLUSION_LIST_V1, + params, + ENGINE_GET_INCLUSION_LIST_TIMEOUT * self.execution_timeout_multiplier, + ) + .await + .map(|response| response.0) + } + pub async fn get_block_by_number( &self, query: BlockByNumberQuery<'_>, diff --git a/beacon_node/execution_layer/src/engine_api/json_structures.rs b/beacon_node/execution_layer/src/engine_api/json_structures.rs index 8b2a453cb47..8ef77edb584 100644 --- a/beacon_node/execution_layer/src/engine_api/json_structures.rs +++ b/beacon_node/execution_layer/src/engine_api/json_structures.rs @@ -1297,6 +1297,12 @@ impl TryFrom for ClientVersionV1 { } } +#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)] +#[serde(transparent)] +pub struct JsonInclusionListV1( + #[serde(with = "ssz_types::serde_utils::list_of_hex_var_list")] pub Transactions, +); + #[cfg(test)] mod tests { use bls::{PublicKeyBytes, SignatureBytes}; From c708ac1b97e11f715096e335e6230982be79c497 Mon Sep 17 00:00:00 2001 From: conache Date: Wed, 15 Jul 2026 14:36:44 +0300 Subject: [PATCH 2/7] Add serde tests for the IL engine api response --- .../execution_layer/src/engine_api/http.rs | 40 +++++++++++++++++++ .../src/engine_api/json_structures.rs | 1 + 2 files changed, 41 insertions(+) diff --git a/beacon_node/execution_layer/src/engine_api/http.rs b/beacon_node/execution_layer/src/engine_api/http.rs index cb7d8ed4097..d4b5e3d3255 100644 --- a/beacon_node/execution_layer/src/engine_api/http.rs +++ b/beacon_node/execution_layer/src/engine_api/http.rs @@ -1781,6 +1781,46 @@ mod test { ); } + fn assert_inclusion_list_serde( + name: &str, + as_obj: Transactions, + as_json: serde_json::Value, + ) { + assert_eq!( + serde_json::to_value(JsonInclusionListV1::(as_obj.clone())).unwrap(), + as_json, + "encoding for {}", + name + ); + assert_eq!( + serde_json::from_value::>(as_json) + .unwrap() + .0, + as_obj, + "decoding for {}", + name + ); + } + + #[test] + fn inclusion_list_serde() { + assert_inclusion_list_serde::( + "empty", + generate_transactions::(&[]), + json!([]), + ); + assert_inclusion_list_serde::( + "one empty tx", + generate_transactions::(&[0]), + json!(["0x"]), + ); + assert_inclusion_list_serde::( + "mixed bag", + generate_transactions::(&[0, 1, 3, 0]), + json!(["0x", "0x00", "0x000000", "0x"]), + ); + } + #[tokio::test] async fn get_block_by_number_request() { Tester::new(true) diff --git a/beacon_node/execution_layer/src/engine_api/json_structures.rs b/beacon_node/execution_layer/src/engine_api/json_structures.rs index 8ef77edb584..5a478cc6c21 100644 --- a/beacon_node/execution_layer/src/engine_api/json_structures.rs +++ b/beacon_node/execution_layer/src/engine_api/json_structures.rs @@ -1300,6 +1300,7 @@ impl TryFrom for ClientVersionV1 { #[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)] #[serde(transparent)] pub struct JsonInclusionListV1( + // TODO(heze): switch to using `ProgressiveList` instead of `Transactions` once the support for EIP-7916 is added #[serde(with = "ssz_types::serde_utils::list_of_hex_var_list")] pub Transactions, ); From 345d51eb491474c91ba01bfa5f63cdac011c78e6 Mon Sep 17 00:00:00 2001 From: conache Date: Wed, 15 Jul 2026 15:17:51 +0300 Subject: [PATCH 3/7] Expose get IL capability and execution layer wrapper method --- beacon_node/execution_layer/src/engine_api.rs | 13 ++++++++---- .../execution_layer/src/engine_api/http.rs | 1 + beacon_node/execution_layer/src/lib.rs | 20 +++++++++++++++++++ .../execution_layer/src/test_utils/mod.rs | 1 + 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/beacon_node/execution_layer/src/engine_api.rs b/beacon_node/execution_layer/src/engine_api.rs index 3aff96c9b15..c18e514f796 100644 --- a/beacon_node/execution_layer/src/engine_api.rs +++ b/beacon_node/execution_layer/src/engine_api.rs @@ -2,10 +2,11 @@ use crate::engines::ForkchoiceState; use crate::http::{ ENGINE_FORKCHOICE_UPDATED_V1, ENGINE_FORKCHOICE_UPDATED_V2, ENGINE_FORKCHOICE_UPDATED_V3, ENGINE_FORKCHOICE_UPDATED_V4, ENGINE_GET_BLOBS_V2, ENGINE_GET_CLIENT_VERSION_V1, - ENGINE_GET_PAYLOAD_BODIES_BY_HASH_V1, ENGINE_GET_PAYLOAD_BODIES_BY_RANGE_V1, - ENGINE_GET_PAYLOAD_V1, ENGINE_GET_PAYLOAD_V2, ENGINE_GET_PAYLOAD_V3, ENGINE_GET_PAYLOAD_V4, - ENGINE_GET_PAYLOAD_V5, ENGINE_GET_PAYLOAD_V6, ENGINE_NEW_PAYLOAD_V1, ENGINE_NEW_PAYLOAD_V2, - ENGINE_NEW_PAYLOAD_V3, ENGINE_NEW_PAYLOAD_V4, ENGINE_NEW_PAYLOAD_V5, + ENGINE_GET_INCLUSION_LIST_V1, ENGINE_GET_PAYLOAD_BODIES_BY_HASH_V1, + ENGINE_GET_PAYLOAD_BODIES_BY_RANGE_V1, ENGINE_GET_PAYLOAD_V1, ENGINE_GET_PAYLOAD_V2, + ENGINE_GET_PAYLOAD_V3, ENGINE_GET_PAYLOAD_V4, ENGINE_GET_PAYLOAD_V5, ENGINE_GET_PAYLOAD_V6, + ENGINE_NEW_PAYLOAD_V1, ENGINE_NEW_PAYLOAD_V2, ENGINE_NEW_PAYLOAD_V3, ENGINE_NEW_PAYLOAD_V4, + ENGINE_NEW_PAYLOAD_V5, }; use eth2::types::{ BlobsBundle, SsePayloadAttributes, SsePayloadAttributesV1, SsePayloadAttributesV2, @@ -621,6 +622,7 @@ pub struct EngineCapabilities { pub get_client_version_v1: bool, pub get_blobs_v2: bool, pub get_blobs_v3: bool, + pub get_inclusion_list_v1: bool, } impl EngineCapabilities { @@ -683,6 +685,9 @@ impl EngineCapabilities { if self.get_blobs_v2 { response.push(ENGINE_GET_BLOBS_V2); } + if self.get_inclusion_list_v1 { + response.push(ENGINE_GET_INCLUSION_LIST_V1); + } response } diff --git a/beacon_node/execution_layer/src/engine_api/http.rs b/beacon_node/execution_layer/src/engine_api/http.rs index d4b5e3d3255..5915513b051 100644 --- a/beacon_node/execution_layer/src/engine_api/http.rs +++ b/beacon_node/execution_layer/src/engine_api/http.rs @@ -1275,6 +1275,7 @@ impl HttpJsonRpc { get_client_version_v1: capabilities.contains(ENGINE_GET_CLIENT_VERSION_V1), get_blobs_v2: capabilities.contains(ENGINE_GET_BLOBS_V2), get_blobs_v3: capabilities.contains(ENGINE_GET_BLOBS_V3), + get_inclusion_list_v1: capabilities.contains(ENGINE_GET_INCLUSION_LIST_V1), }) } diff --git a/beacon_node/execution_layer/src/lib.rs b/beacon_node/execution_layer/src/lib.rs index c0a684611af..830ea8e98cd 100644 --- a/beacon_node/execution_layer/src/lib.rs +++ b/beacon_node/execution_layer/src/lib.rs @@ -155,6 +155,7 @@ pub enum Error { ZeroLengthTransaction, PayloadBodiesByRangeNotSupported, GetBlobsNotSupported, + GetInclusionListNotSupported, InvalidJWTSecret(String), InvalidForkForPayload, InvalidPayloadBody(String), @@ -1767,6 +1768,25 @@ impl ExecutionLayer { } } + pub async fn get_inclusion_list_v1( + &self, + block_hash: ExecutionBlockHash, + ) -> Result, Error> { + let capabilities = self.get_engine_capabilities(None).await?; + + if capabilities.get_inclusion_list_v1 { + self.engine() + .request( + |engine| async move { engine.api.get_inclusion_list_v1::(block_hash).await }, + ) + .await + .map_err(Box::new) + .map_err(Error::EngineError) + } else { + Err(Error::GetInclusionListNotSupported) + } + } + pub async fn get_block_by_number( &self, query: BlockByNumberQuery<'_>, diff --git a/beacon_node/execution_layer/src/test_utils/mod.rs b/beacon_node/execution_layer/src/test_utils/mod.rs index b42ac8c7175..6918c283e58 100644 --- a/beacon_node/execution_layer/src/test_utils/mod.rs +++ b/beacon_node/execution_layer/src/test_utils/mod.rs @@ -59,6 +59,7 @@ pub const DEFAULT_ENGINE_CAPABILITIES: EngineCapabilities = EngineCapabilities { get_client_version_v1: true, get_blobs_v2: true, get_blobs_v3: true, + get_inclusion_list_v1: true, }; pub static DEFAULT_CLIENT_VERSION: LazyLock = From 9ec1d4c1c35d11726239b586c5ba2b79450fa721 Mon Sep 17 00:00:00 2001 From: conache Date: Wed, 15 Jul 2026 15:58:35 +0300 Subject: [PATCH 4/7] Testing support --- .../execution_layer/src/engine_api/http.rs | 27 +++++++++++++++++++ .../test_utils/execution_block_generator.rs | 18 +++++++++++++ .../src/test_utils/handle_rpc.rs | 11 ++++++++ 3 files changed, 56 insertions(+) diff --git a/beacon_node/execution_layer/src/engine_api/http.rs b/beacon_node/execution_layer/src/engine_api/http.rs index 5915513b051..f9f9ce96071 100644 --- a/beacon_node/execution_layer/src/engine_api/http.rs +++ b/beacon_node/execution_layer/src/engine_api/http.rs @@ -1876,6 +1876,33 @@ mod test { .await; } + #[tokio::test] + async fn get_inclusion_list_v1_request() { + Tester::new(true) + .assert_request_equals( + |client| async move { + let _ = client + .get_inclusion_list_v1::(ExecutionBlockHash::repeat_byte(1)) + .await; + }, + json!({ + "id": STATIC_ID, + "jsonrpc": JSONRPC_VERSION, + "method": ENGINE_GET_INCLUSION_LIST_V1, + "params": [HASH_01] + }), + ) + .await; + + Tester::new(false) + .assert_auth_failure(|client| async move { + client + .get_inclusion_list_v1::(ExecutionBlockHash::repeat_byte(1)) + .await + }) + .await; + } + #[tokio::test] async fn forkchoice_updated_v1_with_payload_attributes_request() { Tester::new(true) diff --git a/beacon_node/execution_layer/src/test_utils/execution_block_generator.rs b/beacon_node/execution_layer/src/test_utils/execution_block_generator.rs index 2dcdc534301..eba94bafcd7 100644 --- a/beacon_node/execution_layer/src/test_utils/execution_block_generator.rs +++ b/beacon_node/execution_layer/src/test_utils/execution_block_generator.rs @@ -178,6 +178,11 @@ pub struct ExecutionBlockGenerator { /// execution requests with the generated payload ID. next_execution_requests: Option>, generate_blobs: bool, + /* + * Inclusion lists (heze+) + */ + /// The transactions returned by `getInclusionList` for any known block. + inclusion_list: Transactions, } fn make_rng() -> Arc> { @@ -221,6 +226,7 @@ impl ExecutionBlockGenerator { execution_requests: <_>::default(), next_execution_requests: None, generate_blobs: true, + inclusion_list: <_>::default(), }; generator.insert_pow_block(0).unwrap(); @@ -494,6 +500,18 @@ impl ExecutionBlockGenerator { self.next_execution_requests = Some(requests); } + /// Return the configured inclusion list transactions for the provided block. + pub fn get_inclusion_list(&self, block_hash: ExecutionBlockHash) -> Option> { + self.blocks + .contains_key(&block_hash) + .then(|| self.inclusion_list.clone()) + } + + /// Set the transactions returned by `getInclusionList`. + pub fn set_inclusion_list(&mut self, transactions: Transactions) { + self.inclusion_list = transactions; + } + /// Look up a blob and proof by versioned hash across all stored bundles. pub fn get_blob_and_proof(&self, versioned_hash: &Hash256) -> Option> { self.blobs_bundles diff --git a/beacon_node/execution_layer/src/test_utils/handle_rpc.rs b/beacon_node/execution_layer/src/test_utils/handle_rpc.rs index 98211c9c60a..5ed61ea2d91 100644 --- a/beacon_node/execution_layer/src/test_utils/handle_rpc.rs +++ b/beacon_node/execution_layer/src/test_utils/handle_rpc.rs @@ -563,6 +563,17 @@ pub async fn handle_rpc( let response: Option>> = results.into_iter().collect(); Ok(serde_json::to_value(response).unwrap()) } + ENGINE_GET_INCLUSION_LIST_V1 => { + let block_hash = get_param::(params, 0) + .map_err(|s| (s, BAD_PARAMS_ERROR_CODE))?; + let transactions = ctx + .execution_block_generator + .read() + .get_inclusion_list(block_hash) + .ok_or_else(|| ("Unknown payload".to_string(), UNKNOWN_PAYLOAD_ERROR_CODE))?; + + Ok(serde_json::to_value(JsonInclusionListV1::(transactions)).unwrap()) + } ENGINE_FORKCHOICE_UPDATED_V1 | ENGINE_FORKCHOICE_UPDATED_V2 | ENGINE_FORKCHOICE_UPDATED_V3 From 090c84fd6f3146b5720f56f0c1b829a9f3ce79c1 Mon Sep 17 00:00:00 2001 From: conache Date: Wed, 15 Jul 2026 16:22:12 +0300 Subject: [PATCH 5/7] Use accurate error for the request --- beacon_node/execution_layer/src/test_utils/handle_rpc.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/beacon_node/execution_layer/src/test_utils/handle_rpc.rs b/beacon_node/execution_layer/src/test_utils/handle_rpc.rs index 5ed61ea2d91..4f580f22dc6 100644 --- a/beacon_node/execution_layer/src/test_utils/handle_rpc.rs +++ b/beacon_node/execution_layer/src/test_utils/handle_rpc.rs @@ -570,7 +570,12 @@ pub async fn handle_rpc( .execution_block_generator .read() .get_inclusion_list(block_hash) - .ok_or_else(|| ("Unknown payload".to_string(), UNKNOWN_PAYLOAD_ERROR_CODE))?; + .ok_or_else(|| { + ( + format!("no block for hash {:?}", block_hash), + UNKNOWN_PAYLOAD_ERROR_CODE, + ) + })?; Ok(serde_json::to_value(JsonInclusionListV1::(transactions)).unwrap()) } From 259b854ef5577847adb3b64da0ca86d73f57616b Mon Sep 17 00:00:00 2001 From: conache Date: Tue, 4 Aug 2026 12:57:01 +0300 Subject: [PATCH 6/7] Use ProgressiveTransactions type --- .../execution_layer/src/engine_api/http.rs | 44 +++++++++++-------- .../src/engine_api/json_structures.rs | 6 +-- beacon_node/execution_layer/src/lib.rs | 9 ++-- .../test_utils/execution_block_generator.rs | 11 +++-- .../src/test_utils/handle_rpc.rs | 2 +- 5 files changed, 40 insertions(+), 32 deletions(-) diff --git a/beacon_node/execution_layer/src/engine_api/http.rs b/beacon_node/execution_layer/src/engine_api/http.rs index 959509a2770..342b7b0870e 100644 --- a/beacon_node/execution_layer/src/engine_api/http.rs +++ b/beacon_node/execution_layer/src/engine_api/http.rs @@ -16,6 +16,7 @@ use std::time::{Duration, Instant}; pub use deposit_log::{DepositLog, Log}; pub use reqwest::Client; +use types::ProgressiveTransactions; const STATIC_ID: u32 = 1; pub const JSONRPC_VERSION: &str = "2.0"; @@ -747,13 +748,13 @@ impl HttpJsonRpc { .await } - pub async fn get_inclusion_list_v1( + pub async fn get_inclusion_list_v1( &self, block_hash: ExecutionBlockHash, - ) -> Result, Error> { + ) -> Result { let params = json!([block_hash]); - self.rpc_request::>( + self.rpc_request::( ENGINE_GET_INCLUSION_LIST_V1, params, ENGINE_GET_INCLUSION_LIST_TIMEOUT * self.execution_timeout_multiplier, @@ -1554,7 +1555,7 @@ mod test { use super::*; use crate::test_utils::{DEFAULT_JWT_SECRET, MockServer}; use fixed_bytes::FixedBytesExtended; - use ssz_types::VariableList; + use ssz_types::{ProgressiveVariableList, VariableList}; use std::future::Future; use std::str::FromStr; use std::sync::Arc; @@ -1734,6 +1735,15 @@ mod test { txs } + fn generate_progressive_transactions(spec: &[usize]) -> ProgressiveTransactions { + let mut txs = ProgressiveTransactions::empty(); + for &num_bytes in spec { + txs.push(ProgressiveVariableList::new(vec![0; num_bytes])); + } + + txs + } + #[test] fn transaction_serde() { assert_transactions_serde::( @@ -1782,19 +1792,19 @@ mod test { ); } - fn assert_inclusion_list_serde( + fn assert_inclusion_list_serde( name: &str, - as_obj: Transactions, + as_obj: ProgressiveTransactions, as_json: serde_json::Value, ) { assert_eq!( - serde_json::to_value(JsonInclusionListV1::(as_obj.clone())).unwrap(), + serde_json::to_value(JsonInclusionListV1(as_obj.clone())).unwrap(), as_json, "encoding for {}", name ); assert_eq!( - serde_json::from_value::>(as_json) + serde_json::from_value::(as_json) .unwrap() .0, as_obj, @@ -1805,19 +1815,15 @@ mod test { #[test] fn inclusion_list_serde() { - assert_inclusion_list_serde::( - "empty", - generate_transactions::(&[]), - json!([]), - ); - assert_inclusion_list_serde::( + assert_inclusion_list_serde("empty", generate_progressive_transactions(&[]), json!([])); + assert_inclusion_list_serde( "one empty tx", - generate_transactions::(&[0]), + generate_progressive_transactions(&[0]), json!(["0x"]), ); - assert_inclusion_list_serde::( + assert_inclusion_list_serde( "mixed bag", - generate_transactions::(&[0, 1, 3, 0]), + generate_progressive_transactions(&[0, 1, 3, 0]), json!(["0x", "0x00", "0x000000", "0x"]), ); } @@ -1882,7 +1888,7 @@ mod test { .assert_request_equals( |client| async move { let _ = client - .get_inclusion_list_v1::(ExecutionBlockHash::repeat_byte(1)) + .get_inclusion_list_v1(ExecutionBlockHash::repeat_byte(1)) .await; }, json!({ @@ -1897,7 +1903,7 @@ mod test { Tester::new(false) .assert_auth_failure(|client| async move { client - .get_inclusion_list_v1::(ExecutionBlockHash::repeat_byte(1)) + .get_inclusion_list_v1(ExecutionBlockHash::repeat_byte(1)) .await }) .await; diff --git a/beacon_node/execution_layer/src/engine_api/json_structures.rs b/beacon_node/execution_layer/src/engine_api/json_structures.rs index 0ab9b6b2f4a..b6f5f820034 100644 --- a/beacon_node/execution_layer/src/engine_api/json_structures.rs +++ b/beacon_node/execution_layer/src/engine_api/json_structures.rs @@ -1315,9 +1315,9 @@ impl TryFrom for ClientVersionV1 { #[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)] #[serde(transparent)] -pub struct JsonInclusionListV1( - // TODO(heze): switch to using `ProgressiveList` instead of `Transactions` once the support for EIP-7916 is added - #[serde(with = "ssz_types::serde_utils::list_of_hex_var_list")] pub Transactions, +pub struct JsonInclusionListV1( + #[serde(with = "ssz_types::serde_utils::prog_list_of_hex_prog_var_list")] + pub ProgressiveTransactions, ); #[cfg(test)] diff --git a/beacon_node/execution_layer/src/lib.rs b/beacon_node/execution_layer/src/lib.rs index fb4416b89b1..c44b0fd521c 100644 --- a/beacon_node/execution_layer/src/lib.rs +++ b/beacon_node/execution_layer/src/lib.rs @@ -48,7 +48,8 @@ use types::execution::BlockProductionVersion; use types::kzg_ext::{KzgCommitments, ProgressiveKzgCommitments}; use types::{ AbstractExecPayload, BlobsList, ExecutionPayloadDeneb, ExecutionRequests, - ExecutionRequestsElectra, ExecutionRequestsGloas, KzgProofs, SignedBlindedBeaconBlock, + ExecutionRequestsElectra, ExecutionRequestsGloas, KzgProofs, ProgressiveTransactions, + SignedBlindedBeaconBlock, }; use types::{ BeaconStateError, BlindedPayload, ChainSpec, Epoch, ExecPayload, ExecutionPayloadBellatrix, @@ -1779,14 +1780,12 @@ impl ExecutionLayer { pub async fn get_inclusion_list_v1( &self, block_hash: ExecutionBlockHash, - ) -> Result, Error> { + ) -> Result { let capabilities = self.get_engine_capabilities(None).await?; if capabilities.get_inclusion_list_v1 { self.engine() - .request( - |engine| async move { engine.api.get_inclusion_list_v1::(block_hash).await }, - ) + .request(|engine| async move { engine.api.get_inclusion_list_v1(block_hash).await }) .await .map_err(Box::new) .map_err(Error::EngineError) diff --git a/beacon_node/execution_layer/src/test_utils/execution_block_generator.rs b/beacon_node/execution_layer/src/test_utils/execution_block_generator.rs index e0e7e775715..30252425e62 100644 --- a/beacon_node/execution_layer/src/test_utils/execution_block_generator.rs +++ b/beacon_node/execution_layer/src/test_utils/execution_block_generator.rs @@ -27,7 +27,7 @@ use types::{ Blob, ChainSpec, EthSpec, ExecutionBlockHash, ExecutionPayload, ExecutionPayloadBellatrix, ExecutionPayloadCapella, ExecutionPayloadDeneb, ExecutionPayloadElectra, ExecutionPayloadFulu, ExecutionPayloadGloas, ExecutionPayloadHeader, ExecutionPayloadHeze, ExecutionRequests, - ForkName, Hash256, KzgProofs, Transaction, Transactions, Uint256, + ForkName, Hash256, KzgProofs, ProgressiveTransactions, Transaction, Transactions, Uint256, }; const TEST_BLOB_BUNDLE: &[u8] = include_bytes!("fixtures/mainnet/test_blobs_bundle.ssz"); @@ -182,7 +182,7 @@ pub struct ExecutionBlockGenerator { * Inclusion lists (heze+) */ /// The transactions returned by `getInclusionList` for any known block. - inclusion_list: Transactions, + inclusion_list: ProgressiveTransactions, } fn make_rng() -> Arc> { @@ -501,14 +501,17 @@ impl ExecutionBlockGenerator { } /// Return the configured inclusion list transactions for the provided block. - pub fn get_inclusion_list(&self, block_hash: ExecutionBlockHash) -> Option> { + pub fn get_inclusion_list( + &self, + block_hash: ExecutionBlockHash, + ) -> Option { self.blocks .contains_key(&block_hash) .then(|| self.inclusion_list.clone()) } /// Set the transactions returned by `getInclusionList`. - pub fn set_inclusion_list(&mut self, transactions: Transactions) { + pub fn set_inclusion_list(&mut self, transactions: ProgressiveTransactions) { self.inclusion_list = transactions; } diff --git a/beacon_node/execution_layer/src/test_utils/handle_rpc.rs b/beacon_node/execution_layer/src/test_utils/handle_rpc.rs index ff8514c88b7..8ff1ac3b35c 100644 --- a/beacon_node/execution_layer/src/test_utils/handle_rpc.rs +++ b/beacon_node/execution_layer/src/test_utils/handle_rpc.rs @@ -577,7 +577,7 @@ pub async fn handle_rpc( ) })?; - Ok(serde_json::to_value(JsonInclusionListV1::(transactions)).unwrap()) + Ok(serde_json::to_value(JsonInclusionListV1(transactions)).unwrap()) } ENGINE_FORKCHOICE_UPDATED_V1 | ENGINE_FORKCHOICE_UPDATED_V2 From 67323c415cb67e3259517a1e99260ef413f2e0ff Mon Sep 17 00:00:00 2001 From: conache Date: Tue, 4 Aug 2026 13:03:34 +0300 Subject: [PATCH 7/7] Fix import placing --- beacon_node/execution_layer/src/engine_api/http.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beacon_node/execution_layer/src/engine_api/http.rs b/beacon_node/execution_layer/src/engine_api/http.rs index 342b7b0870e..b9841246833 100644 --- a/beacon_node/execution_layer/src/engine_api/http.rs +++ b/beacon_node/execution_layer/src/engine_api/http.rs @@ -11,12 +11,12 @@ use serde_json::json; use std::collections::HashSet; use std::sync::LazyLock; use tokio::sync::Mutex; +use types::ProgressiveTransactions; use std::time::{Duration, Instant}; pub use deposit_log::{DepositLog, Log}; pub use reqwest::Client; -use types::ProgressiveTransactions; const STATIC_ID: u32 = 1; pub const JSONRPC_VERSION: &str = "2.0";