diff --git a/polkadot/runtime/rococo/src/lib.rs b/polkadot/runtime/rococo/src/lib.rs index c91fa1948a..7614617d17 100644 --- a/polkadot/runtime/rococo/src/lib.rs +++ b/polkadot/runtime/rococo/src/lib.rs @@ -70,7 +70,6 @@ use pallet_im_online::sr25519::AuthorityId as ImOnlineId; use pallet_session::historical as session_historical; use pallet_transaction_payment::{CurrencyAdapter, FeeDetails, RuntimeDispatchInfo}; use sp_core::{ConstU128, OpaqueMetadata, H256}; -use sp_mmr_primitives as mmr; use sp_runtime::{ create_runtime_str, generic, impl_opaque_keys, traits::{ @@ -1281,6 +1280,16 @@ impl pallet_beefy::Config for Runtime { pallet_beefy::EquivocationReportSystem; } +/// MMR helper types. +mod mmr { + use super::Runtime; + pub use pallet_mmr::primitives::*; + + pub type Leaf = <::LeafData as LeafDataProvider>::LeafData; + pub type Hashing = ::Hashing; + pub type Hash = ::Output; +} + impl pallet_mmr::Config for Runtime { const INDEXING_PREFIX: &'static [u8] = mmr::INDEXING_PREFIX; type Hashing = Keccak256; @@ -1314,7 +1323,7 @@ impl BeefyDataProvider for ParasProvider { .filter_map(|id| Paras::para_head(&id).map(|head| (id.into(), head.0))) .collect(); para_heads.sort(); - binary_merkle_tree::merkle_root::<::Hashing, _>( + binary_merkle_tree::merkle_root::( para_heads.into_iter().map(|pair| pair.encode()), ) .into() @@ -1731,8 +1740,6 @@ mod benches { ); } -pub type MmrHashing = ::Hashing; - #[cfg(not(feature = "disable-runtime-api"))] sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { @@ -1972,8 +1979,8 @@ sp_api::impl_runtime_apis! { } #[api_version(2)] - impl mmr::MmrApi for Runtime { - fn mmr_root() -> Result { + impl mmr::MmrApi for Runtime { + fn mmr_root() -> Result { Ok(Mmr::mmr_root()) } @@ -1984,7 +1991,7 @@ sp_api::impl_runtime_apis! { fn generate_proof( block_numbers: Vec, best_known_block_number: Option, - ) -> Result<(Vec, mmr::Proof), mmr::Error> { + ) -> Result<(Vec, mmr::Proof), mmr::Error> { Mmr::generate_proof(block_numbers, best_known_block_number).map( |(leaves, proof)| { ( @@ -1998,24 +2005,23 @@ sp_api::impl_runtime_apis! { ) } - fn verify_proof(leaves: Vec, proof: mmr::Proof) + fn verify_proof(leaves: Vec, proof: mmr::Proof) -> Result<(), mmr::Error> { - pub type MmrLeaf = <::LeafData as mmr::LeafDataProvider>::LeafData; let leaves = leaves.into_iter().map(|leaf| leaf.into_opaque_leaf() .try_decode() - .ok_or(mmr::Error::Verify)).collect::, mmr::Error>>()?; + .ok_or(mmr::Error::Verify)).collect::, mmr::Error>>()?; Mmr::verify_leaves(leaves, proof) } fn verify_proof_stateless( - root: Hash, + root: mmr::Hash, leaves: Vec, - proof: mmr::Proof + proof: mmr::Proof ) -> Result<(), mmr::Error> { let nodes = leaves.into_iter().map(|leaf|mmr::DataOrHash::Data(leaf.into_opaque_leaf())).collect(); - pallet_mmr::verify_leaves_proof::(root, nodes, proof) + pallet_mmr::verify_leaves_proof::(root, nodes, proof) } }