pub struct EngineApi<Provider, EngineT>where
EngineT: EngineTypes,{ /* private fields */ }
Expand description
Re-export for convenience The Engine API implementation that grants the Consensus layer access to data and functions in the Execution layer that are crucial for the consensus process.
Implementations§
§impl<Provider, EngineT> EngineApi<Provider, EngineT>where
Provider: HeaderProvider + BlockReader + StateProviderFactory + EvmEnvProvider + 'static,
EngineT: EngineTypes,
impl<Provider, EngineT> EngineApi<Provider, EngineT>where
Provider: HeaderProvider + BlockReader + StateProviderFactory + EvmEnvProvider + 'static,
EngineT: EngineTypes,
pub fn new(
provider: Provider,
chain_spec: Arc<ChainSpec>,
beacon_consensus: BeaconConsensusEngineHandle<EngineT>,
payload_store: PayloadStore<EngineT>,
task_spawner: Box<dyn TaskSpawner>,
client: ClientVersionV1,
capabilities: EngineCapabilities,
) -> EngineApi<Provider, EngineT>
pub fn new( provider: Provider, chain_spec: Arc<ChainSpec>, beacon_consensus: BeaconConsensusEngineHandle<EngineT>, payload_store: PayloadStore<EngineT>, task_spawner: Box<dyn TaskSpawner>, client: ClientVersionV1, capabilities: EngineCapabilities, ) -> EngineApi<Provider, EngineT>
Create new instance of EngineApi
.
pub async fn new_payload_v1(
&self,
payload: ExecutionPayloadV1,
) -> Result<PayloadStatus, EngineApiError>
pub async fn new_payload_v1( &self, payload: ExecutionPayloadV1, ) -> Result<PayloadStatus, EngineApiError>
See also https://github.com/ethereum/execution-apis/blob/3d627c95a4d3510a8187dd02e0250ecb4331d27e/src/engine/paris.md#engine_newpayloadv1
Caution: This should not accept the withdrawals
field
pub async fn new_payload_v2(
&self,
payload: ExecutionPayloadInputV2,
) -> Result<PayloadStatus, EngineApiError>
pub async fn new_payload_v2( &self, payload: ExecutionPayloadInputV2, ) -> Result<PayloadStatus, EngineApiError>
pub async fn new_payload_v3(
&self,
payload: ExecutionPayloadV3,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
) -> Result<PayloadStatus, EngineApiError>
pub async fn new_payload_v3( &self, payload: ExecutionPayloadV3, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, ) -> Result<PayloadStatus, EngineApiError>
pub async fn new_payload_v4(
&self,
payload: ExecutionPayloadV4,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
) -> Result<PayloadStatus, EngineApiError>
pub async fn new_payload_v4( &self, payload: ExecutionPayloadV4, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, ) -> Result<PayloadStatus, EngineApiError>
pub async fn fork_choice_updated_v1(
&self,
state: ForkchoiceState,
payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Result<ForkchoiceUpdated, EngineApiError>
pub async fn fork_choice_updated_v1( &self, state: ForkchoiceState, payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, EngineApiError>
Sends a message to the beacon consensus engine to update the fork choice without withdrawals.
Caution: This should not accept the withdrawals
field
pub async fn fork_choice_updated_v2(
&self,
state: ForkchoiceState,
payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Result<ForkchoiceUpdated, EngineApiError>
pub async fn fork_choice_updated_v2( &self, state: ForkchoiceState, payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, EngineApiError>
Sends a message to the beacon consensus engine to update the fork choice with withdrawals, but only after shanghai.
pub async fn fork_choice_updated_v3(
&self,
state: ForkchoiceState,
payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Result<ForkchoiceUpdated, EngineApiError>
pub async fn fork_choice_updated_v3( &self, state: ForkchoiceState, payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, EngineApiError>
Sends a message to the beacon consensus engine to update the fork choice with withdrawals, but only after cancun.
See also https://github.com/ethereum/execution-apis/blob/main/src/engine/cancun.md#engine_forkchoiceupdatedv3
pub async fn get_payload_v1(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadV1, EngineApiError>
pub async fn get_payload_v1( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadV1, EngineApiError>
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.
pub async fn get_payload_v2(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadV2, EngineApiError>
pub async fn get_payload_v2( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadV2, EngineApiError>
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.
pub async fn get_payload_v3(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadV3, EngineApiError>
pub async fn get_payload_v3( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadV3, EngineApiError>
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.
pub async fn get_payload_v4(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadV4, EngineApiError>
pub async fn get_payload_v4( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadV4, EngineApiError>
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.
pub async fn get_payload_bodies_by_range_v1(
&self,
start: u64,
count: u64,
) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, EngineApiError>
pub async fn get_payload_bodies_by_range_v1( &self, start: u64, count: u64, ) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, EngineApiError>
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.
pub async fn get_payload_bodies_by_range_v2(
&self,
start: u64,
count: u64,
) -> Result<Vec<Option<ExecutionPayloadBodyV2>>, EngineApiError>
pub async fn get_payload_bodies_by_range_v2( &self, start: u64, count: u64, ) -> Result<Vec<Option<ExecutionPayloadBodyV2>>, EngineApiError>
Returns the execution payload bodies by the range starting at start
, containing count
blocks.
Same as Self::get_payload_bodies_by_range_v1
but as [ExecutionPayloadBodiesV2
].
pub fn get_payload_bodies_by_hash_v1(
&self,
hashes: Vec<FixedBytes<32>>,
) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, EngineApiError>
pub fn get_payload_bodies_by_hash_v1( &self, hashes: Vec<FixedBytes<32>>, ) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, EngineApiError>
Called to retrieve execution payload bodies by hashes.
pub fn get_payload_bodies_by_hash_v2(
&self,
hashes: Vec<FixedBytes<32>>,
) -> Result<Vec<Option<ExecutionPayloadBodyV2>>, EngineApiError>
pub fn get_payload_bodies_by_hash_v2( &self, hashes: Vec<FixedBytes<32>>, ) -> Result<Vec<Option<ExecutionPayloadBodyV2>>, EngineApiError>
Called to retrieve execution payload bodies by hashes.
Same as Self::get_payload_bodies_by_hash_v1
but as [ExecutionPayloadBodiesV2
].
pub fn exchange_transition_configuration(
&self,
config: TransitionConfiguration,
) -> Result<TransitionConfiguration, EngineApiError>
pub fn exchange_transition_configuration( &self, config: TransitionConfiguration, ) -> Result<TransitionConfiguration, EngineApiError>
Called to verify network configuration parameters and ensure that Consensus and Execution layers are using the latest configuration.
Trait Implementations§
§impl<Provider, EngineT> EngineApiServer<EngineT> for EngineApi<Provider, EngineT>where
Provider: HeaderProvider + BlockReader + StateProviderFactory + EvmEnvProvider + 'static,
EngineT: EngineTypes,
impl<Provider, EngineT> EngineApiServer<EngineT> for EngineApi<Provider, EngineT>where
Provider: HeaderProvider + BlockReader + StateProviderFactory + EvmEnvProvider + 'static,
EngineT: EngineTypes,
§fn new_payload_v1<'life0, 'async_trait>(
&'life0 self,
payload: ExecutionPayloadV1,
) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
fn new_payload_v1<'life0, 'async_trait>(
&'life0 self,
payload: ExecutionPayloadV1,
) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for engine_newPayloadV1
See also https://github.com/ethereum/execution-apis/blob/3d627c95a4d3510a8187dd02e0250ecb4331d27e/src/engine/paris.md#engine_newpayloadv1
Caution: This should not accept the withdrawals
field
§fn new_payload_v2<'life0, 'async_trait>(
&'life0 self,
payload: ExecutionPayloadInputV2,
) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
fn new_payload_v2<'life0, 'async_trait>(
&'life0 self,
payload: ExecutionPayloadInputV2,
) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for engine_newPayloadV2
See also https://github.com/ethereum/execution-apis/blob/584905270d8ad665718058060267061ecfd79ca5/src/engine/shanghai.md#engine_newpayloadv2
§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, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: '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, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for engine_newPayloadV3
See also https://github.com/ethereum/execution-apis/blob/fe8e13c288c592ec154ce25c534e26cb7ce0530d/src/engine/cancun.md#engine_newpayloadv3
§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, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: '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, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for engine_newPayloadV4
See also https://github.com/ethereum/execution-apis/blob/03911ffc053b8b806123f1fc237184b0092a485a/src/engine/prague.md#engine_newpayloadv4
§fn fork_choice_updated_v1<'life0, 'async_trait>(
&'life0 self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
fn fork_choice_updated_v1<'life0, 'async_trait>(
&'life0 self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for engine_forkchoiceUpdatedV1
See also https://github.com/ethereum/execution-apis/blob/3d627c95a4d3510a8187dd02e0250ecb4331d27e/src/engine/paris.md#engine_forkchoiceupdatedv1
Caution: This should not accept the withdrawals
field
§fn fork_choice_updated_v2<'life0, 'async_trait>(
&'life0 self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
fn fork_choice_updated_v2<'life0, 'async_trait>(
&'life0 self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for engine_forkchoiceUpdatedV2
See also https://github.com/ethereum/execution-apis/blob/3d627c95a4d3510a8187dd02e0250ecb4331d27e/src/engine/shanghai.md#engine_forkchoiceupdatedv2
§fn fork_choice_updated_v3<'life0, 'async_trait>(
&'life0 self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
fn fork_choice_updated_v3<'life0, 'async_trait>(
&'life0 self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Pin<Box<dyn Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for engine_forkchoiceUpdatedV2
See also https://github.com/ethereum/execution-apis/blob/main/src/engine/cancun.md#engine_forkchoiceupdatedv3
§fn get_payload_v1<'life0, 'async_trait>(
&'life0 self,
payload_id: PayloadId,
) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadV1, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
fn get_payload_v1<'life0, 'async_trait>(
&'life0 self,
payload_id: PayloadId,
) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadV1, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for 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.
§fn get_payload_v2<'life0, 'async_trait>(
&'life0 self,
payload_id: PayloadId,
) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadV2, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
fn get_payload_v2<'life0, 'async_trait>(
&'life0 self,
payload_id: PayloadId,
) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadV2, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for 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.
§fn get_payload_v3<'life0, 'async_trait>(
&'life0 self,
payload_id: PayloadId,
) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadV3, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
fn get_payload_v3<'life0, 'async_trait>(
&'life0 self,
payload_id: PayloadId,
) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadV3, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for 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.
§fn get_payload_v4<'life0, 'async_trait>(
&'life0 self,
payload_id: PayloadId,
) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadV4, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
fn get_payload_v4<'life0, 'async_trait>(
&'life0 self,
payload_id: PayloadId,
) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadV4, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for 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.
See also https://github.com/ethereum/execution-apis/blob/main/src/engine/prague.md#engine_getpayloadv4
Note:
Provider software MAY stop the corresponding build process after serving this call.
§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>>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: '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>>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for engine_getPayloadBodiesByHashV1
See also https://github.com/ethereum/execution-apis/blob/6452a6b194d7db269bf1dbd087a267251d3cc7f8/src/engine/shanghai.md#engine_getpayloadbodiesbyhashv1
§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>>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: '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>>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for 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.
Note: If a block is pre shanghai, withdrawals
field will be null
.
§fn exchange_transition_configuration<'life0, 'async_trait>(
&'life0 self,
config: TransitionConfiguration,
) -> Pin<Box<dyn Future<Output = Result<TransitionConfiguration, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
fn exchange_transition_configuration<'life0, 'async_trait>(
&'life0 self,
config: TransitionConfiguration,
) -> Pin<Box<dyn Future<Output = Result<TransitionConfiguration, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for engine_exchangeTransitionConfigurationV1
See also https://github.com/ethereum/execution-apis/blob/3d627c95a4d3510a8187dd02e0250ecb4331d27e/src/engine/paris.md#engine_exchangeTransitionConfigurationV1
§fn get_client_version_v1<'life0, 'async_trait>(
&'life0 self,
client: ClientVersionV1,
) -> Pin<Box<dyn Future<Output = Result<Vec<ClientVersionV1>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
fn get_client_version_v1<'life0, 'async_trait>(
&'life0 self,
client: ClientVersionV1,
) -> Pin<Box<dyn Future<Output = Result<Vec<ClientVersionV1>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for engine_getClientVersionV1
§fn exchange_capabilities<'life0, 'async_trait>(
&'life0 self,
_capabilities: Vec<String>,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
fn exchange_capabilities<'life0, 'async_trait>(
&'life0 self,
_capabilities: Vec<String>,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
Handler for engine_exchangeCapabilitiesV1
See also https://github.com/ethereum/execution-apis/blob/6452a6b194d7db269bf1dbd087a267251d3cc7f8/src/engine/common.md#capabilities
§fn get_payload_bodies_by_hash_v2<'life0, 'async_trait>(
&'life0 self,
block_hashes: Vec<FixedBytes<32>>,
) -> Pin<Box<dyn Future<Output = Result<Vec<Option<ExecutionPayloadBodyV2>>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
fn get_payload_bodies_by_hash_v2<'life0, 'async_trait>(
&'life0 self,
block_hashes: Vec<FixedBytes<32>>,
) -> Pin<Box<dyn Future<Output = Result<Vec<Option<ExecutionPayloadBodyV2>>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
§fn get_payload_bodies_by_range_v2<'life0, 'async_trait>(
&'life0 self,
start: Uint<64, 1>,
count: Uint<64, 1>,
) -> Pin<Box<dyn Future<Output = Result<Vec<Option<ExecutionPayloadBodyV2>>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
fn get_payload_bodies_by_range_v2<'life0, 'async_trait>(
&'life0 self,
start: Uint<64, 1>,
count: Uint<64, 1>,
) -> Pin<Box<dyn Future<Output = Result<Vec<Option<ExecutionPayloadBodyV2>>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT>: 'async_trait,
§fn into_rpc(self) -> RpcModule<Self>where
<Engine as PayloadTypes>::PayloadAttributes: DeserializeOwned,
fn into_rpc(self) -> RpcModule<Self>where
<Engine as PayloadTypes>::PayloadAttributes: DeserializeOwned,
RpcModule
.Auto Trait Implementations§
impl<Provider, EngineT> Freeze for EngineApi<Provider, EngineT>where
<EngineT as PayloadTypes>::BuiltPayload: Sized,
impl<Provider, EngineT> !RefUnwindSafe for EngineApi<Provider, EngineT>
impl<Provider, EngineT> Send for EngineApi<Provider, EngineT>
impl<Provider, EngineT> Sync for EngineApi<Provider, EngineT>
impl<Provider, EngineT> Unpin for EngineApi<Provider, EngineT>where
<EngineT as PayloadTypes>::BuiltPayload: Sized,
impl<Provider, EngineT> !UnwindSafe for EngineApi<Provider, EngineT>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeDebug for Twhere
T: Debug,
impl<T> MaybeSend for Twhere
T: Send,
impl<T> MaybeSendSync for T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 8 bytes