Rename util::hash module
The `util::hash` module provides two functions for computing a merkle root from a list/iterator of hashes. Rename the module to `merkle_root` and move it to the crate root, deprecate the original functions. Done as part of flattening the `util` module.
This commit is contained in:
parent
bbf89dd5a4
commit
22dd904735
|
@ -15,7 +15,7 @@ use core::fmt;
|
||||||
|
|
||||||
use crate::util;
|
use crate::util;
|
||||||
use crate::util::Error::{BlockBadTarget, BlockBadProofOfWork};
|
use crate::util::Error::{BlockBadTarget, BlockBadProofOfWork};
|
||||||
use crate::util::hash::bitcoin_merkle_root;
|
use crate::merkle_tree::bitcoin_merkle_root;
|
||||||
use crate::hashes::{Hash, HashEngine};
|
use crate::hashes::{Hash, HashEngine};
|
||||||
use crate::hash_types::{Wtxid, BlockHash, TxMerkleNode, WitnessMerkleNode, WitnessCommitment};
|
use crate::hash_types::{Wtxid, BlockHash, TxMerkleNode, WitnessMerkleNode, WitnessCommitment};
|
||||||
use crate::consensus::{encode, Encodable, Decodable};
|
use crate::consensus::{encode, Encodable, Decodable};
|
||||||
|
|
|
@ -92,6 +92,7 @@ pub mod blockdata;
|
||||||
pub mod consensus;
|
pub mod consensus;
|
||||||
pub mod error;
|
pub mod error;
|
||||||
pub mod hash_types;
|
pub mod hash_types;
|
||||||
|
pub mod merkle_tree;
|
||||||
pub mod policy;
|
pub mod policy;
|
||||||
pub mod pow;
|
pub mod pow;
|
||||||
pub mod sighash;
|
pub mod sighash;
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
// Written in 2014 by Andrew Poelstra <apoelstra@wpsoftware.net>
|
// Written in 2014 by Andrew Poelstra <apoelstra@wpsoftware.net>
|
||||||
// SPDX-License-Identifier: CC0-1.0
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
//! Bitcoin hash functions.
|
//! Bitcoin merkle tree functions.
|
||||||
//!
|
|
||||||
//! This module provides utility functions related to hashing data, including
|
|
||||||
//! merkleization.
|
|
||||||
//!
|
//!
|
||||||
|
|
||||||
use core::iter;
|
use core::iter;
|
||||||
|
@ -108,7 +105,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn both_merkle_root_functions_return_the_same_result() {
|
fn both_merkle_root_functions_return_the_same_result() {
|
||||||
// testnet block 000000000000045e0b1660b6445b5e5c5ab63c9a4f956be7e1e69be04fa4497b
|
// testnet block 000000000000045e0b1660b6445b5e5c5ab63c9a4f956be7e1e69be04fa4497b
|
||||||
let segwit_block = include_bytes!("../../tests/data/testnet_block_000000000000045e0b1660b6445b5e5c5ab63c9a4f956be7e1e69be04fa4497b.raw");
|
let segwit_block = include_bytes!("../tests/data/testnet_block_000000000000045e0b1660b6445b5e5c5ab63c9a4f956be7e1e69be04fa4497b.raw");
|
||||||
let block: Block = deserialize(&segwit_block[..]).expect("Failed to deserialize block");
|
let block: Block = deserialize(&segwit_block[..]).expect("Failed to deserialize block");
|
||||||
assert!(block.check_merkle_root()); // Sanity check.
|
assert!(block.check_merkle_root()); // Sanity check.
|
||||||
|
|
|
@ -528,7 +528,7 @@ mod tests {
|
||||||
use secp256k1::rand::prelude::*;
|
use secp256k1::rand::prelude::*;
|
||||||
|
|
||||||
use crate::consensus::encode::{deserialize, serialize};
|
use crate::consensus::encode::{deserialize, serialize};
|
||||||
use crate::util::hash::bitcoin_merkle_root;
|
use crate::merkle_tree::bitcoin_merkle_root;
|
||||||
use crate::util::merkleblock::{MerkleBlock, PartialMerkleTree};
|
use crate::util::merkleblock::{MerkleBlock, PartialMerkleTree};
|
||||||
use crate::Block;
|
use crate::Block;
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ pub mod ecdsa;
|
||||||
pub mod schnorr;
|
pub mod schnorr;
|
||||||
pub mod amount;
|
pub mod amount;
|
||||||
pub mod base58;
|
pub mod base58;
|
||||||
pub mod hash;
|
|
||||||
pub mod merkleblock;
|
pub mod merkleblock;
|
||||||
pub mod psbt;
|
pub mod psbt;
|
||||||
pub mod taproot;
|
pub mod taproot;
|
||||||
|
@ -95,6 +94,34 @@ pub use crate::bip32;
|
||||||
#[deprecated(since = "0.30.0", note = "Please use crate::bip158")]
|
#[deprecated(since = "0.30.0", note = "Please use crate::bip158")]
|
||||||
pub use crate::bip158;
|
pub use crate::bip158;
|
||||||
|
|
||||||
|
/// Functions from the `hash` module were renamed and moved to `../merkle_tree`.
|
||||||
|
pub mod hash {
|
||||||
|
use crate::consensus::encode::Encodable;
|
||||||
|
use crate::hashes::Hash;
|
||||||
|
use crate::io;
|
||||||
|
|
||||||
|
/// Calculates the merkle root of a list of *hashes*, inline (in place) in `hashes`.
|
||||||
|
#[deprecated(since = "0.30.0", note = "Please use crate::merkle_tree::bitcoin_merkle_root_inline")]
|
||||||
|
pub fn bitcoin_merkle_root_inline<T>(hashes: &mut [T]) -> Option<T>
|
||||||
|
where
|
||||||
|
T: Hash + Encodable,
|
||||||
|
<T as Hash>::Engine: io::Write,
|
||||||
|
{
|
||||||
|
crate::merkle_tree::bitcoin_merkle_root_inline(hashes)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Calculates the merkle root of an iterator of *hashes*.
|
||||||
|
#[deprecated(since = "0.30.0", note = "Please use crate::merkle_tree::bitcoin_merkle_root")]
|
||||||
|
pub fn bitcoin_merkle_root<T, I>(hashes: I) -> Option<T>
|
||||||
|
where
|
||||||
|
T: Hash + Encodable,
|
||||||
|
<T as Hash>::Engine: io::Write,
|
||||||
|
I: Iterator<Item=T>,
|
||||||
|
{
|
||||||
|
crate::merkle_tree::bitcoin_merkle_root(hashes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// The `misc` module was moved and re-named to `sign_message`.
|
/// The `misc` module was moved and re-named to `sign_message`.
|
||||||
pub mod misc {
|
pub mod misc {
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
|
|
Loading…
Reference in New Issue