OpEngineApiClient

Trait OpEngineApiClient 

pub trait OpEngineApiClient<Engine>: ClientT
where Engine: EngineTypes, <Engine as PayloadTypes>::PayloadAttributes: Serialize + Clone,
{
Show 14 methods // Provided methods fn new_payload_v2( &self, payload: ExecutionPayloadInputV2, ) -> impl Future<Output = Result<PayloadStatus, Error>> + Send { ... } fn new_payload_v3( &self, payload: ExecutionPayloadV3, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, ) -> impl Future<Output = Result<PayloadStatus, Error>> + Send { ... } fn new_payload_v4( &self, payload: OpExecutionPayloadV4, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, execution_requests: Requests, ) -> impl Future<Output = Result<PayloadStatus, Error>> + Send { ... } fn fork_choice_updated_v1( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> impl Future<Output = Result<ForkchoiceUpdated, Error>> + Send { ... } fn fork_choice_updated_v2( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> impl Future<Output = Result<ForkchoiceUpdated, Error>> + Send { ... } fn fork_choice_updated_v3( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> impl Future<Output = Result<ForkchoiceUpdated, Error>> + Send { ... } fn get_payload_v2( &self, payload_id: PayloadId, ) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV2, Error>> + Send { ... } fn get_payload_v3( &self, payload_id: PayloadId, ) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV3, Error>> + Send { ... } fn get_payload_v4( &self, payload_id: PayloadId, ) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV4, Error>> + Send { ... } fn get_payload_bodies_by_hash_v1( &self, block_hashes: Vec<FixedBytes<32>>, ) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, Error>> + Send { ... } fn get_payload_bodies_by_range_v1( &self, start: Uint<64, 1>, count: Uint<64, 1>, ) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, Error>> + Send { ... } fn signal_superchain_v1( &self, _signal: SuperchainSignal, ) -> impl Future<Output = Result<ProtocolVersion, Error>> + Send { ... } fn get_client_version_v1( &self, client_version: ClientVersionV1, ) -> impl Future<Output = Result<Vec<ClientVersionV1>, Error>> + Send { ... } fn exchange_capabilities( &self, capabilities: Vec<String>, ) -> impl Future<Output = Result<Vec<String>, Error>> + Send { ... }
}
Expand description

Client implementation for the OpEngineApi RPC API.

Provided Methods§

fn new_payload_v2( &self, payload: ExecutionPayloadInputV2, ) -> impl Future<Output = Result<PayloadStatus, Error>> + Send

Sends the given payload to the execution layer client, as specified for the Shanghai fork.

See also https://github.com/ethereum/execution-apis/blob/584905270d8ad665718058060267061ecfd79ca5/src/engine/shanghai.md#engine_newpayloadv2

No modifications needed for OP compatibility.

fn new_payload_v3( &self, payload: ExecutionPayloadV3, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, ) -> impl Future<Output = Result<PayloadStatus, Error>> + Send

Sends the given payload to the execution layer client, as specified for the Cancun fork.

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

OP modifications:

  • expected versioned hashes MUST be an empty array: therefore the versioned_hashes parameter is removed.
  • parent beacon block root MUST be the parent beacon block root from the L1 origin block of the L2 block.
  • blob versioned hashes MUST be empty list.

fn new_payload_v4( &self, payload: OpExecutionPayloadV4, versioned_hashes: Vec<FixedBytes<32>>, parent_beacon_block_root: FixedBytes<32>, execution_requests: Requests, ) -> impl Future<Output = Result<PayloadStatus, Error>> + Send

Sends the given payload to the execution layer client, as specified for the Prague fork.

See also https://github.com/ethereum/execution-apis/blob/03911ffc053b8b806123f1fc237184b0092a485a/src/engine/prague.md#engine_newpayloadv4

  • blob versioned hashes MUST be empty list.
  • execution layer requests MUST be empty list.

fn fork_choice_updated_v1( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> impl Future<Output = Result<ForkchoiceUpdated, Error>> + Send

fn fork_choice_updated_v2( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> impl Future<Output = Result<ForkchoiceUpdated, Error>> + Send

Updates the execution layer client with the given fork choice, as specified for the Shanghai fork.

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

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

OP modifications:

fn fork_choice_updated_v3( &self, fork_choice_state: ForkchoiceState, payload_attributes: Option<<Engine as PayloadTypes>::PayloadAttributes>, ) -> impl Future<Output = Result<ForkchoiceUpdated, Error>> + Send

Updates the execution layer client with the given fork choice, as specified for the Cancun fork.

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

OP modifications:

fn get_payload_v2( &self, payload_id: PayloadId, ) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV2, Error>> + Send

Retrieves an execution payload from a previously started build process, as specified for the Shanghai fork.

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

Note:

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

No modifications needed for OP compatibility.

fn get_payload_v3( &self, payload_id: PayloadId, ) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV3, Error>> + Send

Retrieves an execution payload from a previously started build process, as specified for the Cancun fork.

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

Note:

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

OP modifications:

  • the response type is extended to [EngineTypes::ExecutionPayloadEnvelopeV3].

fn get_payload_v4( &self, payload_id: PayloadId, ) -> impl Future<Output = Result<<Engine as EngineTypes>::ExecutionPayloadEnvelopeV4, Error>> + 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.

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.

OP modifications:

  • the response type is extended to [EngineTypes::ExecutionPayloadEnvelopeV4].

fn get_payload_bodies_by_hash_v1( &self, block_hashes: Vec<FixedBytes<32>>, ) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, Error>> + Send

fn get_payload_bodies_by_range_v1( &self, start: Uint<64, 1>, count: Uint<64, 1>, ) -> impl Future<Output = Result<Vec<Option<ExecutionPayloadBodyV1>>, Error>> + 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.

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

fn signal_superchain_v1( &self, _signal: SuperchainSignal, ) -> impl Future<Output = Result<ProtocolVersion, Error>> + Send

Signals superchain information to the Engine. Returns the latest supported OP-Stack protocol version of the execution engine. See also https://specs.optimism.io/protocol/exec-engine.html#engine_signalsuperchainv1

fn get_client_version_v1( &self, client_version: ClientVersionV1, ) -> impl Future<Output = Result<Vec<ClientVersionV1>, Error>> + Send

Returns the execution client version information.

Note:

The client_version parameter identifies the consensus client.

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

fn exchange_capabilities( &self, capabilities: Vec<String>, ) -> impl Future<Output = Result<Vec<String>, Error>> + Send

Returns the list of Engine API methods supported by the execution layer client software.

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

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

§

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