Merge rust-bitcoin/rust-bitcoin#1374: Move `merkleblock` into `merkle_tree`
613107298d
Move merkleblock into merkle_tree (Tobin C. Harding)c89d9c48ac
Move merkle_tree.rs to merkle_tree/mod.rs (Tobin C. Harding) Pull request description: Re-done after review comments below. This is now PR 1 in the `merkle_tree::block` series :) Move the `merkleblock` module into the `merkle_tree` module in a submodule called `block`. In order to do the minimum amount of changes in this patch DO NOT rename types to improved naming and reduce stutter. Note: - block module is private - the three types are re-exported from `merkle_block` - the `MerkleBlock` re-export from the crate root is left in place. This patch purposefully does the minimum amount of changes because there a whole bunch of improvements to the old "merkleblock" module that are coming next in a separate PR. ACKs for top commit: Kixunil: ACK613107298d
apoelstra: ACK613107298d
Tree-SHA512: 7299f605a0408372301642ac6826f7532de187b43a6d934715fc0806379b04cfd1550610428b720cb89095659c25e0f4fc8d6c842a93eafc19c091bbfcd5f35e
This commit is contained in:
commit
70eb92cc87
|
@ -128,7 +128,7 @@ pub use crate::pow::{CompactTarget, Target, Work};
|
||||||
pub use crate::amount::{Amount, Denomination, SignedAmount};
|
pub use crate::amount::{Amount, Denomination, SignedAmount};
|
||||||
pub use crate::util::ecdsa::{self, EcdsaSig, EcdsaSigError};
|
pub use crate::util::ecdsa::{self, EcdsaSig, EcdsaSigError};
|
||||||
pub use crate::util::key::{KeyPair, PrivateKey, PublicKey, XOnlyPublicKey};
|
pub use crate::util::key::{KeyPair, PrivateKey, PublicKey, XOnlyPublicKey};
|
||||||
pub use crate::util::merkleblock::MerkleBlock;
|
pub use crate::merkle_tree::MerkleBlock;
|
||||||
pub use crate::util::schnorr::{self, SchnorrSig, SchnorrSigError};
|
pub use crate::util::schnorr::{self, SchnorrSig, SchnorrSigError};
|
||||||
pub use crate::util::{psbt, Error};
|
pub use crate::util::{psbt, Error};
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ use crate::blockdata::block::{self, Block};
|
||||||
use crate::blockdata::transaction::Transaction;
|
use crate::blockdata::transaction::Transaction;
|
||||||
use crate::blockdata::constants::{MAX_BLOCK_WEIGHT, MIN_TRANSACTION_WEIGHT};
|
use crate::blockdata::constants::{MAX_BLOCK_WEIGHT, MIN_TRANSACTION_WEIGHT};
|
||||||
use crate::consensus::encode::{self, Decodable, Encodable};
|
use crate::consensus::encode::{self, Decodable, Encodable};
|
||||||
use crate::util::merkleblock::MerkleBlockError::*;
|
use crate::merkle_tree::MerkleBlockError::*;
|
||||||
|
|
||||||
/// An error when verifying the merkle block.
|
/// An error when verifying the merkle block.
|
||||||
#[derive(Clone, PartialEq, Eq, Debug)]
|
#[derive(Clone, PartialEq, Eq, Debug)]
|
||||||
|
@ -164,7 +164,7 @@ impl PartialMerkleTree {
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// use bitcoin::hash_types::Txid;
|
/// use bitcoin::hash_types::Txid;
|
||||||
/// use bitcoin::hashes::hex::FromHex;
|
/// use bitcoin::hashes::hex::FromHex;
|
||||||
/// use bitcoin::util::merkleblock::PartialMerkleTree;
|
/// use bitcoin::merkle_tree::{MerkleBlock, PartialMerkleTree};
|
||||||
///
|
///
|
||||||
/// // Block 80000
|
/// // Block 80000
|
||||||
/// let txids: Vec<Txid> = [
|
/// let txids: Vec<Txid> = [
|
||||||
|
@ -520,6 +520,8 @@ impl Decodable for MerkleBlock {
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
use core::cmp::min;
|
use core::cmp::min;
|
||||||
|
|
||||||
use crate::hashes::Hash;
|
use crate::hashes::Hash;
|
||||||
|
@ -528,7 +530,6 @@ 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::merkleblock::{MerkleBlock, PartialMerkleTree};
|
|
||||||
use crate::{merkle_tree, Block};
|
use crate::{merkle_tree, Block};
|
||||||
|
|
||||||
/// accepts `pmt_test_$num`
|
/// accepts `pmt_test_$num`
|
|
@ -14,6 +14,8 @@
|
||||||
//! let root = merkle_tree::calculate_root(tx_hashes.into_iter());
|
//! let root = merkle_tree::calculate_root(tx_hashes.into_iter());
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
|
mod block;
|
||||||
|
|
||||||
use core::iter;
|
use core::iter;
|
||||||
|
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
|
@ -24,6 +26,8 @@ use core::cmp::min;
|
||||||
use crate::hashes::Hash;
|
use crate::hashes::Hash;
|
||||||
use crate::consensus::encode::Encodable;
|
use crate::consensus::encode::Encodable;
|
||||||
|
|
||||||
|
pub use block::{MerkleBlock, PartialMerkleTree, MerkleBlockError};
|
||||||
|
|
||||||
/// Calculates the merkle root of a list of *hashes*, inline (in place) in `hashes`.
|
/// Calculates the merkle root of a list of *hashes*, inline (in place) in `hashes`.
|
||||||
///
|
///
|
||||||
/// In most cases, you'll want to use [`calculate_root`] instead. Please note, calling this function
|
/// In most cases, you'll want to use [`calculate_root`] instead. Please note, calling this function
|
||||||
|
@ -117,7 +121,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.
|
||||||
|
|
|
@ -24,7 +24,7 @@ use crate::network::message_compact_blocks;
|
||||||
use crate::network::constants::Magic;
|
use crate::network::constants::Magic;
|
||||||
use crate::consensus::encode::{CheckedData, Decodable, Encodable, VarInt};
|
use crate::consensus::encode::{CheckedData, Decodable, Encodable, VarInt};
|
||||||
use crate::consensus::{encode, serialize};
|
use crate::consensus::{encode, serialize};
|
||||||
use crate::util::merkleblock::MerkleBlock;
|
use crate::merkle_tree::MerkleBlock;
|
||||||
|
|
||||||
/// The maximum number of [super::message_blockdata::Inventory] items in an `inv` message.
|
/// The maximum number of [super::message_blockdata::Inventory] items in an `inv` message.
|
||||||
///
|
///
|
||||||
|
@ -469,6 +469,8 @@ impl Decodable for RawNetworkMessage {
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
use std::net::Ipv4Addr;
|
use std::net::Ipv4Addr;
|
||||||
use super::{RawNetworkMessage, NetworkMessage, CommandString};
|
use super::{RawNetworkMessage, NetworkMessage, CommandString};
|
||||||
use crate::network::constants::{ServiceFlags, Magic, Network};
|
use crate::network::constants::{ServiceFlags, Magic, Network};
|
||||||
|
@ -484,7 +486,6 @@ mod test {
|
||||||
use crate::blockdata::transaction::Transaction;
|
use crate::blockdata::transaction::Transaction;
|
||||||
use crate::blockdata::script::Script;
|
use crate::blockdata::script::Script;
|
||||||
use crate::network::message_bloom::{FilterAdd, FilterLoad, BloomFlags};
|
use crate::network::message_bloom::{FilterAdd, FilterLoad, BloomFlags};
|
||||||
use crate::MerkleBlock;
|
|
||||||
use crate::network::message_compact_blocks::{GetBlockTxn, SendCmpct};
|
use crate::network::message_compact_blocks::{GetBlockTxn, SendCmpct};
|
||||||
use crate::bip152::BlockTransactionsRequest;
|
use crate::bip152::BlockTransactionsRequest;
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,6 @@ pub mod key;
|
||||||
pub mod ecdsa;
|
pub mod ecdsa;
|
||||||
pub mod schnorr;
|
pub mod schnorr;
|
||||||
pub mod base58;
|
pub mod base58;
|
||||||
pub mod merkleblock;
|
|
||||||
pub mod psbt;
|
pub mod psbt;
|
||||||
pub mod taproot;
|
pub mod taproot;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue