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§
sourcetype StateBackend: StateBackend<HashFor<Block>>
type StateBackend: StateBackend<HashFor<Block>>
The state backend that is used to store the block states.
Required Methods§
sourcefn execute_in_transaction<F: FnOnce(&Self) -> TransactionOutcome<R>, R>(
&self,
call: F
) -> Rwhere
Self: Sized,
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.
sourcefn has_api<A: RuntimeApiInfo + ?Sized>(
&self,
at: &BlockId<Block>
) -> Result<bool, ApiError>where
Self: Sized,
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.
sourcefn has_api_with<A: RuntimeApiInfo + ?Sized, P: Fn(u32) -> bool>(
&self,
at: &BlockId<Block>,
pred: P
) -> 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,
Check if the given api is implemented and the version passes a predicate.
sourcefn api_version<A: RuntimeApiInfo + ?Sized>(
&self,
at: &BlockId<Block>
) -> Result<Option<u32>, ApiError>where
Self: Sized,
fn api_version<A: RuntimeApiInfo + ?Sized>( &self, at: &BlockId<Block> ) -> Result<Option<u32>, ApiError>where Self: Sized,
Returns the version of the given api.
sourcefn record_proof(&mut self)
fn record_proof(&mut self)
Start recording all accessed trie nodes for generating proofs.
sourcefn extract_proof(&mut self) -> Option<StorageProof>
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
.
sourcefn proof_recorder(&self) -> Option<ProofRecorder<Block>>
fn proof_recorder(&self) -> Option<ProofRecorder<Block>>
Returns the current active proof recorder.
sourcefn into_storage_changes(
&self,
backend: &Self::StateBackend,
parent_hash: Block::Hash
) -> Result<StorageChanges<Self::StateBackend, Block>, String>where
Self: Sized,
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.