pub trait EngineApiServer<Engine>:
Sized
+ Send
+ Sync
+ 'staticwhere
Engine: EngineTypes,{
Show 30 methods
// Required methods
fn new_payload_v1(
&self,
payload: ExecutionPayloadV1,
) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send;
fn new_payload_v2(
&self,
payload: ExecutionPayloadInputV2,
) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send;
fn new_payload_v3(
&self,
payload: ExecutionPayloadV3,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send;
fn new_payload_v4(
&self,
payload: ExecutionPayloadV3,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
execution_requests: RequestsOrHash,
) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send;
fn new_payload_v5(
&self,
payload: ExecutionPayloadV4,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
execution_requests: RequestsOrHash,
) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send;
fn new_payload_v6(
&self,
payload: ExecutionPayloadV4,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
execution_requests: RequestsOrHash,
inclusion_list_transactions: Vec<Bytes>,
) -> impl Future<Output = Result<PayloadStatusV2, ErrorObject<'static>>> + Send;
fn fork_choice_updated_v1(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>,
) -> impl Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send;
fn fork_choice_updated_v2(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>,
) -> impl Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send;
fn fork_choice_updated_v3(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>,
) -> impl Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send;
fn fork_choice_updated_v4(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>,
custody_columns: Option<FixedBytes<16>>,
) -> impl Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send;
fn fork_choice_updated_v5(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>,
custody_columns: Option<FixedBytes<16>>,
) -> impl Future<Output = Result<ForkchoiceUpdatedResponseV2, ErrorObject<'static>>> + Send;
fn get_payload_v1(
&self,
payload_id: PayloadId,
) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV1, ErrorObject<'static>>> + Send;
fn get_payload_v2(
&self,
payload_id: PayloadId,
) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV2, ErrorObject<'static>>> + Send;
fn get_payload_v3(
&self,
payload_id: PayloadId,
) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV3, ErrorObject<'static>>> + Send;
fn get_payload_v4(
&self,
payload_id: PayloadId,
) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV4, ErrorObject<'static>>> + Send;
fn get_payload_v5(
&self,
payload_id: PayloadId,
) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV5, ErrorObject<'static>>> + Send;
fn get_payload_v6(
&self,
payload_id: PayloadId,
) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV6, ErrorObject<'static>>> + Send;
fn get_inclusion_list_v1(
&self,
) -> impl Future<Output = Result<Vec<Bytes>, ErrorObject<'static>>> + Send;
fn get_payload_bodies_by_hash_v1(
&self,
block_hashes: Vec<FixedBytes<32>>,
) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, ErrorObject<'static>>> + Send;
fn get_payload_bodies_by_hash_v2(
&self,
block_hashes: Vec<FixedBytes<32>>,
) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV2>>, ErrorObject<'static>>> + Send;
fn get_payload_bodies_by_range_v1(
&self,
start: Uint<64, 1>,
count: Uint<64, 1>,
) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, ErrorObject<'static>>> + Send;
fn get_payload_bodies_by_range_v2(
&self,
start: Uint<64, 1>,
count: Uint<64, 1>,
) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV2>>, ErrorObject<'static>>> + Send;
fn get_client_version_v1(
&self,
client_version: ClientVersionV1,
) -> impl Future<Output = Result<Vec<ClientVersionV1>, ErrorObject<'static>>> + Send;
fn exchange_capabilities(
&self,
capabilities: Vec<String>,
) -> impl Future<Output = Result<Vec<String>, ErrorObject<'static>>> + Send;
fn has_blobs(
&self,
versioned_hashes: Vec<FixedBytes<32>>,
) -> impl Future<Output = Result<Vec<bool>, ErrorObject<'static>>> + Send;
fn get_blobs_v1(
&self,
versioned_hashes: Vec<FixedBytes<32>>,
) -> impl Future<Output = Result<Vec<Option<BlobAndProofV1>>, ErrorObject<'static>>> + Send;
fn get_blobs_v2(
&self,
versioned_hashes: Vec<FixedBytes<32>>,
) -> impl Future<Output = Result<Option<Vec<BlobAndProofV2>>, ErrorObject<'static>>> + Send;
fn get_blobs_v3(
&self,
versioned_hashes: Vec<FixedBytes<32>>,
) -> impl Future<Output = Result<Option<Vec<Option<BlobAndProofV2>>>, ErrorObject<'static>>> + Send;
fn get_blobs_v4(
&self,
versioned_hashes: Vec<FixedBytes<32>>,
indices_bitarray: FixedBytes<16>,
) -> impl Future<Output = Result<Option<Vec<Option<BlobCellsAndProofsV1>>>, ErrorObject<'static>>> + Send;
// Provided method
fn into_rpc(self) -> RpcModule<Self>
where Engine: Send + Sync + 'static + DeserializeOwned + Clone + Serialize { ... }
}Expand description
re-export of all server traits
Server trait implementation for the EngineApi RPC API.
Required Methods§
Sourcefn new_payload_v1(
&self,
payload: ExecutionPayloadV1,
) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send
fn new_payload_v1( &self, payload: ExecutionPayloadV1, ) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send
See also https://github.com/ethereum/execution-apis/blob/6709c2a795b707202e93c4f2867fa0bf2640a84f/src/engine/paris.md#engine_newpayloadv1
Caution: This should not accept the withdrawals field
Sourcefn new_payload_v2(
&self,
payload: ExecutionPayloadInputV2,
) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send
fn new_payload_v2( &self, payload: ExecutionPayloadInputV2, ) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send
Sourcefn new_payload_v3(
&self,
payload: ExecutionPayloadV3,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send
fn new_payload_v3( &self, payload: ExecutionPayloadV3, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, ) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send
Post Cancun payload handler
See also https://github.com/ethereum/execution-apis/blob/main/src/engine/cancun.md#engine_newpayloadv3
Sourcefn new_payload_v4(
&self,
payload: ExecutionPayloadV3,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
execution_requests: RequestsOrHash,
) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send
fn new_payload_v4( &self, payload: ExecutionPayloadV3, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, execution_requests: RequestsOrHash, ) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send
Post Prague payload handler
See also https://github.com/ethereum/execution-apis/blob/main/src/engine/prague.md#engine_newpayloadv4
Sourcefn new_payload_v5(
&self,
payload: ExecutionPayloadV4,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
execution_requests: RequestsOrHash,
) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send
fn new_payload_v5( &self, payload: ExecutionPayloadV4, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, execution_requests: RequestsOrHash, ) -> impl Future<Output = Result<PayloadStatus, ErrorObject<'static>>> + Send
Post Amsterdam payload handler
See also https://github.com/ethereum/execution-apis/blob/main/src/engine/amsterdam.md#engine_newpayloadv5
Sourcefn new_payload_v6(
&self,
payload: ExecutionPayloadV4,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
execution_requests: RequestsOrHash,
inclusion_list_transactions: Vec<Bytes>,
) -> impl Future<Output = Result<PayloadStatusV2, ErrorObject<'static>>> + Send
fn new_payload_v6( &self, payload: ExecutionPayloadV4, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, execution_requests: RequestsOrHash, inclusion_list_transactions: Vec<Bytes>, ) -> impl Future<Output = Result<PayloadStatusV2, ErrorObject<'static>>> + Send
Post Bogota payload handler stub.
See also https://github.com/ethereum/execution-apis/blob/main/src/engine/bogota.md#engine_newpayloadv6
Sourcefn fork_choice_updated_v1(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>,
) -> impl Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send
fn fork_choice_updated_v1( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> impl Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send
Caution: This should not accept the withdrawals field in the payload attributes.
Sourcefn fork_choice_updated_v2(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>,
) -> impl Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send
fn fork_choice_updated_v2( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> impl Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send
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.
Caution: This should not accept the parentBeaconBlockRoot field in the payload
attributes.
Sourcefn fork_choice_updated_v3(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>,
) -> impl Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send
fn fork_choice_updated_v3( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> impl Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send
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
Sourcefn fork_choice_updated_v4(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>,
custody_columns: Option<FixedBytes<16>>,
) -> impl Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send
fn fork_choice_updated_v4( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, custody_columns: Option<FixedBytes<16>>, ) -> impl Future<Output = Result<ForkchoiceUpdated, ErrorObject<'static>>> + Send
Post Amsterdam forkchoice update handler
This is the same as forkchoiceUpdatedV3, but expects an additional
slotNumber field in the payloadAttributes, if payload attributes
are provided.
custody_columns maps to the third positional JSON-RPC parameter, custodyColumns,
the custody-column bitmask used for EIP-8070 sparse blobpool signaling. It is
DATA|null and must be 16 bytes when set. When calling engine_forkchoiceUpdatedV4
with custody columns but without payload attributes, the second parameter must still
be supplied as null, for example:
[forkchoiceState, null, custodyColumns].
Sourcefn fork_choice_updated_v5(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>,
custody_columns: Option<FixedBytes<16>>,
) -> impl Future<Output = Result<ForkchoiceUpdatedResponseV2, ErrorObject<'static>>> + Send
fn fork_choice_updated_v5( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, custody_columns: Option<FixedBytes<16>>, ) -> impl Future<Output = Result<ForkchoiceUpdatedResponseV2, ErrorObject<'static>>> + Send
Post Bogota forkchoice update stub.
See also https://github.com/ethereum/execution-apis/blob/main/src/engine/bogota.md#engine_forkchoiceupdatedv5
Sourcefn get_payload_v1(
&self,
payload_id: PayloadId,
) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV1, ErrorObject<'static>>> + Send
fn get_payload_v1( &self, payload_id: PayloadId, ) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV1, ErrorObject<'static>>> + Send
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.
Sourcefn get_payload_v2(
&self,
payload_id: PayloadId,
) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV2, ErrorObject<'static>>> + Send
fn get_payload_v2( &self, payload_id: PayloadId, ) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV2, ErrorObject<'static>>> + Send
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.
Sourcefn get_payload_v3(
&self,
payload_id: PayloadId,
) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV3, ErrorObject<'static>>> + Send
fn get_payload_v3( &self, payload_id: PayloadId, ) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV3, ErrorObject<'static>>> + Send
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.
Sourcefn get_payload_v4(
&self,
payload_id: PayloadId,
) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV4, ErrorObject<'static>>> + Send
fn get_payload_v4( &self, payload_id: PayloadId, ) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV4, ErrorObject<'static>>> + Send
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.
Sourcefn get_payload_v5(
&self,
payload_id: PayloadId,
) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV5, ErrorObject<'static>>> + Send
fn get_payload_v5( &self, payload_id: PayloadId, ) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV5, ErrorObject<'static>>> + Send
Post Osaka payload handler.
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.
Sourcefn get_payload_v6(
&self,
payload_id: PayloadId,
) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV6, ErrorObject<'static>>> + Send
fn get_payload_v6( &self, payload_id: PayloadId, ) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV6, ErrorObject<'static>>> + Send
Post Amsterdam payload handler.
See also https://github.com/ethereum/execution-apis/blob/main/src/engine/amsterdam.md#engine_getpayloadv6
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.
Sourcefn get_inclusion_list_v1(
&self,
) -> impl Future<Output = Result<Vec<Bytes>, ErrorObject<'static>>> + Send
fn get_inclusion_list_v1( &self, ) -> impl Future<Output = Result<Vec<Bytes>, ErrorObject<'static>>> + Send
Returns transactions selected from the local transaction pool for the FOCIL inclusion list.
See also https://github.com/ethereum/execution-apis/pull/609.
Sourcefn get_payload_bodies_by_hash_v1(
&self,
block_hashes: Vec<FixedBytes<32>>,
) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, ErrorObject<'static>>> + Send
fn get_payload_bodies_by_hash_v1( &self, block_hashes: Vec<FixedBytes<32>>, ) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, ErrorObject<'static>>> + Send
Sourcefn get_payload_bodies_by_hash_v2(
&self,
block_hashes: Vec<FixedBytes<32>>,
) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV2>>, ErrorObject<'static>>> + Send
fn get_payload_bodies_by_hash_v2( &self, block_hashes: Vec<FixedBytes<32>>, ) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV2>>, ErrorObject<'static>>> + Send
Returns ExecutionPayloadBodyV2 objects for the given block hashes.
V2 includes the block_access_list field for EIP-7928 BAL support.
Sourcefn get_payload_bodies_by_range_v1(
&self,
start: Uint<64, 1>,
count: Uint<64, 1>,
) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, ErrorObject<'static>>> + Send
fn get_payload_bodies_by_range_v1( &self, start: Uint<64, 1>, count: Uint<64, 1>, ) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, ErrorObject<'static>>> + Send
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.
Sourcefn get_payload_bodies_by_range_v2(
&self,
start: Uint<64, 1>,
count: Uint<64, 1>,
) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV2>>, ErrorObject<'static>>> + Send
fn get_payload_bodies_by_range_v2( &self, start: Uint<64, 1>, count: Uint<64, 1>, ) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV2>>, ErrorObject<'static>>> + Send
Returns ExecutionPayloadBodyV2 objects for the given block range.
V2 includes the block_access_list field for EIP-7928 BAL support.
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.
Sourcefn get_client_version_v1(
&self,
client_version: ClientVersionV1,
) -> impl Future<Output = Result<Vec<ClientVersionV1>, ErrorObject<'static>>> + Send
fn get_client_version_v1( &self, client_version: ClientVersionV1, ) -> impl Future<Output = Result<Vec<ClientVersionV1>, ErrorObject<'static>>> + Send
This function will return the ClientVersionV1 object.
See also:
https://github.com/ethereum/execution-apis/blob/03911ffc053b8b806123f1fc237184b0092a485a/src/engine/identification.md#engine_getclientversionv1
- When connected to a single execution client, the consensus client MUST receive an
array with a single
ClientVersionV1object. - 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.
Sourcefn exchange_capabilities(
&self,
capabilities: Vec<String>,
) -> impl Future<Output = Result<Vec<String>, ErrorObject<'static>>> + Send
fn exchange_capabilities( &self, capabilities: Vec<String>, ) -> impl Future<Output = Result<Vec<String>, ErrorObject<'static>>> + Send
Sourcefn has_blobs(
&self,
versioned_hashes: Vec<FixedBytes<32>>,
) -> impl Future<Output = Result<Vec<bool>, ErrorObject<'static>>> + Send
fn has_blobs( &self, versioned_hashes: Vec<FixedBytes<32>>, ) -> impl Future<Output = Result<Vec<bool>, ErrorObject<'static>>> + Send
Report blob availability for the requested blob versioned hashes.
Sourcefn get_blobs_v1(
&self,
versioned_hashes: Vec<FixedBytes<32>>,
) -> impl Future<Output = Result<Vec<Option<BlobAndProofV1>>, ErrorObject<'static>>> + Send
fn get_blobs_v1( &self, versioned_hashes: Vec<FixedBytes<32>>, ) -> impl Future<Output = Result<Vec<Option<BlobAndProofV1>>, ErrorObject<'static>>> + Send
Fetch blobs for the consensus layer from the blob store.
Sourcefn get_blobs_v2(
&self,
versioned_hashes: Vec<FixedBytes<32>>,
) -> impl Future<Output = Result<Option<Vec<BlobAndProofV2>>, ErrorObject<'static>>> + Send
fn get_blobs_v2( &self, versioned_hashes: Vec<FixedBytes<32>>, ) -> impl Future<Output = Result<Option<Vec<BlobAndProofV2>>, ErrorObject<'static>>> + Send
Fetch blobs for the consensus layer from the blob store.
Returns a response only if blobs and proofs are present for all of the versioned hashes: 2. Client software MUST return null in case of any missing or older version blobs.
Sourcefn get_blobs_v3(
&self,
versioned_hashes: Vec<FixedBytes<32>>,
) -> impl Future<Output = Result<Option<Vec<Option<BlobAndProofV2>>>, ErrorObject<'static>>> + Send
fn get_blobs_v3( &self, versioned_hashes: Vec<FixedBytes<32>>, ) -> impl Future<Output = Result<Option<Vec<Option<BlobAndProofV2>>>, ErrorObject<'static>>> + Send
Fetch blobs for the consensus layer from the blob store.
Returns a response of the same length as the request. Missing or older-version blobs are
returned as null elements.
Returns null if syncing.
Sourcefn get_blobs_v4(
&self,
versioned_hashes: Vec<FixedBytes<32>>,
indices_bitarray: FixedBytes<16>,
) -> impl Future<Output = Result<Option<Vec<Option<BlobCellsAndProofsV1>>>, ErrorObject<'static>>> + Send
fn get_blobs_v4( &self, versioned_hashes: Vec<FixedBytes<32>>, indices_bitarray: FixedBytes<16>, ) -> impl Future<Output = Result<Option<Vec<Option<BlobCellsAndProofsV1>>>, ErrorObject<'static>>> + Send
Fetch blob cells for the consensus layer from the blob store.
Returns a response of the same length as the request. Missing blobs are returned as null
elements; missing requested cells within an available blob are returned as null cell and
proof entries.
Returns null if syncing.
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl<Provider, EngineT, Pool, Validator, ChainSpec> EngineApiServer<EngineT> for EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>where
Provider: BlockReader + StateProviderFactory + BalProvider + 'static,
EngineT: EngineTypes<ExecutionData = ExecutionData>,
Pool: TransactionPool + 'static,
Validator: EngineApiValidator<EngineT>,
ChainSpec: EthereumHardforks + Send + Sync + 'static,
impl<Provider, EngineT, Pool, Validator, ChainSpec> EngineApiServer<EngineT> for EngineApi<Provider, EngineT, Pool, Validator, ChainSpec>where
Provider: BlockReader + StateProviderFactory + BalProvider + 'static,
EngineT: EngineTypes<ExecutionData = ExecutionData>,
Pool: TransactionPool + 'static,
Validator: EngineApiValidator<EngineT>,
ChainSpec: EthereumHardforks + Send + Sync + 'static,
Source§async fn new_payload_v1(
&self,
payload: ExecutionPayloadV1,
) -> Result<PayloadStatus, ErrorObject<'static>>
async fn new_payload_v1( &self, payload: ExecutionPayloadV1, ) -> Result<PayloadStatus, ErrorObject<'static>>
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
Source§async fn new_payload_v2(
&self,
payload: ExecutionPayloadInputV2,
) -> Result<PayloadStatus, ErrorObject<'static>>
async fn new_payload_v2( &self, payload: ExecutionPayloadInputV2, ) -> Result<PayloadStatus, ErrorObject<'static>>
Handler for engine_newPayloadV2
See also https://github.com/ethereum/execution-apis/blob/584905270d8ad665718058060267061ecfd79ca5/src/engine/shanghai.md#engine_newpayloadv2
Source§async fn new_payload_v3(
&self,
payload: ExecutionPayloadV3,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
) -> Result<PayloadStatus, ErrorObject<'static>>
async fn new_payload_v3( &self, payload: ExecutionPayloadV3, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, ) -> Result<PayloadStatus, ErrorObject<'static>>
Handler for engine_newPayloadV3
See also https://github.com/ethereum/execution-apis/blob/fe8e13c288c592ec154ce25c534e26cb7ce0530d/src/engine/cancun.md#engine_newpayloadv3
Source§async fn new_payload_v4(
&self,
payload: ExecutionPayloadV3,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
requests: RequestsOrHash,
) -> Result<PayloadStatus, ErrorObject<'static>>
async fn new_payload_v4( &self, payload: ExecutionPayloadV3, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, requests: RequestsOrHash, ) -> Result<PayloadStatus, ErrorObject<'static>>
Handler for engine_newPayloadV4
See also https://github.com/ethereum/execution-apis/blob/03911ffc053b8b806123f1fc237184b0092a485a/src/engine/prague.md#engine_newpayloadv4
Source§async fn new_payload_v5(
&self,
payload: ExecutionPayloadV4,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
requests: RequestsOrHash,
) -> Result<PayloadStatus, ErrorObject<'static>>
async fn new_payload_v5( &self, payload: ExecutionPayloadV4, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, requests: RequestsOrHash, ) -> Result<PayloadStatus, ErrorObject<'static>>
Handler for engine_newPayloadV5
Post Amsterdam payload handler.
See also https://github.com/ethereum/execution-apis/blob/main/src/engine/amsterdam.md#engine_newpayloadv5
Source§async fn new_payload_v6(
&self,
payload: ExecutionPayloadV4,
versioned_hashes: Vec<FixedBytes<32>>,
parent_beacon_block_root: FixedBytes<32>,
execution_requests: RequestsOrHash,
inclusion_list_transactions: Vec<Bytes>,
) -> Result<PayloadStatusV2, ErrorObject<'static>>
async fn new_payload_v6( &self, payload: ExecutionPayloadV4, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, execution_requests: RequestsOrHash, inclusion_list_transactions: Vec<Bytes>, ) -> Result<PayloadStatusV2, ErrorObject<'static>>
Handler for engine_newPayloadV6.
See also https://github.com/ethereum/execution-apis/blob/main/src/engine/bogota.md#engine_newpayloadv6
Source§async fn fork_choice_updated_v1(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Result<ForkchoiceUpdated, ErrorObject<'static>>
async fn fork_choice_updated_v1( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, ErrorObject<'static>>
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
Source§async fn fork_choice_updated_v2(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Result<ForkchoiceUpdated, ErrorObject<'static>>
async fn fork_choice_updated_v2( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, ErrorObject<'static>>
Handler for engine_forkchoiceUpdatedV2
See also https://github.com/ethereum/execution-apis/blob/3d627c95a4d3510a8187dd02e0250ecb4331d27e/src/engine/shanghai.md#engine_forkchoiceupdatedv2
Source§async fn fork_choice_updated_v3(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
) -> Result<ForkchoiceUpdated, ErrorObject<'static>>
async fn fork_choice_updated_v3( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>, ) -> Result<ForkchoiceUpdated, ErrorObject<'static>>
Handler for engine_forkchoiceUpdatedV3
See also https://github.com/ethereum/execution-apis/blob/main/src/engine/cancun.md#engine_forkchoiceupdatedv3
Source§async fn fork_choice_updated_v4(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
custody_columns: Option<FixedBytes<16>>,
) -> Result<ForkchoiceUpdated, ErrorObject<'static>>
async fn fork_choice_updated_v4( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>, custody_columns: Option<FixedBytes<16>>, ) -> Result<ForkchoiceUpdated, ErrorObject<'static>>
Handler for engine_forkchoiceUpdatedV4
Source§async fn fork_choice_updated_v5(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>,
custody_columns: Option<FixedBytes<16>>,
) -> Result<ForkchoiceUpdatedResponseV2, ErrorObject<'static>>
async fn fork_choice_updated_v5( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<EngineT as PayloadTypes>::PayloadAttributes>, custody_columns: Option<FixedBytes<16>>, ) -> Result<ForkchoiceUpdatedResponseV2, ErrorObject<'static>>
Handler for engine_forkchoiceUpdatedV5.
See also https://github.com/ethereum/execution-apis/blob/main/src/engine/bogota.md#engine_forkchoiceupdatedv5
Source§async fn get_payload_v1(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV1, ErrorObject<'static>>
async fn get_payload_v1( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV1, ErrorObject<'static>>
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.
Source§async fn get_payload_v2(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV2, ErrorObject<'static>>
async fn get_payload_v2( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV2, ErrorObject<'static>>
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.
Source§async fn get_payload_v3(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV3, ErrorObject<'static>>
async fn get_payload_v3( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV3, ErrorObject<'static>>
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.
Source§async fn get_payload_v4(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV4, ErrorObject<'static>>
async fn get_payload_v4( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV4, ErrorObject<'static>>
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.
Source§async fn get_payload_v5(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV5, ErrorObject<'static>>
async fn get_payload_v5( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV5, ErrorObject<'static>>
Handler for engine_getPayloadV5
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§async fn get_payload_v6(
&self,
payload_id: PayloadId,
) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV6, ErrorObject<'static>>
async fn get_payload_v6( &self, payload_id: PayloadId, ) -> Result<<EngineT as EngineTypes>::ExecutionPayloadEnvelopeV6, ErrorObject<'static>>
Handler for engine_getPayloadV6
Post-Amsterdam payload handler that includes Block Access Lists (BAL).
See also https://github.com/ethereum/execution-apis/blob/main/src/engine/amsterdam.md#engine_getpayloadv6
Source§async fn get_inclusion_list_v1(
&self,
) -> Result<Vec<Bytes>, ErrorObject<'static>>
async fn get_inclusion_list_v1( &self, ) -> Result<Vec<Bytes>, ErrorObject<'static>>
Handler for engine_getInclusionListV1.
See also https://github.com/ethereum/execution-apis/pull/609.
Source§async fn get_payload_bodies_by_hash_v1(
&self,
block_hashes: Vec<FixedBytes<32>>,
) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, ErrorObject<'static>>
async fn get_payload_bodies_by_hash_v1( &self, block_hashes: Vec<FixedBytes<32>>, ) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, ErrorObject<'static>>
Handler for engine_getPayloadBodiesByHashV1
See also https://github.com/ethereum/execution-apis/blob/6452a6b194d7db269bf1dbd087a267251d3cc7f8/src/engine/shanghai.md#engine_getpayloadbodiesbyhashv1
Source§async fn get_payload_bodies_by_hash_v2(
&self,
block_hashes: Vec<FixedBytes<32>>,
) -> Result<Vec<Option<ExecutionPayloadBodyV2>>, ErrorObject<'static>>
async fn get_payload_bodies_by_hash_v2( &self, block_hashes: Vec<FixedBytes<32>>, ) -> Result<Vec<Option<ExecutionPayloadBodyV2>>, ErrorObject<'static>>
Handler for engine_getPayloadBodiesByHashV2
V2 includes the block_access_list field for EIP-7928 BAL support.
Source§async fn get_payload_bodies_by_range_v1(
&self,
start: Uint<64, 1>,
count: Uint<64, 1>,
) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, ErrorObject<'static>>
async fn get_payload_bodies_by_range_v1( &self, start: Uint<64, 1>, count: Uint<64, 1>, ) -> Result<Vec<Option<ExecutionPayloadBodyV1>>, ErrorObject<'static>>
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.
Source§async fn get_payload_bodies_by_range_v2(
&self,
start: Uint<64, 1>,
count: Uint<64, 1>,
) -> Result<Vec<Option<ExecutionPayloadBodyV2>>, ErrorObject<'static>>
async fn get_payload_bodies_by_range_v2( &self, start: Uint<64, 1>, count: Uint<64, 1>, ) -> Result<Vec<Option<ExecutionPayloadBodyV2>>, ErrorObject<'static>>
Handler for engine_getPayloadBodiesByRangeV2
V2 includes the block_access_list field for EIP-7928 BAL support.
Source§async fn get_client_version_v1(
&self,
client: ClientVersionV1,
) -> Result<Vec<ClientVersionV1>, ErrorObject<'static>>
async fn get_client_version_v1( &self, client: ClientVersionV1, ) -> Result<Vec<ClientVersionV1>, ErrorObject<'static>>
Handler for engine_getClientVersionV1
Source§async fn exchange_capabilities(
&self,
capabilities: Vec<String>,
) -> Result<Vec<String>, ErrorObject<'static>>
async fn exchange_capabilities( &self, capabilities: Vec<String>, ) -> Result<Vec<String>, ErrorObject<'static>>
Handler for engine_exchangeCapabilitiesV1
See also https://github.com/ethereum/execution-apis/blob/6452a6b194d7db269bf1dbd087a267251d3cc7f8/src/engine/common.md#capabilities