Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Commit 30d4ca9

Browse files
committed
Update merkle-tree to binary-merkle-tree and Remove Keccak256 mod from merkle-tree
1 parent 2b9030e commit 30d4ca9

File tree

6 files changed

+27
-58
lines changed

6 files changed

+27
-58
lines changed

Cargo.lock

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frame/beefy-mmr/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features =
1414
log = { version = "0.4.17", default-features = false }
1515
scale-info = { version = "2.1.1", default-features = false, features = ["derive"] }
1616
serde = { version = "1.0.136", optional = true }
17-
merkle-tree = { version = "4.0.0-dev", default-features = false, path = "../../utils/merkle-tree" }
17+
binary-merkle-tree = { version = "4.0.0-dev", default-features = false, path = "../../utils/merkle-tree" }
1818
beefy-primitives = { version = "4.0.0-dev", default-features = false, path = "../../primitives/beefy", package = "sp-beefy" }
1919
frame-support = { version = "4.0.0-dev", default-features = false, path = "../support" }
2020
frame-system = { version = "4.0.0-dev", default-features = false, path = "../system" }
@@ -35,7 +35,7 @@ sp-staking = { version = "4.0.0-dev", path = "../../primitives/staking" }
3535
default = ["std"]
3636
std = [
3737
"array-bytes",
38-
"merkle-tree/std",
38+
"binary-merkle-tree/std",
3939
"beefy-primitives/std",
4040
"codec/std",
4141
"frame-support/std",

frame/beefy-mmr/src/lib.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,10 @@ impl<T: Config> Pallet<T> {
200200
.map(T::BeefyAuthorityToMerkleLeaf::convert)
201201
.collect::<Vec<_>>();
202202
let len = beefy_addresses.len() as u32;
203-
let root =
204-
merkle_tree::merkle_root::<<T as pallet_mmr::Config>::Hashing, _>(beefy_addresses)
205-
.into();
203+
let root = binary_merkle_tree::merkle_root::<<T as pallet_mmr::Config>::Hashing, _>(
204+
beefy_addresses,
205+
)
206+
.into();
206207
BeefyAuthoritySet { id, len, root }
207208
}
208209
}

frame/beefy-mmr/src/mock.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ impl BeefyDataProvider<Vec<u8>> for DummyDataProvider {
147147
fn extra_data() -> Vec<u8> {
148148
let mut col = vec![(15, vec![1, 2, 3]), (5, vec![4, 5, 6])];
149149
col.sort();
150-
merkle_tree::merkle_root::<<Test as pallet_mmr::Config>::Hashing, _>(
150+
binary_merkle_tree::merkle_root::<<Test as pallet_mmr::Config>::Hashing, _>(
151151
col.into_iter().map(|pair| pair.encode()),
152152
)
153153
.as_ref()

utils/merkle-tree/Cargo.toml

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[package]
2-
name = "merkle-tree"
2+
name = "binary-merkle-tree"
33
version = "4.0.0-dev"
44
authors = ["Parity Technologies <[email protected]>"]
55
edition = "2021"
@@ -11,18 +11,15 @@ homepage = "https://substrate.io"
1111
[dependencies]
1212
array-bytes = { version = "4.1", optional = true }
1313
log = { version = "0.4", default-features = false, optional = true }
14-
tiny-keccak = { version = "2.0.2", features = ["keccak"] }
1514
hash-db = { version = "0.15.2", default-features = false }
16-
hash256-std-hasher = { version = "0.15.2", default-features = false }
1715

1816
[dev-dependencies]
1917
array-bytes = "4.1"
2018
env_logger = "0.9"
19+
sp-core = { version = "7.0.0", path = "../../primitives/core" }
20+
sp-runtime = { version = "7.0.0", path = "../../primitives/runtime" }
2121

2222
[features]
2323
debug = ["array-bytes", "log"]
2424
default = ["debug", "std"]
25-
std = [
26-
"hash-db/std",
27-
"hash256-std-hasher/std",
28-
]
25+
std = []

utils/merkle-tree/src/lib.rs

Lines changed: 3 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -37,39 +37,8 @@ use alloc::vec;
3737
#[cfg(not(feature = "std"))]
3838
use alloc::vec::Vec;
3939

40-
/// Supported hashing output size.
41-
///
42-
/// The size is restricted to 32 bytes to allow for a more optimised implementation.
43-
pub type Hash = [u8; 32];
4440
use hash_db::Hasher;
4541

46-
mod keccak256 {
47-
use tiny_keccak::{Hasher as _, Keccak};
48-
/// Keccak256 hasher implementation.
49-
pub struct Keccak256;
50-
impl Keccak256 {
51-
/// Hash given data.
52-
pub fn hash(data: &[u8]) -> super::Hash {
53-
<Keccak256 as super::Hasher>::hash(data)
54-
}
55-
}
56-
57-
impl super::Hasher for Keccak256 {
58-
type Out = super::Hash;
59-
type StdHasher = hash256_std_hasher::Hash256StdHasher;
60-
const LENGTH: usize = 32;
61-
62-
fn hash(data: &[u8]) -> super::Hash {
63-
let mut keccak = Keccak::v256();
64-
keccak.update(data);
65-
let mut output = [0_u8; 32];
66-
keccak.finalize(&mut output);
67-
output
68-
}
69-
}
70-
}
71-
pub use keccak256::Keccak256;
72-
7342
/// Construct a root hash of a Binary Merkle Tree created from given leaves.
7443
///
7544
/// See crate-level docs for details about Merkle Tree construction.
@@ -381,6 +350,8 @@ where
381350
#[cfg(test)]
382351
mod tests {
383352
use super::*;
353+
use sp_core::H256;
354+
use sp_runtime::traits::Keccak256;
384355

385356
#[test]
386357
fn should_generate_empty_root() {
@@ -778,7 +749,7 @@ mod tests {
778749
"0xA4cDc98593CE52d01Fe5Ca47CB3dA5320e0D7592",
779750
"0xc26B34D375533fFc4c5276282Fa5D660F3d8cbcB",
780751
];
781-
let root: Hash = array_bytes::hex2array_unchecked(
752+
let root: H256 = array_bytes::hex2array_unchecked(
782753
"72b0acd7c302a84f1f6b6cefe0ba7194b7398afb440e1b44a9dbbe270394ca53",
783754
)
784755
.into();

0 commit comments

Comments
 (0)