Trait mmr_rpc::MmrApiClient

source ·
pub trait MmrApiClient<BlockHash, BlockNumber, MmrHash>: ClientT
where BlockHash: Send + Sync + 'static + Serialize + DeserializeOwned, BlockNumber: Send + Sync + 'static + Serialize, MmrHash: Send + Sync + 'static + Serialize + DeserializeOwned,
{ // Provided methods fn mmr_root<'life0, 'async_trait>( &'life0 self, at: Option<BlockHash> ) -> Pin<Box<dyn Future<Output = Result<MmrHash, Error>> + Send + 'async_trait>> where Self: Sync + 'async_trait, 'life0: 'async_trait { ... } fn generate_proof<'life0, 'async_trait>( &'life0 self, block_numbers: Vec<BlockNumber>, best_known_block_number: Option<BlockNumber>, at: Option<BlockHash> ) -> Pin<Box<dyn Future<Output = Result<LeavesProof<BlockHash>, Error>> + Send + 'async_trait>> where Self: Sync + 'async_trait, 'life0: 'async_trait { ... } fn verify_proof<'life0, 'async_trait>( &'life0 self, proof: LeavesProof<BlockHash> ) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>> where Self: Sync + 'async_trait, 'life0: 'async_trait { ... } fn verify_proof_stateless<'life0, 'async_trait>( &'life0 self, mmr_root: MmrHash, proof: LeavesProof<BlockHash> ) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>> where Self: Sync + 'async_trait, 'life0: 'async_trait { ... } }
Expand description

Client implementation for the MmrApi RPC API.

Provided Methods§

source

fn mmr_root<'life0, 'async_trait>( &'life0 self, at: Option<BlockHash> ) -> Pin<Box<dyn Future<Output = Result<MmrHash, Error>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'life0: 'async_trait,

Get the MMR root hash for the current best block.

source

fn generate_proof<'life0, 'async_trait>( &'life0 self, block_numbers: Vec<BlockNumber>, best_known_block_number: Option<BlockNumber>, at: Option<BlockHash> ) -> Pin<Box<dyn Future<Output = Result<LeavesProof<BlockHash>, Error>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'life0: 'async_trait,

Generate an MMR proof for the given block_numbers.

This method calls into a runtime with MMR pallet included and attempts to generate an MMR proof for the set of blocks that have the given block_numbers with the MMR root at best_known_block_number. best_known_block_number must be larger than all the block_numbers for the function to succeed.

Optionally via at, a block hash at which the runtime should be queried can be specified. Optionally via best_known_block_number, the proof can be generated using the MMR’s state at a specific best block. Note that if best_known_block_number is provided, then also specifying the block hash via at isn’t super-useful here, unless you’re generating proof using non-finalized blocks where there are several competing forks. That’s because MMR state will be fixed to the state with best_known_block_number, which already points to some historical block.

Returns the (full) leaves and a proof for these leaves (compact encoding, i.e. hash of the leaves). Both parameters are SCALE-encoded. The order of entries in the leaves field of the returned struct is the same as the order of the entries in block_numbers supplied

source

fn verify_proof<'life0, 'async_trait>( &'life0 self, proof: LeavesProof<BlockHash> ) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'life0: 'async_trait,

Verify an MMR proof.

This method calls into a runtime with MMR pallet included and attempts to verify an MMR proof.

Returns true if the proof is valid, else returns the verification error.

source

fn verify_proof_stateless<'life0, 'async_trait>( &'life0 self, mmr_root: MmrHash, proof: LeavesProof<BlockHash> ) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'life0: 'async_trait,

Verify an MMR proof statelessly given an mmr_root.

This method calls into a runtime with MMR pallet included and attempts to verify an MMR proof against a provided MMR root.

Returns true if the proof is valid, else returns the verification error.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<TypeJsonRpseeInteral, BlockHash, BlockNumber, MmrHash> MmrApiClient<BlockHash, BlockNumber, MmrHash> for TypeJsonRpseeInteral
where TypeJsonRpseeInteral: ClientT, BlockHash: Send + Sync + 'static + Serialize + DeserializeOwned, BlockNumber: Send + Sync + 'static + Serialize, MmrHash: Send + Sync + 'static + Serialize + DeserializeOwned,