pallet-mmr: RPC and Runtime APIs work with block numbers (#6072)

* pallet-mmr: RPC API works with block numbers

* small fix

* update

* change types

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>
This commit is contained in:
Sergej Sakac
2022-10-13 13:04:00 +02:00
committed by GitHub
parent 17730b85be
commit 0cc0867c45
8 changed files with 274 additions and 210 deletions
+239 -179
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -128,7 +128,7 @@ pub trait RuntimeApiCollection:
+ ParachainHost<Block> + ParachainHost<Block>
+ sp_block_builder::BlockBuilder<Block> + sp_block_builder::BlockBuilder<Block>
+ frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Nonce> + frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Nonce>
+ sp_mmr_primitives::MmrApi<Block, <Block as BlockT>::Hash> + sp_mmr_primitives::MmrApi<Block, <Block as BlockT>::Hash, BlockNumber>
+ pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance> + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
+ sp_api::Metadata<Block> + sp_api::Metadata<Block>
+ sp_offchain::OffchainWorkerApi<Block> + sp_offchain::OffchainWorkerApi<Block>
@@ -149,7 +149,7 @@ where
+ ParachainHost<Block> + ParachainHost<Block>
+ sp_block_builder::BlockBuilder<Block> + sp_block_builder::BlockBuilder<Block>
+ frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Nonce> + frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Nonce>
+ sp_mmr_primitives::MmrApi<Block, <Block as BlockT>::Hash> + sp_mmr_primitives::MmrApi<Block, <Block as BlockT>::Hash, BlockNumber>
+ pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance> + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>
+ sp_api::Metadata<Block> + sp_api::Metadata<Block>
+ sp_offchain::OffchainWorkerApi<Block> + sp_offchain::OffchainWorkerApi<Block>
+5 -1
View File
@@ -108,7 +108,11 @@ where
+ Sync + Sync
+ 'static, + 'static,
C::Api: frame_rpc_system::AccountNonceApi<Block, AccountId, Nonce>, C::Api: frame_rpc_system::AccountNonceApi<Block, AccountId, Nonce>,
C::Api: pallet_mmr_rpc::MmrRuntimeApi<Block, <Block as sp_runtime::traits::Block>::Hash>, C::Api: pallet_mmr_rpc::MmrRuntimeApi<
Block,
<Block as sp_runtime::traits::Block>::Hash,
BlockNumber,
>,
C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi<Block, Balance>, C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi<Block, Balance>,
C::Api: BabeApi<Block>, C::Api: BabeApi<Block>,
C::Api: BlockBuilder<Block>, C::Api: BlockBuilder<Block>,
+5 -5
View File
@@ -1714,8 +1714,8 @@ sp_api::impl_runtime_apis! {
} }
} }
impl mmr::MmrApi<Block, Hash> for Runtime { impl mmr::MmrApi<Block, Hash, BlockNumber> for Runtime {
fn generate_proof(_leaf_index: u64) fn generate_proof(_block_number: BlockNumber)
-> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof<Hash>), mmr::Error> -> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof<Hash>), mmr::Error>
{ {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
@@ -1739,15 +1739,15 @@ sp_api::impl_runtime_apis! {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
} }
fn generate_batch_proof(_leaf_indices: Vec<u64>) fn generate_batch_proof(_block_numbers: Vec<BlockNumber>)
-> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error>
{ {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
} }
fn generate_historical_batch_proof( fn generate_historical_batch_proof(
_leaf_indices: Vec<u64>, _block_numbers: Vec<BlockNumber>,
_leaves_count: u64, _best_known_block_number: BlockNumber,
) -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> { ) -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
} }
+5 -5
View File
@@ -1807,8 +1807,8 @@ sp_api::impl_runtime_apis! {
} }
} }
impl mmr::MmrApi<Block, Hash> for Runtime { impl mmr::MmrApi<Block, Hash, BlockNumber> for Runtime {
fn generate_proof(_leaf_index: u64) fn generate_proof(_block_number: BlockNumber)
-> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof<Hash>), mmr::Error> -> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof<Hash>), mmr::Error>
{ {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
@@ -1832,15 +1832,15 @@ sp_api::impl_runtime_apis! {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
} }
fn generate_batch_proof(_leaf_indices: Vec<u64>) fn generate_batch_proof(_block_numbers: Vec<BlockNumber>)
-> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error>
{ {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
} }
fn generate_historical_batch_proof( fn generate_historical_batch_proof(
_leaf_indices: Vec<u64>, _block_numbers: Vec<BlockNumber>,
_leaves_count: u64, _best_known_block_number: BlockNumber,
) -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> { ) -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
} }
+8 -8
View File
@@ -1690,11 +1690,11 @@ sp_api::impl_runtime_apis! {
} }
} }
impl mmr::MmrApi<Block, Hash> for Runtime { impl mmr::MmrApi<Block, Hash, BlockNumber> for Runtime {
fn generate_proof(leaf_index: u64) fn generate_proof(block_number: BlockNumber)
-> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof<Hash>), mmr::Error> -> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof<Hash>), mmr::Error>
{ {
Mmr::generate_batch_proof(vec![leaf_index]) Mmr::generate_batch_proof(vec![block_number])
.and_then(|(leaves, proof)| Ok(( .and_then(|(leaves, proof)| Ok((
mmr::EncodableOpaqueLeaf::from_leaf(&leaves[0]), mmr::EncodableOpaqueLeaf::from_leaf(&leaves[0]),
mmr::BatchProof::into_single_leaf_proof(proof)? mmr::BatchProof::into_single_leaf_proof(proof)?
@@ -1725,18 +1725,18 @@ sp_api::impl_runtime_apis! {
Ok(Mmr::mmr_root()) Ok(Mmr::mmr_root())
} }
fn generate_batch_proof(leaf_indices: Vec<mmr::LeafIndex>) fn generate_batch_proof(block_numbers: Vec<BlockNumber>)
-> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error>
{ {
Mmr::generate_batch_proof(leaf_indices) Mmr::generate_batch_proof(block_numbers)
.map(|(leaves, proof)| (leaves.into_iter().map(|leaf| mmr::EncodableOpaqueLeaf::from_leaf(&leaf)).collect(), proof)) .map(|(leaves, proof)| (leaves.into_iter().map(|leaf| mmr::EncodableOpaqueLeaf::from_leaf(&leaf)).collect(), proof))
} }
fn generate_historical_batch_proof( fn generate_historical_batch_proof(
leaf_indices: Vec<mmr::LeafIndex>, block_numbers: Vec<BlockNumber>,
leaves_count: mmr::LeafIndex, best_known_block_number: BlockNumber,
) -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> { ) -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> {
Mmr::generate_historical_batch_proof(leaf_indices, leaves_count).map( Mmr::generate_historical_batch_proof(block_numbers, best_known_block_number).map(
|(leaves, proof)| { |(leaves, proof)| {
( (
leaves leaves
+5 -5
View File
@@ -919,8 +919,8 @@ sp_api::impl_runtime_apis! {
} }
} }
impl mmr::MmrApi<Block, Hash> for Runtime { impl mmr::MmrApi<Block, Hash, BlockNumber> for Runtime {
fn generate_proof(_leaf_index: u64) fn generate_proof(_block_number: BlockNumber)
-> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof<Hash>), mmr::Error> -> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof<Hash>), mmr::Error>
{ {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
@@ -944,15 +944,15 @@ sp_api::impl_runtime_apis! {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
} }
fn generate_batch_proof(_leaf_indices: Vec<u64>) fn generate_batch_proof(_block_numbers: Vec<BlockNumber>)
-> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error>
{ {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
} }
fn generate_historical_batch_proof( fn generate_historical_batch_proof(
_leaf_indices: Vec<u64>, _block_numbers: Vec<BlockNumber>,
_leaves_count: u64, _best_known_block_number: BlockNumber,
) -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> { ) -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
} }
+5 -5
View File
@@ -1448,8 +1448,8 @@ sp_api::impl_runtime_apis! {
} }
} }
impl mmr::MmrApi<Block, Hash> for Runtime { impl mmr::MmrApi<Block, Hash, BlockNumber> for Runtime {
fn generate_proof(_leaf_index: u64) fn generate_proof(_block_number: BlockNumber)
-> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof<Hash>), mmr::Error> -> Result<(mmr::EncodableOpaqueLeaf, mmr::Proof<Hash>), mmr::Error>
{ {
@@ -1477,15 +1477,15 @@ sp_api::impl_runtime_apis! {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
} }
fn generate_batch_proof(_leaf_indices: Vec<u64>) fn generate_batch_proof(_block_numbers: Vec<BlockNumber>)
-> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error>
{ {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
} }
fn generate_historical_batch_proof( fn generate_historical_batch_proof(
_leaf_indices: Vec<u64>, _block_numbers: Vec<BlockNumber>,
_leaves_count: u64, _best_known_block_number: BlockNumber,
) -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> { ) -> Result<(Vec<mmr::EncodableOpaqueLeaf>, mmr::BatchProof<Hash>), mmr::Error> {
Err(mmr::Error::PalletNotIncluded) Err(mmr::Error::PalletNotIncluded)
} }