Trait reth::rpc::api::EngineApiClient

source ·
pub trait EngineApiClient<Engine>: ClientT
where Engine: EngineTypes, <Engine as PayloadTypes>::PayloadAttributes: Serialize + Clone,
{
Show 16 methods // Provided methods fn new_payload_v1<'life0, 'async_trait>( &'life0 self, payload: ExecutionPayloadV1, ) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn new_payload_v2<'life0, 'async_trait>( &'life0 self, payload: ExecutionPayloadInputV2, ) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn new_payload_v3<'life0, 'async_trait>( &'life0 self, payload: ExecutionPayloadV3, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn new_payload_v4<'life0, 'async_trait>( &'life0 self, payload: ExecutionPayloadV4, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn fork_choice_updated_v1<'life0, 'async_trait>( &'life0 self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn fork_choice_updated_v2<'life0, 'async_trait>( &'life0 self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn fork_choice_updated_v3<'life0, 'async_trait>( &'life0 self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn get_payload_v1<'life0, 'async_trait>( &'life0 self, payload_id: PayloadId, ) -> Pin<Box<dyn Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadV1, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn get_payload_v2<'life0, 'async_trait>( &'life0 self, payload_id: PayloadId, ) -> Pin<Box<dyn Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadV2, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn get_payload_v3<'life0, 'async_trait>( &'life0 self, payload_id: PayloadId, ) -> Pin<Box<dyn Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadV3, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn get_payload_v4<'life0, 'async_trait>( &'life0 self, payload_id: PayloadId, ) -> Pin<Box<dyn Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadV4, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn get_payload_bodies_by_hash_v1<'life0, 'async_trait>( &'life0 self, block_hashes: Vec<FixedBytes<32>>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn get_payload_bodies_by_range_v1<'life0, 'async_trait>( &'life0 self, start: Uint<64, 1>, count: Uint<64, 1>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn exchange_transition_configuration<'life0, 'async_trait>( &'life0 self, transition_configuration: TransitionConfiguration, ) -> Pin<Box<dyn Future<Output = Result<TransitionConfiguration, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn get_client_version_v1<'life0, 'async_trait>( &'life0 self, client_version: ClientVersionV1, ) -> Pin<Box<dyn Future<Output = Result<Vec<ClientVersionV1>, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... } fn exchange_capabilities<'life0, 'async_trait>( &'life0 self, capabilities: Vec<String>, ) -> Pin<Box<dyn Future<Output = Result<Vec<String>, Error>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: Sync + 'async_trait { ... }
}
Expand description

Client implementation for the EngineApi RPC API.

Provided Methods§

source

fn new_payload_v1<'life0, 'async_trait>( &'life0 self, payload: ExecutionPayloadV1, ) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

source

fn new_payload_v2<'life0, 'async_trait>( &'life0 self, payload: ExecutionPayloadInputV2, ) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

source

fn new_payload_v3<'life0, 'async_trait>( &'life0 self, payload: ExecutionPayloadV3, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

source

fn new_payload_v4<'life0, 'async_trait>( &'life0 self, payload: ExecutionPayloadV4, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

source

fn fork_choice_updated_v1<'life0, 'async_trait>( &'life0 self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

See also https://github.com/ethereum/execution-apis/blob/6709c2a795b707202e93c4f2867fa0bf2640a84f/src/engine/paris.md#engine_forkchoiceupdatedv1

Caution: This should not accept the withdrawals field in the payload attributes.

source

fn fork_choice_updated_v2<'life0, 'async_trait>( &'life0 self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

Post Shanghai forkchoice update handler

This is the same as forkchoiceUpdatedV1, but expects an additional withdrawals field in the payloadAttributes, if payload attributes are provided.

See also https://github.com/ethereum/execution-apis/blob/6709c2a795b707202e93c4f2867fa0bf2640a84f/src/engine/shanghai.md#engine_forkchoiceupdatedv2

Caution: This should not accept the parentBeaconBlockRoot field in the payload attributes.

source

fn fork_choice_updated_v3<'life0, 'async_trait>( &'life0 self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

Post Cancun forkchoice update handler

This is the same as forkchoiceUpdatedV2, but expects an additional parentBeaconBlockRoot field in the payloadAttributes, if payload attributes are provided.

See also https://github.com/ethereum/execution-apis/blob/main/src/engine/cancun.md#engine_forkchoiceupdatedv3

source

fn get_payload_v1<'life0, 'async_trait>( &'life0 self, payload_id: PayloadId, ) -> Pin<Box<dyn Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadV1, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

See also https://github.com/ethereum/execution-apis/blob/6709c2a795b707202e93c4f2867fa0bf2640a84f/src/engine/paris.md#engine_getpayloadv1

Returns the most recent version of the payload that is available in the corresponding payload build process at the time of receiving this call.

Caution: This should not return the withdrawals field

Note:

Provider software MAY stop the corresponding build process after serving this call.

source

fn get_payload_v2<'life0, 'async_trait>( &'life0 self, payload_id: PayloadId, ) -> Pin<Box<dyn Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadV2, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

See also https://github.com/ethereum/execution-apis/blob/6709c2a795b707202e93c4f2867fa0bf2640a84f/src/engine/shanghai.md#engine_getpayloadv2

Returns the most recent version of the payload that is available in the corresponding payload build process at the time of receiving this call. Note:

Provider software MAY stop the corresponding build process after serving this call.

source

fn get_payload_v3<'life0, 'async_trait>( &'life0 self, payload_id: PayloadId, ) -> Pin<Box<dyn Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadV3, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

Post Cancun payload handler which also returns a blobs bundle.

See also https://github.com/ethereum/execution-apis/blob/main/src/engine/cancun.md#engine_getpayloadv3

Returns the most recent version of the payload that is available in the corresponding payload build process at the time of receiving this call. Note:

Provider software MAY stop the corresponding build process after serving this call.

source

fn get_payload_v4<'life0, 'async_trait>( &'life0 self, payload_id: PayloadId, ) -> Pin<Box<dyn Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadV4, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

Post Prague payload handler.

See also https://github.com/ethereum/execution-apis/blob/main/src/engine/prague.md#engine_getpayloadv4

Returns the most recent version of the payload that is available in the corresponding payload build process at the time of receiving this call. Note:

Provider software MAY stop the corresponding build process after serving this call.

source

fn get_payload_bodies_by_hash_v1<'life0, 'async_trait>( &'life0 self, block_hashes: Vec<FixedBytes<32>>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

source

fn get_payload_bodies_by_range_v1<'life0, 'async_trait>( &'life0 self, start: Uint<64, 1>, count: Uint<64, 1>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

See also https://github.com/ethereum/execution-apis/blob/6452a6b194d7db269bf1dbd087a267251d3cc7f8/src/engine/shanghai.md#engine_getpayloadbodiesbyrangev1

Returns the execution payload bodies by the range starting at start, containing count blocks.

WARNING: This method is associated with the BeaconBlocksByRange message in the consensus layer p2p specification, meaning the input should be treated as untrusted or potentially adversarial.

Implementers should take care when acting on the input to this method, specifically ensuring that the range is limited properly, and that the range boundaries are computed correctly and without panics.

source

fn exchange_transition_configuration<'life0, 'async_trait>( &'life0 self, transition_configuration: TransitionConfiguration, ) -> Pin<Box<dyn Future<Output = Result<TransitionConfiguration, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

See also https://github.com/ethereum/execution-apis/blob/6709c2a795b707202e93c4f2867fa0bf2640a84f/src/engine/paris.md#engine_exchangetransitionconfigurationv1

Note: This method will be deprecated after the cancun hardfork:

Consensus and execution layer clients MAY remove support of this method after Cancun. If no longer supported, this method MUST be removed from the engine_exchangeCapabilities request or response list depending on whether it is consensus or execution layer client.

source

fn get_client_version_v1<'life0, 'async_trait>( &'life0 self, client_version: ClientVersionV1, ) -> Pin<Box<dyn Future<Output = Result<Vec<ClientVersionV1>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

This function will return the ClientVersionV1 object. See also: https://github.com/ethereum/execution-apis/blob/03911ffc053b8b806123f1fc237184b0092a485a/src/engine/identification.md#engine_getclientversionv1make fmt

  • When connected to a single execution client, the consensus client MUST receive an array with a single ClientVersionV1 object.
  • When connected to multiple execution clients via a multiplexer, the multiplexer MUST concatenate the responses from each execution client into a single, flat array before returning the response to the consensus client.
source

fn exchange_capabilities<'life0, 'async_trait>( &'life0 self, capabilities: Vec<String>, ) -> Pin<Box<dyn Future<Output = Result<Vec<String>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: Sync + 'async_trait,

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<TypeJsonRpseeInteral, Engine> EngineApiClient<Engine> for TypeJsonRpseeInteral
where Engine: EngineTypes, TypeJsonRpseeInteral: ClientT, <Engine as PayloadTypes>::PayloadAttributes: Serialize + Clone,