Trait sp_api::ApiExt

source ·
pub trait ApiExt<Block: BlockT> {
    type StateBackend: StateBackend<HashFor<Block>>;

    // Required methods
    fn execute_in_transaction<F: FnOnce(&Self) -> TransactionOutcome<R>, R>(
        &self,
        call: F
    ) -> R
       where Self: Sized;
    fn has_api<A: RuntimeApiInfo + ?Sized>(
        &self,
        at: &BlockId<Block>
    ) -> Result<bool, ApiError>
       where Self: Sized;
    fn has_api_with<A: RuntimeApiInfo + ?Sized, P: Fn(u32) -> bool>(
        &self,
        at: &BlockId<Block>,
        pred: P
    ) -> Result<bool, ApiError>
       where Self: Sized;
    fn api_version<A: RuntimeApiInfo + ?Sized>(
        &self,
        at: &BlockId<Block>
    ) -> Result<Option<u32>, ApiError>
       where Self: Sized;
    fn record_proof(&mut self);
    fn extract_proof(&mut self) -> Option<StorageProof>;
    fn proof_recorder(&self) -> Option<ProofRecorder<Block>>;
    fn into_storage_changes(
        &self,
        backend: &Self::StateBackend,
        parent_hash: Block::Hash
    ) -> Result<StorageChanges<Self::StateBackend, Block>, String>
       where Self: Sized;
}
Expand description

Extends the runtime api implementation with some common functionality.

Required Associated Types§

source

type StateBackend: StateBackend<HashFor<Block>>

The state backend that is used to store the block states.

Required Methods§

source

fn execute_in_transaction<F: FnOnce(&Self) -> TransactionOutcome<R>, R>( &self, call: F ) -> Rwhere Self: Sized,

Execute the given closure inside a new transaction.

Depending on the outcome of the closure, the transaction is committed or rolled-back.

The internal result of the closure is returned afterwards.

source

fn has_api<A: RuntimeApiInfo + ?Sized>( &self, at: &BlockId<Block> ) -> Result<bool, ApiError>where Self: Sized,

Checks if the given api is implemented and versions match.

source

fn has_api_with<A: RuntimeApiInfo + ?Sized, P: Fn(u32) -> bool>( &self, at: &BlockId<Block>, pred: P ) -> Result<bool, ApiError>where Self: Sized,

Check if the given api is implemented and the version passes a predicate.

source

fn api_version<A: RuntimeApiInfo + ?Sized>( &self, at: &BlockId<Block> ) -> Result<Option<u32>, ApiError>where Self: Sized,

Returns the version of the given api.

source

fn record_proof(&mut self)

Start recording all accessed trie nodes for generating proofs.

source

fn extract_proof(&mut self) -> Option<StorageProof>

Extract the recorded proof.

This stops the proof recording.

If record_proof was not called before, this will return None.

source

fn proof_recorder(&self) -> Option<ProofRecorder<Block>>

Returns the current active proof recorder.

source

fn into_storage_changes( &self, backend: &Self::StateBackend, parent_hash: Block::Hash ) -> Result<StorageChanges<Self::StateBackend, Block>, String>where Self: Sized,

Convert the api object into the storage changes that were done while executing runtime api functions.

After executing this function, all collected changes are reset.

Implementors§