6 Commits

Author SHA1 Message Date
jjy 09092d0039 Merge pull request #13 from nervosnetwork/release-v0.3.2
Release v0.3.2
2021-08-23 19:54:10 +08:00
jjy caa2a4fdce chore: upgrade version to v0.3.2 2021-08-23 19:47:57 +08:00
jjy f0925ef6bd fix: fix warning messages 2021-08-23 19:47:39 +08:00
jjy 13d50d12d9 Merge pull request #11 from darwinia-network/main
Public `helper`
2021-07-15 16:52:40 +08:00
Xavier Lau b16216f90e Public helper 2021-06-23 19:39:40 +08:00
jjy 9f9a95c73e Update README.md 2021-01-21 15:04:52 +08:00
5 changed files with 14 additions and 11 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "ckb-merkle-mountain-range" name = "ckb-merkle-mountain-range"
version = "0.3.1" version = "0.3.2"
authors = ["Nervos Core Dev <dev@nervos.org>"] authors = ["Nervos Core Dev <dev@nervos.org>"]
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"
+1 -1
View File
@@ -38,7 +38,7 @@ For example, we insert a leaf to the example MMR:
3. insert parent node to position `20`. 3. insert parent node to position `20`.
4. the node `20` also has a left sibling `17`, calculate parent node: `merge(mmr[17], mmr[20])`. 4. the node `20` also has a left sibling `17`, calculate parent node: `merge(mmr[17], mmr[20])`.
5. insert new node to next position `21`. 5. insert new node to next position `21`.
6. the node `20` have no left sibling, complete the insertion. 6. the node `21` have no left sibling, complete the insertion.
Example MMR after insertion of a new leaf: Example MMR after insertion of a new leaf:
+10 -8
View File
@@ -1,7 +1,7 @@
#[macro_use] #[macro_use]
extern crate criterion; extern crate criterion;
use criterion::Criterion; use criterion::{BenchmarkId, Criterion};
use bytes::Bytes; use bytes::Bytes;
use ckb_merkle_mountain_range::{util::MemStore, Error, MMRStore, Merge, Result, MMR}; use ckb_merkle_mountain_range::{util::MemStore, Error, MMRStore, Merge, Result, MMR};
@@ -53,13 +53,15 @@ fn prepare_mmr(count: u32) -> (u64, MemStore<NumberHash>, Vec<u64>) {
} }
fn bench(c: &mut Criterion) { fn bench(c: &mut Criterion) {
c.bench_function_over_inputs( {
"MMR insert", let mut group = c.benchmark_group("MMR insertion");
|b, &&size| { let inputs = [10_000, 100_000, 100_0000];
b.iter(|| prepare_mmr(size)); for input in inputs.iter() {
}, group.bench_with_input(BenchmarkId::new("times", input), &input, |b, &&size| {
&[10_000, 100_000, 100_0000], b.iter(|| prepare_mmr(size));
); });
}
}
c.bench_function("MMR gen proof", |b| { c.bench_function("MMR gen proof", |b| {
let (mmr_size, store, positions) = prepare_mmr(100_0000); let (mmr_size, store, positions) = prepare_mmr(100_0000);
+1 -1
View File
@@ -1,7 +1,7 @@
#![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(not(feature = "std"), no_std)]
mod error; mod error;
mod helper; pub mod helper;
mod merge; mod merge;
mod mmr; mod mmr;
mod mmr_store; mod mmr_store;
+1
View File
@@ -14,6 +14,7 @@ use crate::{Error, Merge, Result};
use core::fmt::Debug; use core::fmt::Debug;
use core::marker::PhantomData; use core::marker::PhantomData;
#[allow(clippy::upper_case_acronyms)]
pub struct MMR<T, M, S: MMRStore<T>> { pub struct MMR<T, M, S: MMRStore<T>> {
mmr_size: u64, mmr_size: u64,
batch: MMRBatch<T, S>, batch: MMRBatch<T, S>,