mirror of
https://github.com/pezkuwichain/merkle-mountain-range.git
synced 2026-04-25 16:07:56 +00:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c0c9263122 | |||
| 0ab3dac108 | |||
| 25c5d823a0 | |||
| 5c70a2da40 | |||
| ac82e869e3 | |||
| 6099da18fa | |||
| ee499a9ef0 | |||
| 6e2e9450a2 |
+3
-3
@@ -1,9 +1,9 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "ckb-merkle-mountain-range"
|
name = "ckb-merkle-mountain-range"
|
||||||
version = "0.6.1"
|
version = "0.7.0"
|
||||||
authors = ["Nervos Core Dev <dev@nervos.org>"]
|
authors = ["Nervos Core Dev <dev@nervos.org>"]
|
||||||
edition = "2018"
|
edition = "2024"
|
||||||
rust-version = "1.60.0"
|
rust-version = "1.85.0"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
description = "A generalized merkle mountain range implementation"
|
description = "A generalized merkle mountain range implementation"
|
||||||
repository = "https://github.com/nervosnetwork/merkle-mountain-range"
|
repository = "https://github.com/nervosnetwork/merkle-mountain-range"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use criterion::Criterion;
|
|||||||
|
|
||||||
use ckb_merkle_mountain_range::{leaf_index_to_mmr_size, leaf_index_to_pos};
|
use ckb_merkle_mountain_range::{leaf_index_to_mmr_size, leaf_index_to_pos};
|
||||||
|
|
||||||
use rand::{thread_rng, Rng};
|
use rand::{Rng, thread_rng};
|
||||||
|
|
||||||
fn bench(c: &mut Criterion) {
|
fn bench(c: &mut Criterion) {
|
||||||
c.bench_function("left_index_to_pos", |b| {
|
c.bench_function("left_index_to_pos", |b| {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ extern crate criterion;
|
|||||||
use criterion::{BenchmarkId, Criterion};
|
use criterion::{BenchmarkId, Criterion};
|
||||||
|
|
||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
use ckb_merkle_mountain_range::{util::MemStore, Error, MMRStoreReadOps, Merge, Result, MMR};
|
use ckb_merkle_mountain_range::{Error, MMR, MMRStoreReadOps, Merge, Result, util::MemStore};
|
||||||
use rand::{seq::SliceRandom, thread_rng};
|
use rand::{seq::SliceRandom, thread_rng};
|
||||||
use std::convert::TryFrom;
|
use std::convert::TryFrom;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ pub mod util;
|
|||||||
pub use error::{Error, Result};
|
pub use error::{Error, Result};
|
||||||
pub use helper::{leaf_index_to_mmr_size, leaf_index_to_pos};
|
pub use helper::{leaf_index_to_mmr_size, leaf_index_to_pos};
|
||||||
pub use merge::Merge;
|
pub use merge::Merge;
|
||||||
pub use mmr::{MerkleProof, MMR};
|
pub use mmr::{MMR, MerkleProof};
|
||||||
pub use mmr_store::{MMRStoreReadOps, MMRStoreWriteOps};
|
pub use mmr_store::{MMRStoreReadOps, MMRStoreWriteOps};
|
||||||
|
|
||||||
cfg_if::cfg_if! {
|
cfg_if::cfg_if! {
|
||||||
|
|||||||
+2
-1
@@ -16,6 +16,7 @@ use crate::vec::Vec;
|
|||||||
use crate::{Error, Merge, Result};
|
use crate::{Error, Merge, Result};
|
||||||
use core::fmt::Debug;
|
use core::fmt::Debug;
|
||||||
use core::marker::PhantomData;
|
use core::marker::PhantomData;
|
||||||
|
use core::mem;
|
||||||
|
|
||||||
#[allow(clippy::upper_case_acronyms)]
|
#[allow(clippy::upper_case_acronyms)]
|
||||||
pub struct MMR<T, M, S> {
|
pub struct MMR<T, M, S> {
|
||||||
@@ -498,5 +499,5 @@ fn take_while_vec<T, P: Fn(&T) -> bool>(v: &mut Vec<T>, p: P) -> Vec<T> {
|
|||||||
return v.drain(..i).collect();
|
return v.drain(..i).collect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
v.drain(..).collect()
|
mem::take(v)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
use crate::{vec::Vec, Result};
|
use crate::{Result, vec::Vec};
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct MMRBatch<Elem, Store> {
|
pub struct MMRBatch<Elem, Store> {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use super::new_blake2b;
|
use super::new_blake2b;
|
||||||
use crate::{leaf_index_to_pos, util::MemStore, MMRStoreReadOps, Merge, MerkleProof, Result, MMR};
|
use crate::{MMR, MMRStoreReadOps, Merge, MerkleProof, Result, leaf_index_to_pos, util::MemStore};
|
||||||
use bytes::{Bytes, BytesMut};
|
use bytes::{Bytes, BytesMut};
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use super::{MergeNumberHash, NumberHash};
|
use super::{MergeNumberHash, NumberHash};
|
||||||
use crate::{
|
use crate::{
|
||||||
|
MMR,
|
||||||
helper::{get_peak_map, get_peaks, pos_height_in_tree},
|
helper::{get_peak_map, get_peaks, pos_height_in_tree},
|
||||||
leaf_index_to_mmr_size, leaf_index_to_pos,
|
leaf_index_to_mmr_size, leaf_index_to_pos,
|
||||||
util::MemStore,
|
util::MemStore,
|
||||||
MMR,
|
|
||||||
};
|
};
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use proptest::prelude::*;
|
use proptest::prelude::*;
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use super::{MergeNumberHash, NumberHash};
|
use super::{MergeNumberHash, NumberHash};
|
||||||
use crate::{
|
use crate::{
|
||||||
|
Error,
|
||||||
helper::pos_height_in_tree,
|
helper::pos_height_in_tree,
|
||||||
leaf_index_to_mmr_size,
|
leaf_index_to_mmr_size,
|
||||||
util::{MemMMR, MemStore},
|
util::{MemMMR, MemStore},
|
||||||
Error,
|
|
||||||
};
|
};
|
||||||
use faster_hex::hex_string;
|
use faster_hex::hex_string;
|
||||||
use proptest::prelude::*;
|
use proptest::prelude::*;
|
||||||
@@ -234,9 +234,11 @@ fn test_invalid_proof_verification(
|
|||||||
}
|
}
|
||||||
Err(Error::NodeProofsNotSupported) => {
|
Err(Error::NodeProofsNotSupported) => {
|
||||||
// if couldn't generate proof, then it contained a non-leaf
|
// if couldn't generate proof, then it contained a non-leaf
|
||||||
assert!(positions_to_verify
|
assert!(
|
||||||
.iter()
|
positions_to_verify
|
||||||
.any(|pos| pos_height_in_tree(*pos) > 0));
|
.iter()
|
||||||
|
.any(|pos| pos_height_in_tree(*pos) > 0)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
Err(e) => panic!("Unexpected error: {}", e),
|
Err(e) => panic!("Unexpected error: {}", e),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use std::fmt;
|
|||||||
use proptest::proptest;
|
use proptest::proptest;
|
||||||
use rand::{prelude::*, thread_rng};
|
use rand::{prelude::*, thread_rng};
|
||||||
|
|
||||||
use crate::{util::MemStore, Merge, Result, MMR};
|
use crate::{MMR, Merge, Result, util::MemStore};
|
||||||
|
|
||||||
#[derive(Eq, PartialEq, Clone, Default)]
|
#[derive(Eq, PartialEq, Clone, Default)]
|
||||||
struct NumberRange {
|
struct NumberRange {
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
use crate::collections::BTreeMap;
|
use crate::collections::BTreeMap;
|
||||||
use crate::{vec::Vec, MMRStoreReadOps, MMRStoreWriteOps, Result, MMR};
|
use crate::{MMR, MMRStoreReadOps, MMRStoreWriteOps, Result, vec::Vec};
|
||||||
use core::cell::RefCell;
|
use core::cell::RefCell;
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
|
|||||||
Reference in New Issue
Block a user