Trait RpcNodeCore
pub trait RpcNodeCore:
Clone
+ Send
+ Sync
+ Unpin
+ 'static {
type Primitives: NodePrimitives;
type Provider: BlockReaderIdExt<Block = <Self::Primitives as NodePrimitives>::Block, Receipt = <Self::Primitives as NodePrimitives>::Receipt, Header = <Self::Primitives as NodePrimitives>::BlockHeader, Transaction = <Self::Primitives as NodePrimitives>::SignedTx> + ChainSpecProvider + StateProviderFactory + CanonStateSubscriptions<Primitives = Self::Primitives> + StageCheckpointReader + Send + Sync + Clone + Unpin + 'static
where <Self::Provider as ChainSpecProvider>::ChainSpec: EthChainSpec<Header = <Self::Primitives as NodePrimitives>::BlockHeader> + Hardforks + EthereumHardforks;
type Pool: TransactionPool
where <Self::Pool as TransactionPool>::Transaction: PoolTransaction<Consensus = <Self::Primitives as NodePrimitives>::SignedTx>;
type Evm: ConfigureEvm<Primitives = Self::Primitives> + Send + Sync + 'static;
type Network: NetworkInfo + Clone;
// Required methods
fn pool(&self) -> &Self::Pool;
fn evm_config(&self) -> &Self::Evm;
fn network(&self) -> &Self::Network;
fn provider(&self) -> &Self::Provider;
}
Expand description
Helper trait that provides the same interface as [FullNodeComponents
] but without requiring
implementation of trait bounds.
This trait is structurally equivalent to [FullNodeComponents
], exposing the same associated
types and methods. However, it doesn’t enforce the trait bounds required by
[FullNodeComponents
]. This makes it useful for RPC types that need access to node components
where the full trait bounds of the components are not necessary.
Every type that is a [FullNodeComponents
] also implements this trait.
Required Associated Types§
type Primitives: NodePrimitives
type Primitives: NodePrimitives
Blockchain data primitives.
type Provider: BlockReaderIdExt<Block = <Self::Primitives as NodePrimitives>::Block, Receipt = <Self::Primitives as NodePrimitives>::Receipt, Header = <Self::Primitives as NodePrimitives>::BlockHeader, Transaction = <Self::Primitives as NodePrimitives>::SignedTx> + ChainSpecProvider + StateProviderFactory + CanonStateSubscriptions<Primitives = Self::Primitives> + StageCheckpointReader + Send + Sync + Clone + Unpin + 'static
where
<Self::Provider as ChainSpecProvider>::ChainSpec: EthChainSpec<Header = <Self::Primitives as NodePrimitives>::BlockHeader> + Hardforks + EthereumHardforks
type Provider: BlockReaderIdExt<Block = <Self::Primitives as NodePrimitives>::Block, Receipt = <Self::Primitives as NodePrimitives>::Receipt, Header = <Self::Primitives as NodePrimitives>::BlockHeader, Transaction = <Self::Primitives as NodePrimitives>::SignedTx> + ChainSpecProvider + StateProviderFactory + CanonStateSubscriptions<Primitives = Self::Primitives> + StageCheckpointReader + Send + Sync + Clone + Unpin + 'static where <Self::Provider as ChainSpecProvider>::ChainSpec: EthChainSpec<Header = <Self::Primitives as NodePrimitives>::BlockHeader> + Hardforks + EthereumHardforks
The provider type used to interact with the node.
type Pool: TransactionPool
where
<Self::Pool as TransactionPool>::Transaction: PoolTransaction<Consensus = <Self::Primitives as NodePrimitives>::SignedTx>
type Pool: TransactionPool where <Self::Pool as TransactionPool>::Transaction: PoolTransaction<Consensus = <Self::Primitives as NodePrimitives>::SignedTx>
The transaction pool of the node.
type Evm: ConfigureEvm<Primitives = Self::Primitives> + Send + Sync + 'static
type Evm: ConfigureEvm<Primitives = Self::Primitives> + Send + Sync + 'static
The node’s EVM configuration, defining settings for the Ethereum Virtual Machine.
Required Methods§
fn evm_config(&self) -> &Self::Evm
fn evm_config(&self) -> &Self::Evm
Returns the node’s evm config.
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.