referrerpolicy=no-referrer-when-downgrade
mmr_rpc

Trait 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.

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.

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,