RpcConvert

Trait RpcConvert 

Source
pub trait RpcConvert:
    Send
    + Sync
    + Unpin
    + Debug
    + DynClone
    + 'static {
    type Primitives: NodePrimitives;
    type Evm: ConfigureEvm<Primitives = Self::Primitives>;
    type Network: RpcTypes
       where <Self::Network as RpcTypes>::TransactionRequest: SignableTxRequest<<Self::Primitives as NodePrimitives>::SignedTx>;
    type Error: Error + Into<ErrorObject<'static>>;

    // Required methods
    fn fill(
        &self,
        tx: Recovered<<Self::Primitives as NodePrimitives>::SignedTx>,
        tx_info: TransactionInfo,
    ) -> Result<<Self::Network as RpcTypes>::TransactionResponse, Self::Error>;
    fn build_simulate_v1_transaction(
        &self,
        request: <Self::Network as RpcTypes>::TransactionRequest,
    ) -> Result<<Self::Primitives as NodePrimitives>::SignedTx, Self::Error>;
    fn tx_env(
        &self,
        request: <Self::Network as RpcTypes>::TransactionRequest,
        evm_env: &EvmEnv<<<<Self::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Spec, <<<Self::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::BlockEnv>,
    ) -> Result<<<<Self::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Tx, Self::Error>;
    fn convert_receipts(
        &self,
        receipts: Vec<ConvertReceiptInput<'_, Self::Primitives>>,
    ) -> Result<Vec<<Self::Network as RpcTypes>::Receipt>, Self::Error>;
    fn convert_receipts_with_block(
        &self,
        receipts: Vec<ConvertReceiptInput<'_, Self::Primitives>>,
        block: &SealedBlock<<Self::Primitives as NodePrimitives>::Block>,
    ) -> Result<Vec<<Self::Network as RpcTypes>::Receipt>, Self::Error>;
    fn convert_header(
        &self,
        header: SealedHeader<<Self::Primitives as NodePrimitives>::BlockHeader>,
        block_size: usize,
    ) -> Result<<Self::Network as RpcTypes>::Header, Self::Error>;

    // Provided method
    fn fill_pending(
        &self,
        tx: Recovered<<Self::Primitives as NodePrimitives>::SignedTx>,
    ) -> Result<<Self::Network as RpcTypes>::TransactionResponse, Self::Error> { ... }
}
Expand description

Responsible for the conversions from and into RPC requests and responses.

The JSON-RPC schema and the Node primitives are configurable using the RpcConvert::Network and RpcConvert::Primitives associated types respectively.

A generic implementation RpcConverter should be preferred over a manual implementation. As long as its trait bound requirements are met, the implementation is created automatically and can be used in RPC method handlers for all the conversions.

Required Associated Types§

Source

type Primitives: NodePrimitives

Associated lower layer consensus types to convert from and into types of Self::Network.

Source

type Evm: ConfigureEvm<Primitives = Self::Primitives>

The EVM configuration.

Source

type Network: RpcTypes where <Self::Network as RpcTypes>::TransactionRequest: SignableTxRequest<<Self::Primitives as NodePrimitives>::SignedTx>

Associated upper layer JSON-RPC API network requests and responses to convert from and into types of Self::Primitives.

Source

type Error: Error + Into<ErrorObject<'static>>

An associated RPC conversion error.

Required Methods§

Source

fn fill( &self, tx: Recovered<<Self::Primitives as NodePrimitives>::SignedTx>, tx_info: TransactionInfo, ) -> Result<<Self::Network as RpcTypes>::TransactionResponse, Self::Error>

Create a new rpc transaction result for a mined transaction, using the given block hash, number, and tx index fields to populate the corresponding fields in the rpc result.

The block hash, number, and tx index fields should be from the original block where the transaction was mined.

Source

fn build_simulate_v1_transaction( &self, request: <Self::Network as RpcTypes>::TransactionRequest, ) -> Result<<Self::Primitives as NodePrimitives>::SignedTx, Self::Error>

Builds a fake transaction from a transaction request for inclusion into block built in eth_simulateV1.

Source

fn tx_env( &self, request: <Self::Network as RpcTypes>::TransactionRequest, evm_env: &EvmEnv<<<<Self::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Spec, <<<Self::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::BlockEnv>, ) -> Result<<<<Self::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Tx, Self::Error>

Creates a transaction environment for execution based on request with corresponding cfg_env and block_env.

Source

fn convert_receipts( &self, receipts: Vec<ConvertReceiptInput<'_, Self::Primitives>>, ) -> Result<Vec<<Self::Network as RpcTypes>::Receipt>, Self::Error>

Converts a set of primitive receipts to RPC representations. It is guaranteed that all receipts are from the same block.

Source

fn convert_receipts_with_block( &self, receipts: Vec<ConvertReceiptInput<'_, Self::Primitives>>, block: &SealedBlock<<Self::Primitives as NodePrimitives>::Block>, ) -> Result<Vec<<Self::Network as RpcTypes>::Receipt>, Self::Error>

Converts a set of primitive receipts to RPC representations. It is guaranteed that all receipts are from the same block.

Also accepts the corresponding block in case the receipt requires additional metadata.

Source

fn convert_header( &self, header: SealedHeader<<Self::Primitives as NodePrimitives>::BlockHeader>, block_size: usize, ) -> Result<<Self::Network as RpcTypes>::Header, Self::Error>

Converts a primitive header to an RPC header.

Provided Methods§

Source

fn fill_pending( &self, tx: Recovered<<Self::Primitives as NodePrimitives>::SignedTx>, ) -> Result<<Self::Network as RpcTypes>::TransactionResponse, Self::Error>

Wrapper for fill() with default TransactionInfo Create a new rpc transaction result for a pending signed transaction, setting block environment related fields to None.

Trait Implementations§

Source§

impl<'clone, Primitives, Network, Error, Evm> Clone for Box<dyn RpcConvert<Error = Error, Evm = Evm, Primitives = Primitives, Network = Network> + 'clone>

Source§

fn clone( &self, ) -> Box<dyn RpcConvert<Error = Error, Evm = Evm, Primitives = Primitives, Network = Network> + 'clone>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'clone, Primitives, Network, Error, Evm> Clone for Box<dyn RpcConvert<Error = Error, Evm = Evm, Primitives = Primitives, Network = Network> + Send + 'clone>

Source§

fn clone( &self, ) -> Box<dyn RpcConvert<Error = Error, Evm = Evm, Primitives = Primitives, Network = Network> + Send + 'clone>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'clone, Primitives, Network, Error, Evm> Clone for Box<dyn RpcConvert<Error = Error, Evm = Evm, Primitives = Primitives, Network = Network> + Sync + Send + 'clone>

Source§

fn clone( &self, ) -> Box<dyn RpcConvert<Error = Error, Evm = Evm, Primitives = Primitives, Network = Network> + Sync + Send + 'clone>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'clone, Primitives, Network, Error, Evm> Clone for Box<dyn RpcConvert<Error = Error, Evm = Evm, Primitives = Primitives, Network = Network> + Sync + 'clone>

Source§

fn clone( &self, ) -> Box<dyn RpcConvert<Error = Error, Evm = Evm, Primitives = Primitives, Network = Network> + Sync + 'clone>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Implementations on Foreign Types§

Source§

impl<'a, T> RpcConvert for &'a T
where T: 'a + RpcConvert + ?Sized, &'a T: Send + Sync + Unpin + Debug + DynClone + 'static,

Source§

type Primitives = <T as RpcConvert>::Primitives

Source§

type Evm = <T as RpcConvert>::Evm

Source§

type Network = <T as RpcConvert>::Network

Source§

type Error = <T as RpcConvert>::Error

Source§

fn fill_pending( &self, tx: Recovered<<<&'a T as RpcConvert>::Primitives as NodePrimitives>::SignedTx>, ) -> Result<<<&'a T as RpcConvert>::Network as RpcTypes>::TransactionResponse, <&'a T as RpcConvert>::Error>

Source§

fn fill( &self, tx: Recovered<<<&'a T as RpcConvert>::Primitives as NodePrimitives>::SignedTx>, tx_info: TransactionInfo, ) -> Result<<<&'a T as RpcConvert>::Network as RpcTypes>::TransactionResponse, <&'a T as RpcConvert>::Error>

Source§

fn build_simulate_v1_transaction( &self, request: <<&'a T as RpcConvert>::Network as RpcTypes>::TransactionRequest, ) -> Result<<<&'a T as RpcConvert>::Primitives as NodePrimitives>::SignedTx, <&'a T as RpcConvert>::Error>

Source§

fn tx_env( &self, request: <<&'a T as RpcConvert>::Network as RpcTypes>::TransactionRequest, evm_env: &EvmEnv<<<<<&'a T as RpcConvert>::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Spec, <<<<&'a T as RpcConvert>::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::BlockEnv>, ) -> Result<<<<<&'a T as RpcConvert>::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Tx, <&'a T as RpcConvert>::Error>

Source§

fn convert_receipts( &self, receipts: Vec<ConvertReceiptInput<'_, <&'a T as RpcConvert>::Primitives>>, ) -> Result<Vec<<<&'a T as RpcConvert>::Network as RpcTypes>::Receipt>, <&'a T as RpcConvert>::Error>

Source§

fn convert_receipts_with_block( &self, receipts: Vec<ConvertReceiptInput<'_, <&'a T as RpcConvert>::Primitives>>, block: &SealedBlock<<<&'a T as RpcConvert>::Primitives as NodePrimitives>::Block>, ) -> Result<Vec<<<&'a T as RpcConvert>::Network as RpcTypes>::Receipt>, <&'a T as RpcConvert>::Error>

Source§

fn convert_header( &self, header: SealedHeader<<<&'a T as RpcConvert>::Primitives as NodePrimitives>::BlockHeader>, block_size: usize, ) -> Result<<<&'a T as RpcConvert>::Network as RpcTypes>::Header, <&'a T as RpcConvert>::Error>

Source§

impl<T> RpcConvert for Box<T>
where T: RpcConvert + ?Sized, Box<T>: Send + Sync + Unpin + Debug + DynClone + 'static,

Source§

type Primitives = <T as RpcConvert>::Primitives

Source§

type Evm = <T as RpcConvert>::Evm

Source§

type Network = <T as RpcConvert>::Network

Source§

type Error = <T as RpcConvert>::Error

Source§

fn fill_pending( &self, tx: Recovered<<<Box<T> as RpcConvert>::Primitives as NodePrimitives>::SignedTx>, ) -> Result<<<Box<T> as RpcConvert>::Network as RpcTypes>::TransactionResponse, <Box<T> as RpcConvert>::Error>

Source§

fn fill( &self, tx: Recovered<<<Box<T> as RpcConvert>::Primitives as NodePrimitives>::SignedTx>, tx_info: TransactionInfo, ) -> Result<<<Box<T> as RpcConvert>::Network as RpcTypes>::TransactionResponse, <Box<T> as RpcConvert>::Error>

Source§

fn build_simulate_v1_transaction( &self, request: <<Box<T> as RpcConvert>::Network as RpcTypes>::TransactionRequest, ) -> Result<<<Box<T> as RpcConvert>::Primitives as NodePrimitives>::SignedTx, <Box<T> as RpcConvert>::Error>

Source§

fn tx_env( &self, request: <<Box<T> as RpcConvert>::Network as RpcTypes>::TransactionRequest, evm_env: &EvmEnv<<<<<Box<T> as RpcConvert>::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Spec, <<<<Box<T> as RpcConvert>::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::BlockEnv>, ) -> Result<<<<<Box<T> as RpcConvert>::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Tx, <Box<T> as RpcConvert>::Error>

Source§

fn convert_receipts( &self, receipts: Vec<ConvertReceiptInput<'_, <Box<T> as RpcConvert>::Primitives>>, ) -> Result<Vec<<<Box<T> as RpcConvert>::Network as RpcTypes>::Receipt>, <Box<T> as RpcConvert>::Error>

Source§

fn convert_receipts_with_block( &self, receipts: Vec<ConvertReceiptInput<'_, <Box<T> as RpcConvert>::Primitives>>, block: &SealedBlock<<<Box<T> as RpcConvert>::Primitives as NodePrimitives>::Block>, ) -> Result<Vec<<<Box<T> as RpcConvert>::Network as RpcTypes>::Receipt>, <Box<T> as RpcConvert>::Error>

Source§

fn convert_header( &self, header: SealedHeader<<<Box<T> as RpcConvert>::Primitives as NodePrimitives>::BlockHeader>, block_size: usize, ) -> Result<<<Box<T> as RpcConvert>::Network as RpcTypes>::Header, <Box<T> as RpcConvert>::Error>

Source§

impl<T> RpcConvert for Arc<T>
where T: RpcConvert + ?Sized, Arc<T>: Send + Sync + Unpin + Debug + DynClone + 'static,

Source§

type Primitives = <T as RpcConvert>::Primitives

Source§

type Evm = <T as RpcConvert>::Evm

Source§

type Network = <T as RpcConvert>::Network

Source§

type Error = <T as RpcConvert>::Error

Source§

fn fill_pending( &self, tx: Recovered<<<Arc<T> as RpcConvert>::Primitives as NodePrimitives>::SignedTx>, ) -> Result<<<Arc<T> as RpcConvert>::Network as RpcTypes>::TransactionResponse, <Arc<T> as RpcConvert>::Error>

Source§

fn fill( &self, tx: Recovered<<<Arc<T> as RpcConvert>::Primitives as NodePrimitives>::SignedTx>, tx_info: TransactionInfo, ) -> Result<<<Arc<T> as RpcConvert>::Network as RpcTypes>::TransactionResponse, <Arc<T> as RpcConvert>::Error>

Source§

fn build_simulate_v1_transaction( &self, request: <<Arc<T> as RpcConvert>::Network as RpcTypes>::TransactionRequest, ) -> Result<<<Arc<T> as RpcConvert>::Primitives as NodePrimitives>::SignedTx, <Arc<T> as RpcConvert>::Error>

Source§

fn tx_env( &self, request: <<Arc<T> as RpcConvert>::Network as RpcTypes>::TransactionRequest, evm_env: &EvmEnv<<<<<Arc<T> as RpcConvert>::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Spec, <<<<Arc<T> as RpcConvert>::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::BlockEnv>, ) -> Result<<<<<Arc<T> as RpcConvert>::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Tx, <Arc<T> as RpcConvert>::Error>

Source§

fn convert_receipts( &self, receipts: Vec<ConvertReceiptInput<'_, <Arc<T> as RpcConvert>::Primitives>>, ) -> Result<Vec<<<Arc<T> as RpcConvert>::Network as RpcTypes>::Receipt>, <Arc<T> as RpcConvert>::Error>

Source§

fn convert_receipts_with_block( &self, receipts: Vec<ConvertReceiptInput<'_, <Arc<T> as RpcConvert>::Primitives>>, block: &SealedBlock<<<Arc<T> as RpcConvert>::Primitives as NodePrimitives>::Block>, ) -> Result<Vec<<<Arc<T> as RpcConvert>::Network as RpcTypes>::Receipt>, <Arc<T> as RpcConvert>::Error>

Source§

fn convert_header( &self, header: SealedHeader<<<Arc<T> as RpcConvert>::Primitives as NodePrimitives>::BlockHeader>, block_size: usize, ) -> Result<<<Arc<T> as RpcConvert>::Network as RpcTypes>::Header, <Arc<T> as RpcConvert>::Error>

Implementors§

Source§

impl<N, Network, Evm, Receipt, Header, Map, SimTx, RpcTx, TxEnv> RpcConvert for RpcConverter<Network, Evm, Receipt, Header, Map, SimTx, RpcTx, TxEnv>
where N: NodePrimitives, Network: RpcTypes, <Network as RpcTypes>::TransactionRequest: SignableTxRequest<<N as NodePrimitives>::SignedTx>, Evm: ConfigureEvm<Primitives = N> + 'static, Receipt: ReceiptConverter<N, RpcReceipt = <Network as RpcTypes>::Receipt> + Send + Sync + Unpin + Clone + Debug, <Receipt as ReceiptConverter<N>>::Error: From<TransactionConversionError> + From<<TxEnv as TxEnvConverter<<Network as RpcTypes>::TransactionRequest, Evm>>::Error> + From<<Map as TxInfoMapper<<N as NodePrimitives>::SignedTx>>::Err> + From<<RpcTx as RpcTxConverter<<N as NodePrimitives>::SignedTx, <Network as RpcTypes>::TransactionResponse, <Map as TxInfoMapper<<N as NodePrimitives>::SignedTx>>::Out>>::Err> + From<<Header as HeaderConverter<<N as NodePrimitives>::BlockHeader, <Network as RpcTypes>::Header>>::Err> + Error + Unpin + Sync + Send + Into<ErrorObject<'static>>, Header: HeaderConverter<<N as NodePrimitives>::BlockHeader, <Network as RpcTypes>::Header>, Map: TxInfoMapper<<N as NodePrimitives>::SignedTx> + Clone + Debug + Unpin + Send + Sync + 'static, SimTx: SimTxConverter<<Network as RpcTypes>::TransactionRequest, <N as NodePrimitives>::SignedTx>, RpcTx: RpcTxConverter<<N as NodePrimitives>::SignedTx, <Network as RpcTypes>::TransactionResponse, <Map as TxInfoMapper<<N as NodePrimitives>::SignedTx>>::Out>, TxEnv: TxEnvConverter<<Network as RpcTypes>::TransactionRequest, Evm>,

Source§

type Primitives = N

Source§

type Evm = Evm

Source§

type Network = Network

Source§

type Error = <Receipt as ReceiptConverter<N>>::Error