pub trait ChainApi: Send + Sync {
type Block: BlockT;
type Error: From<Error> + IntoPoolError;
// Required methods
fn validate_transaction<'life0, 'async_trait>(
&'life0 self,
at: <Self::Block as BlockT>::Hash,
source: TransactionSource,
uxt: Arc<<<Self as ChainApi>::Block as Block>::Extrinsic>,
validation_priority: ValidateTransactionPriority,
) -> Pin<Box<dyn Future<Output = Result<TransactionValidity, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn validate_transaction_blocking(
&self,
at: <Self::Block as BlockT>::Hash,
source: TransactionSource,
uxt: Arc<<<Self as ChainApi>::Block as Block>::Extrinsic>,
) -> Result<TransactionValidity, Self::Error>;
fn block_id_to_number(
&self,
at: &BlockId<Self::Block>,
) -> Result<Option<NumberFor<<Self as ChainApi>::Block>>, Self::Error>;
fn block_id_to_hash(
&self,
at: &BlockId<Self::Block>,
) -> Result<Option<<Self::Block as BlockT>::Hash>, Self::Error>;
fn hash_and_length(
&self,
uxt: &<<Self as ChainApi>::Block as Block>::Extrinsic,
) -> (<<Self as ChainApi>::Block as Block>::Hash, usize);
fn block_body<'life0, 'async_trait>(
&'life0 self,
at: <Self::Block as BlockT>::Hash,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<<Self::Block as Block>::Extrinsic>>, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn block_header(
&self,
at: <Self::Block as BlockT>::Hash,
) -> Result<Option<<Self::Block as BlockT>::Header>, Self::Error>;
fn tree_route(
&self,
from: <Self::Block as BlockT>::Hash,
to: <Self::Block as BlockT>::Hash,
) -> Result<TreeRoute<Self::Block>, Self::Error>;
// Provided method
fn resolve_block_number(
&self,
at: <Self::Block as BlockT>::Hash,
) -> Result<NumberFor<<Self as ChainApi>::Block>, Self::Error> { ... }
}
Expand description
Concrete extrinsic validation and query logic.
Required Associated Types§
Required Methods§
Sourcefn validate_transaction<'life0, 'async_trait>(
&'life0 self,
at: <Self::Block as BlockT>::Hash,
source: TransactionSource,
uxt: Arc<<<Self as ChainApi>::Block as Block>::Extrinsic>,
validation_priority: ValidateTransactionPriority,
) -> Pin<Box<dyn Future<Output = Result<TransactionValidity, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn validate_transaction<'life0, 'async_trait>(
&'life0 self,
at: <Self::Block as BlockT>::Hash,
source: TransactionSource,
uxt: Arc<<<Self as ChainApi>::Block as Block>::Extrinsic>,
validation_priority: ValidateTransactionPriority,
) -> Pin<Box<dyn Future<Output = Result<TransactionValidity, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Asynchronously verify extrinsic at given block.
Sourcefn validate_transaction_blocking(
&self,
at: <Self::Block as BlockT>::Hash,
source: TransactionSource,
uxt: Arc<<<Self as ChainApi>::Block as Block>::Extrinsic>,
) -> Result<TransactionValidity, Self::Error>
fn validate_transaction_blocking( &self, at: <Self::Block as BlockT>::Hash, source: TransactionSource, uxt: Arc<<<Self as ChainApi>::Block as Block>::Extrinsic>, ) -> Result<TransactionValidity, Self::Error>
Synchronously verify given extrinsic at given block.
Validates a transaction by calling into the runtime. Same as validate_transaction
but
blocks the current thread when performing validation.
Sourcefn block_id_to_number(
&self,
at: &BlockId<Self::Block>,
) -> Result<Option<NumberFor<<Self as ChainApi>::Block>>, Self::Error>
fn block_id_to_number( &self, at: &BlockId<Self::Block>, ) -> Result<Option<NumberFor<<Self as ChainApi>::Block>>, Self::Error>
Returns a block number given the block id.
Sourcefn block_id_to_hash(
&self,
at: &BlockId<Self::Block>,
) -> Result<Option<<Self::Block as BlockT>::Hash>, Self::Error>
fn block_id_to_hash( &self, at: &BlockId<Self::Block>, ) -> Result<Option<<Self::Block as BlockT>::Hash>, Self::Error>
Returns a block hash given the block id.
Sourcefn hash_and_length(
&self,
uxt: &<<Self as ChainApi>::Block as Block>::Extrinsic,
) -> (<<Self as ChainApi>::Block as Block>::Hash, usize)
fn hash_and_length( &self, uxt: &<<Self as ChainApi>::Block as Block>::Extrinsic, ) -> (<<Self as ChainApi>::Block as Block>::Hash, usize)
Returns hash and encoding length of the extrinsic.
Sourcefn block_body<'life0, 'async_trait>(
&'life0 self,
at: <Self::Block as BlockT>::Hash,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<<Self::Block as Block>::Extrinsic>>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn block_body<'life0, 'async_trait>(
&'life0 self,
at: <Self::Block as BlockT>::Hash,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<<Self::Block as Block>::Extrinsic>>, Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Returns a block body given the block.