mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
feat(engine-api): exchange capabilities (#1469)
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
This commit is contained in:
@ -66,4 +66,8 @@ pub trait EngineApi {
|
||||
&self,
|
||||
transition_configuration: TransitionConfiguration,
|
||||
) -> Result<TransitionConfiguration>;
|
||||
|
||||
/// See also <https://github.com/ethereum/execution-apis/blob/6452a6b194d7db269bf1dbd087a267251d3cc7f8/src/engine/common.md#capabilities>
|
||||
#[method(name = "engine_exchangeCapabilities")]
|
||||
async fn exchange_capabilities(&self, capabilities: Vec<String>) -> Result<Vec<String>>;
|
||||
}
|
||||
|
||||
@ -8,6 +8,19 @@ use reth_primitives::{
|
||||
use reth_rlp::Encodable;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
/// The list of supported Engine capabilities
|
||||
pub const CAPABILITIES: [&str; 9] = [
|
||||
"engine_forkchoiceUpdatedV1",
|
||||
"engine_forkchoiceUpdatedV2",
|
||||
"engine_exchangeTransitionConfigurationV1",
|
||||
"engine_getPayloadV1",
|
||||
"engine_getPayloadV2",
|
||||
"engine_newPayloadV1",
|
||||
"engine_newPayloadV2",
|
||||
"engine_getPayloadBodiesByHashV1",
|
||||
"engine_getPayloadBodiesByRangeV1",
|
||||
];
|
||||
|
||||
/// This structure maps on the ExecutionPayload structure of the beacon chain spec.
|
||||
///
|
||||
/// See also: <https://github.com/ethereum/execution-apis/blob/6709c2a795b707202e93c4f2867fa0bf2640a84f/src/engine/paris.md#executionpayloadv1>
|
||||
|
||||
@ -13,7 +13,7 @@ use reth_rpc_engine_api::{
|
||||
};
|
||||
use reth_rpc_types::engine::{
|
||||
ExecutionPayload, ExecutionPayloadBodies, ForkchoiceUpdated, PayloadAttributes, PayloadStatus,
|
||||
TransitionConfiguration,
|
||||
TransitionConfiguration, CAPABILITIES,
|
||||
};
|
||||
use tokio::sync::{
|
||||
mpsc::UnboundedSender,
|
||||
@ -157,4 +157,9 @@ impl EngineApiServer for EngineApi {
|
||||
self.delegate_request(EngineApiMessage::ExchangeTransitionConfiguration(config, tx), rx)
|
||||
.await
|
||||
}
|
||||
|
||||
/// See also <https://github.com/ethereum/execution-apis/blob/6452a6b194d7db269bf1dbd087a267251d3cc7f8/src/engine/common.md#capabilities>
|
||||
async fn exchange_capabilities(&self, _capabilities: Vec<String>) -> Result<Vec<String>> {
|
||||
Ok(CAPABILITIES.into_iter().map(str::to_owned).collect())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user