Struct EngineApi
pub struct EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>where
PayloadT: PayloadTypes,{ /* 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.
This type is generic over EngineTypes
and intended to be used as the entrypoint for engine
API processing. It can be reused by other non L1 engine APIs that deviate from the L1 spec but
are still follow the engine API model.
§Implementers
Implementing support for an engine API jsonrpsee RPC handler is done by defining the engine API
server trait and implementing it on a type that can wrap this EngineApi
type.
See also EngineApiServer
implementation for this type which is the L1 implementation.
Implementations§
§impl<Provider, PayloadT, Pool, Validator, ChainSpec> EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>where
Provider: HeaderProvider + BlockReader + StateProviderFactory + 'static,
PayloadT: PayloadTypes,
Pool: TransactionPool + 'static,
Validator: EngineValidator<PayloadT>,
ChainSpec: EthereumHardforks + Send + Sync + 'static,
impl<Provider, PayloadT, Pool, Validator, ChainSpec> EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>where
Provider: HeaderProvider + BlockReader + StateProviderFactory + 'static,
PayloadT: PayloadTypes,
Pool: TransactionPool + 'static,
Validator: EngineValidator<PayloadT>,
ChainSpec: EthereumHardforks + Send + Sync + 'static,
pub fn new(
provider: Provider,
chain_spec: Arc<ChainSpec>,
beacon_consensus: BeaconConsensusEngineHandle<PayloadT>,
payload_store: PayloadStore<PayloadT>,
tx_pool: Pool,
task_spawner: Box<dyn TaskSpawner>,
client: ClientVersionV1,
capabilities: EngineCapabilities,
validator: Validator,
accept_execution_requests_hash: bool,
) -> EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>
pub fn new( provider: Provider, chain_spec: Arc<ChainSpec>, beacon_consensus: BeaconConsensusEngineHandle<PayloadT>, payload_store: PayloadStore<PayloadT>, tx_pool: Pool, task_spawner: Box<dyn TaskSpawner>, client: ClientVersionV1, capabilities: EngineCapabilities, validator: Validator, accept_execution_requests_hash: bool, ) -> EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>
Create new instance of EngineApi
.
pub fn get_client_version_v1(
&self,
_client: ClientVersionV1,
) -> Result<Vec<ClientVersionV1>, EngineApiError>
pub fn get_client_version_v1( &self, _client: ClientVersionV1, ) -> Result<Vec<ClientVersionV1>, EngineApiError>
Fetches the client version.
pub async fn new_payload_v1(
&self,
payload: <PayloadT as PayloadTypes>::ExecutionData,
) -> Result<PayloadStatus, EngineApiError>
pub async fn new_payload_v1( &self, payload: <PayloadT as PayloadTypes>::ExecutionData, ) -> 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: <PayloadT as PayloadTypes>::ExecutionData,
) -> Result<PayloadStatus, EngineApiError>
pub async fn new_payload_v2( &self, payload: <PayloadT as PayloadTypes>::ExecutionData, ) -> Result<PayloadStatus, EngineApiError>
pub async fn new_payload_v2_metered(
&self,
payload: <PayloadT as PayloadTypes>::ExecutionData,
) -> Result<PayloadStatus, EngineApiError>
pub async fn new_payload_v2_metered( &self, payload: <PayloadT as PayloadTypes>::ExecutionData, ) -> Result<PayloadStatus, EngineApiError>
Metered version of new_payload_v2
.
pub async fn new_payload_v3(
&self,
payload: <PayloadT as PayloadTypes>::ExecutionData,
) -> Result<PayloadStatus, EngineApiError>
pub async fn new_payload_v3( &self, payload: <PayloadT as PayloadTypes>::ExecutionData, ) -> Result<PayloadStatus, EngineApiError>
pub async fn new_payload_v3_metered(
&self,
payload: <PayloadT as PayloadTypes>::ExecutionData,
) -> Result<PayloadStatus, ErrorObject<'static>>
pub async fn new_payload_v3_metered( &self, payload: <PayloadT as PayloadTypes>::ExecutionData, ) -> Result<PayloadStatus, ErrorObject<'static>>
Metrics version of new_payload_v3
pub async fn new_payload_v4(
&self,
payload: <PayloadT as PayloadTypes>::ExecutionData,
) -> Result<PayloadStatus, EngineApiError>
pub async fn new_payload_v4( &self, payload: <PayloadT as PayloadTypes>::ExecutionData, ) -> Result<PayloadStatus, EngineApiError>
pub async fn new_payload_v4_metered(
&self,
payload: <PayloadT as PayloadTypes>::ExecutionData,
) -> Result<PayloadStatus, ErrorObject<'static>>
pub async fn new_payload_v4_metered( &self, payload: <PayloadT as PayloadTypes>::ExecutionData, ) -> Result<PayloadStatus, ErrorObject<'static>>
Metrics version of new_payload_v4
§impl<Provider, EngineT, Pool, Validator, ChainSpec> EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>where
Provider: HeaderProvider + BlockReader + StateProviderFactory + 'static,
EngineT: EngineTypes,
Pool: TransactionPool + 'static,
Validator: EngineValidator<EngineT>,
ChainSpec: EthereumHardforks + Send + Sync + 'static,
impl<Provider, EngineT, Pool, Validator, ChainSpec> EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>where
Provider: HeaderProvider + BlockReader + StateProviderFactory + 'static,
EngineT: EngineTypes,
Pool: TransactionPool + 'static,
Validator: EngineValidator<EngineT>,
ChainSpec: EthereumHardforks + Send + Sync + 'static,
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_v1_metered(
&self,
state: ForkchoiceState,
payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Result<ForkchoiceUpdated, EngineApiError>
pub async fn fork_choice_updated_v1_metered( &self, state: ForkchoiceState, payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, EngineApiError>
Metrics version of fork_choice_updated_v1
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_v2_metered(
&self,
state: ForkchoiceState,
payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Result<ForkchoiceUpdated, EngineApiError>
pub async fn fork_choice_updated_v2_metered( &self, state: ForkchoiceState, payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, EngineApiError>
Metrics version of fork_choice_updated_v2
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 fork_choice_updated_v3_metered(
&self,
state: ForkchoiceState,
payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Result<ForkchoiceUpdated, EngineApiError>
pub async fn fork_choice_updated_v3_metered( &self, state: ForkchoiceState, payload_attrs: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, EngineApiError>
Metrics version of fork_choice_updated_v3
pub async fn get_payload_v1(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV1, EngineApiError>
pub async fn get_payload_v1( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV1, 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_v1_metered(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV1, EngineApiError>
pub async fn get_payload_v1_metered( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV1, EngineApiError>
Metrics version of get_payload_v1
pub async fn get_payload_v2(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV2, EngineApiError>
pub async fn get_payload_v2( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV2, 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_v2_metered(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV2, EngineApiError>
pub async fn get_payload_v2_metered( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV2, EngineApiError>
Metrics version of get_payload_v2
pub async fn get_payload_v3(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV3, EngineApiError>
pub async fn get_payload_v3( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV3, 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_metered(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV3, EngineApiError>
pub async fn get_payload_v3_metered( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV3, EngineApiError>
Metrics version of get_payload_v3
pub async fn get_payload_v4(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV4, EngineApiError>
pub async fn get_payload_v4( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV4, 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_metered(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV4, EngineApiError>
pub async fn get_payload_v4_metered( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV4, EngineApiError>
Metrics version of get_payload_v4
pub async fn get_payload_bodies_by_range_with<F, R>(
&self,
start: u64,
count: u64,
f: F,
) -> Result<Vec<Option<R>>, EngineApiError>
pub async fn get_payload_bodies_by_range_with<F, R>( &self, start: u64, count: u64, f: F, ) -> Result<Vec<Option<R>>, EngineApiError>
Fetches all the blocks for the provided range starting at start
, containing count
blocks and returns the mapped payload bodies.
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_v1_metered(
&self,
start: u64,
count: u64,
) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, EngineApiError>
pub async fn get_payload_bodies_by_range_v1_metered( &self, start: u64, count: u64, ) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, EngineApiError>
Metrics version of get_payload_bodies_by_range_v1
pub async fn get_payload_bodies_by_hash_with<F, R>(
&self,
hashes: Vec<FixedBytes<32>>,
f: F,
) -> Result<Vec<Option<R>>, EngineApiError>
pub async fn get_payload_bodies_by_hash_with<F, R>( &self, hashes: Vec<FixedBytes<32>>, f: F, ) -> Result<Vec<Option<R>>, EngineApiError>
Called to retrieve execution payload bodies by hashes.
pub async fn get_payload_bodies_by_hash_v1(
&self,
hashes: Vec<FixedBytes<32>>,
) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, EngineApiError>
pub async 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 async fn get_payload_bodies_by_hash_v1_metered(
&self,
hashes: Vec<FixedBytes<32>>,
) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, EngineApiError>
pub async fn get_payload_bodies_by_hash_v1_metered( &self, hashes: Vec<FixedBytes<32>>, ) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, EngineApiError>
Metrics version of get_payload_bodies_by_hash_v1
pub fn capabilities(&self) -> &EngineCapabilities
pub fn capabilities(&self) -> &EngineCapabilities
Returns reference to supported capabilities.
Trait Implementations§
§impl<Provider, PayloadT, Pool, Validator, ChainSpec> Debug for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>where
PayloadT: PayloadTypes,
impl<Provider, PayloadT, Pool, Validator, ChainSpec> Debug for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>where
PayloadT: PayloadTypes,
§impl<Provider, EngineT, Pool, Validator, ChainSpec> EngineApiServer<EngineT> for EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>where
Provider: HeaderProvider + BlockReader + StateProviderFactory + 'static,
EngineT: EngineTypes<ExecutionData = ExecutionData>,
Pool: TransactionPool + 'static,
Validator: EngineValidator<EngineT>,
ChainSpec: EthereumHardforks + Send + Sync + 'static,
impl<Provider, EngineT, Pool, Validator, ChainSpec> EngineApiServer<EngineT> for EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>where
Provider: HeaderProvider + BlockReader + StateProviderFactory + 'static,
EngineT: EngineTypes<ExecutionData = ExecutionData>,
Pool: TransactionPool + 'static,
Validator: EngineValidator<EngineT>,
ChainSpec: EthereumHardforks + Send + Sync + 'static,
§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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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: ExecutionPayloadV3,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
requests: RequestsOrHash,
) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,
fn new_payload_v4<'life0, 'async_trait>(
&'life0 self,
payload: ExecutionPayloadV3,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
requests: RequestsOrHash,
) -> Pin<Box<dyn Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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>::ExecutionPayloadEnvelopeV1, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,
fn get_payload_v1<'life0, 'async_trait>(
&'life0 self,
payload_id: PayloadId,
) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV1, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: '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>::ExecutionPayloadEnvelopeV2, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,
fn get_payload_v2<'life0, 'async_trait>(
&'life0 self,
payload_id: PayloadId,
) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV2, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: '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>::ExecutionPayloadEnvelopeV3, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,
fn get_payload_v3<'life0, 'async_trait>(
&'life0 self,
payload_id: PayloadId,
) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV3, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: '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>::ExecutionPayloadEnvelopeV4, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,
fn get_payload_v4<'life0, 'async_trait>(
&'life0 self,
payload_id: PayloadId,
) -> Pin<Box<dyn Future<Output = Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV4, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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 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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: '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, Pool, Validator, ChainSpec>: 'async_trait,
Handler for engine_exchangeCapabilitiesV1
See also https://github.com/ethereum/execution-apis/blob/6452a6b194d7db269bf1dbd087a267251d3cc7f8/src/engine/common.md#capabilities
§fn get_blobs_v1<'life0, 'async_trait>(
&'life0 self,
versioned_hashes: Vec<FixedBytes<32>>,
) -> Pin<Box<dyn Future<Output = Result<Vec<Option<BlobAndProofV1>>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,
fn get_blobs_v1<'life0, 'async_trait>(
&'life0 self,
versioned_hashes: Vec<FixedBytes<32>>,
) -> Pin<Box<dyn Future<Output = Result<Vec<Option<BlobAndProofV1>>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,
§fn get_blobs_v2<'life0, 'async_trait>(
&'life0 self,
_versioned_hashes: Vec<FixedBytes<32>>,
) -> Pin<Box<dyn Future<Output = Result<Vec<Option<BlobAndProofV2>>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,
fn get_blobs_v2<'life0, 'async_trait>(
&'life0 self,
_versioned_hashes: Vec<FixedBytes<32>>,
) -> Pin<Box<dyn Future<Output = Result<Vec<Option<BlobAndProofV2>>, ErrorObject<'static>>> + Send + 'async_trait>>where
'life0: 'async_trait,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: 'async_trait,
§impl<Provider, EngineT, Pool, Validator, ChainSpec> IntoEngineApiRpcModule for EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>where
EngineT: EngineTypes,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: EngineApiServer<EngineT>,
impl<Provider, EngineT, Pool, Validator, ChainSpec> IntoEngineApiRpcModule for EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>where
EngineT: EngineTypes,
EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>: EngineApiServer<EngineT>,
§fn into_rpc_module(self) -> RpcModule<()>
fn into_rpc_module(self) -> RpcModule<()>
RpcModule
]Auto Trait Implementations§
impl<Provider, PayloadT, Pool, Validator, ChainSpec> Freeze for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>
impl<Provider, PayloadT, Pool, Validator, ChainSpec> !RefUnwindSafe for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>
impl<Provider, PayloadT, Pool, Validator, ChainSpec> Send for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>
impl<Provider, PayloadT, Pool, Validator, ChainSpec> Sync for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>
impl<Provider, PayloadT, Pool, Validator, ChainSpec> Unpin for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>
impl<Provider, PayloadT, Pool, Validator, ChainSpec> !UnwindSafe for EngineApi<Provider, PayloadT, Pool, Validator, ChainSpec>
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<TxEnv, T> FromRecoveredTx<&T> for TxEnvwhere
TxEnv: FromRecoveredTx<T>,
impl<TxEnv, T> FromRecoveredTx<&T> for TxEnvwhere
TxEnv: FromRecoveredTx<T>,
§fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv
fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv
TxEnv
from a transaction and a sender address.§impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnvwhere
TxEnv: FromTxWithEncoded<T>,
impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnvwhere
TxEnv: FromTxWithEncoded<T>,
§fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv
fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv
TxEnv
from a transaction, its sender, and encoded transaction bytes.§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