diff --git a/Cargo.lock b/Cargo.lock index 6bc6c0555b31a..154dc1a859264 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9871,8 +9871,12 @@ dependencies = [ [[package]] name = "sparse-merkle-tree" -version = "0.1.0" -source = "git+https://github.com/darwinia-network/sparse-merkle-tree#bd4d99f3d4c7e7ce55f4f7df7c4af5e3f93c0315" +version = "0.3.0" +source = "git+https://github.com/darwinia-network/sparse-merkle-tree#df108f4d26bfe06f5703e93cdf5633d6ef67a56d" +dependencies = [ + "log 0.4.14", + "tiny-keccak", +] [[package]] name = "spin" diff --git a/frame/beefy-mmr/Cargo.toml b/frame/beefy-mmr/Cargo.toml index ebfb3dd5fe1c0..5589af17715c5 100644 --- a/frame/beefy-mmr/Cargo.toml +++ b/frame/beefy-mmr/Cargo.toml @@ -29,7 +29,7 @@ beefy-merkle-tree = { version = "4.0.0-dev", path = "./primitives", default-feat beefy-primitives = { version = "4.0.0-dev", path = "../../primitives/beefy", default-features = false } pallet-beefy = { version = "4.0.0-dev", path = "../beefy", default-features = false } -sparse-merkle-tree = { git = "https://github.com/darwinia-network/sparse-merkle-tree" } +sparse-merkle-tree = { git = "https://github.com/darwinia-network/sparse-merkle-tree", features = ["keccak"] } [dev-dependencies] sp-staking = { version = "4.0.0-dev", path = "../../primitives/staking" } @@ -55,4 +55,5 @@ std = [ "sp-io/std", "sp-runtime/std", "sp-std/std", + "sparse-merkle-tree/debug" ] diff --git a/frame/beefy-mmr/src/lib.rs b/frame/beefy-mmr/src/lib.rs index e6f111589a874..48ac63e4fa0e8 100644 --- a/frame/beefy-mmr/src/lib.rs +++ b/frame/beefy-mmr/src/lib.rs @@ -228,12 +228,14 @@ where .collect::>(); let len = beefy_addresses.len() as u32; // let root = beefy_merkle_tree::merkle_root::(beefy_addresses).into(); - let root = sparse_merkle_tree::SparseMerkleTree::new( - beefy_addresses, - sp_io::hashing::keccak_256, - ) - .root() - .into(); + use sparse_merkle_tree::{ + hash::{Hasher, Keccak256}, + SparseMerkleTree, + }; + let root = + SparseMerkleTree::new::<_, Keccak256>(beefy_addresses.into_iter().map(Keccak256::hash)) + .root() + .into(); let next_set = BeefyNextAuthoritySet { id, len, root }; // cache the result BeefyNextAuthorities::::put(&next_set);