mirror of
https://github.com/sigp/lighthouse.git
synced 2026-05-30 12:47:05 +00:00
feat: add getInclusionListV1 to engine API client
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
use crate::engines::ForkchoiceState;
|
use crate::engines::ForkchoiceState;
|
||||||
use crate::http::{
|
use crate::http::{
|
||||||
ENGINE_FORKCHOICE_UPDATED_V1, ENGINE_FORKCHOICE_UPDATED_V2, ENGINE_FORKCHOICE_UPDATED_V3,
|
ENGINE_FORKCHOICE_UPDATED_V1, ENGINE_FORKCHOICE_UPDATED_V2, ENGINE_FORKCHOICE_UPDATED_V3,
|
||||||
ENGINE_GET_BLOBS_V1, ENGINE_GET_CLIENT_VERSION_V1, ENGINE_GET_PAYLOAD_BODIES_BY_HASH_V1,
|
ENGINE_GET_BLOBS_V1, ENGINE_GET_CLIENT_VERSION_V1, ENGINE_GET_INCLUSION_LIST_V1,
|
||||||
ENGINE_GET_PAYLOAD_BODIES_BY_RANGE_V1, ENGINE_GET_PAYLOAD_V1, ENGINE_GET_PAYLOAD_V2,
|
ENGINE_GET_PAYLOAD_BODIES_BY_HASH_V1, ENGINE_GET_PAYLOAD_BODIES_BY_RANGE_V1,
|
||||||
ENGINE_GET_PAYLOAD_V3, ENGINE_GET_PAYLOAD_V4, ENGINE_NEW_PAYLOAD_V1, ENGINE_NEW_PAYLOAD_V2,
|
ENGINE_GET_PAYLOAD_V1, ENGINE_GET_PAYLOAD_V2, ENGINE_GET_PAYLOAD_V3, ENGINE_GET_PAYLOAD_V4,
|
||||||
ENGINE_NEW_PAYLOAD_V3, ENGINE_NEW_PAYLOAD_V4,
|
ENGINE_NEW_PAYLOAD_V1, ENGINE_NEW_PAYLOAD_V2, ENGINE_NEW_PAYLOAD_V3, ENGINE_NEW_PAYLOAD_V4,
|
||||||
};
|
};
|
||||||
use eth2::types::{
|
use eth2::types::{
|
||||||
BlobsBundle, SsePayloadAttributes, SsePayloadAttributesV1, SsePayloadAttributesV2,
|
BlobsBundle, SsePayloadAttributes, SsePayloadAttributesV1, SsePayloadAttributesV2,
|
||||||
@@ -19,8 +19,8 @@ use strum::IntoStaticStr;
|
|||||||
use superstruct::superstruct;
|
use superstruct::superstruct;
|
||||||
pub use types::{
|
pub use types::{
|
||||||
Address, BeaconBlockRef, ConsolidationRequest, EthSpec, ExecutionBlockHash, ExecutionPayload,
|
Address, BeaconBlockRef, ConsolidationRequest, EthSpec, ExecutionBlockHash, ExecutionPayload,
|
||||||
ExecutionPayloadHeader, ExecutionPayloadRef, FixedVector, ForkName, Hash256, Transactions,
|
ExecutionPayloadHeader, ExecutionPayloadRef, FixedVector, ForkName, Hash256, Transaction,
|
||||||
Uint256, VariableList, Withdrawal, Withdrawals,
|
Transactions, Uint256, VariableList, Withdrawal, Withdrawals,
|
||||||
};
|
};
|
||||||
use types::{
|
use types::{
|
||||||
ExecutionPayloadBellatrix, ExecutionPayloadCapella, ExecutionPayloadDeneb,
|
ExecutionPayloadBellatrix, ExecutionPayloadCapella, ExecutionPayloadDeneb,
|
||||||
@@ -508,6 +508,7 @@ pub struct EngineCapabilities {
|
|||||||
pub get_payload_v4: bool,
|
pub get_payload_v4: bool,
|
||||||
pub get_client_version_v1: bool,
|
pub get_client_version_v1: bool,
|
||||||
pub get_blobs_v1: bool,
|
pub get_blobs_v1: bool,
|
||||||
|
pub get_inclusion_list_v1: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl EngineCapabilities {
|
impl EngineCapabilities {
|
||||||
@@ -558,6 +559,9 @@ impl EngineCapabilities {
|
|||||||
if self.get_blobs_v1 {
|
if self.get_blobs_v1 {
|
||||||
response.push(ENGINE_GET_BLOBS_V1);
|
response.push(ENGINE_GET_BLOBS_V1);
|
||||||
}
|
}
|
||||||
|
if self.get_inclusion_list_v1 {
|
||||||
|
response.push(ENGINE_GET_INCLUSION_LIST_V1);
|
||||||
|
}
|
||||||
|
|
||||||
response
|
response
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,6 +61,9 @@ pub const ENGINE_GET_CLIENT_VERSION_TIMEOUT: Duration = Duration::from_secs(1);
|
|||||||
pub const ENGINE_GET_BLOBS_V1: &str = "engine_getBlobsV1";
|
pub const ENGINE_GET_BLOBS_V1: &str = "engine_getBlobsV1";
|
||||||
pub const ENGINE_GET_BLOBS_TIMEOUT: Duration = Duration::from_secs(1);
|
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.
|
/// 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";
|
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
|
/// This code is returned by all clients when a method is not supported
|
||||||
@@ -83,6 +86,7 @@ pub static LIGHTHOUSE_CAPABILITIES: &[&str] = &[
|
|||||||
ENGINE_GET_PAYLOAD_BODIES_BY_RANGE_V1,
|
ENGINE_GET_PAYLOAD_BODIES_BY_RANGE_V1,
|
||||||
ENGINE_GET_CLIENT_VERSION_V1,
|
ENGINE_GET_CLIENT_VERSION_V1,
|
||||||
ENGINE_GET_BLOBS_V1,
|
ENGINE_GET_BLOBS_V1,
|
||||||
|
ENGINE_GET_INCLUSION_LIST_V1,
|
||||||
];
|
];
|
||||||
|
|
||||||
/// We opt to initialize the JsonClientVersionV1 rather than the ClientVersionV1
|
/// We opt to initialize the JsonClientVersionV1 rather than the ClientVersionV1
|
||||||
@@ -720,6 +724,23 @@ impl HttpJsonRpc {
|
|||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn get_inclusion_list<E: EthSpec>(
|
||||||
|
&self,
|
||||||
|
parent_hash: Hash256,
|
||||||
|
) -> Result<
|
||||||
|
VariableList<Transaction<E::MaxBytesPerTransaction>, E::MaxTransactionsPerInclusionList>,
|
||||||
|
Error,
|
||||||
|
> {
|
||||||
|
let params = json!([parent_hash]);
|
||||||
|
|
||||||
|
self.rpc_request(
|
||||||
|
ENGINE_GET_INCLUSION_LIST_V1,
|
||||||
|
params,
|
||||||
|
ENGINE_GET_INCLUSION_LIST_TIMEOUT,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
}
|
||||||
|
|
||||||
pub async fn get_block_by_number<'a>(
|
pub async fn get_block_by_number<'a>(
|
||||||
&self,
|
&self,
|
||||||
query: BlockByNumberQuery<'a>,
|
query: BlockByNumberQuery<'a>,
|
||||||
@@ -1086,6 +1107,7 @@ impl HttpJsonRpc {
|
|||||||
get_payload_v4: capabilities.contains(ENGINE_GET_PAYLOAD_V4),
|
get_payload_v4: capabilities.contains(ENGINE_GET_PAYLOAD_V4),
|
||||||
get_client_version_v1: capabilities.contains(ENGINE_GET_CLIENT_VERSION_V1),
|
get_client_version_v1: capabilities.contains(ENGINE_GET_CLIENT_VERSION_V1),
|
||||||
get_blobs_v1: capabilities.contains(ENGINE_GET_BLOBS_V1),
|
get_blobs_v1: capabilities.contains(ENGINE_GET_BLOBS_V1),
|
||||||
|
get_inclusion_list_v1: capabilities.contains(ENGINE_GET_INCLUSION_LIST_V1),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ pub const DEFAULT_ENGINE_CAPABILITIES: EngineCapabilities = EngineCapabilities {
|
|||||||
get_payload_v4: true,
|
get_payload_v4: true,
|
||||||
get_client_version_v1: true,
|
get_client_version_v1: true,
|
||||||
get_blobs_v1: true,
|
get_blobs_v1: true,
|
||||||
|
get_inclusion_list_v1: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub static DEFAULT_CLIENT_VERSION: LazyLock<JsonClientVersionV1> =
|
pub static DEFAULT_CLIENT_VERSION: LazyLock<JsonClientVersionV1> =
|
||||||
|
|||||||
Reference in New Issue
Block a user