From 2bc97b22e2a171fb3f928627d21d45c95754b052 Mon Sep 17 00:00:00 2001 From: Andrew Poelstra Date: Sat, 15 Jun 2024 13:07:04 +0000 Subject: [PATCH] api changes for new calculate_root method These changes are nontrivial. They * Drop the `From` impls from (w)txids to (w)TxMerkleRoots * Introduce a new trait and bound calculate_root on it... * ...in such a way that its return value cannot be inferred without further hints (though in practice this doesn't matter because usually the return value is immediately assigned to something with a known type such as a BlockHeader field) --- api/bitcoin/all-features.txt | 20 ++++++++++++++------ api/bitcoin/default-features.txt | 20 ++++++++++++++------ api/bitcoin/no-features.txt | 20 ++++++++++++++------ 3 files changed, 42 insertions(+), 18 deletions(-) diff --git a/api/bitcoin/all-features.txt b/api/bitcoin/all-features.txt index 025ba6c5f..f24df8213 100644 --- a/api/bitcoin/all-features.txt +++ b/api/bitcoin/all-features.txt @@ -391,6 +391,8 @@ impl bitcoin::key::TapTweak for bitcoin::key::UntweakedKeypair impl bitcoin::key::TapTweak for bitcoin::key::UntweakedPublicKey impl bitcoin::key::TweakedKeypair impl bitcoin::key::TweakedPublicKey +impl bitcoin::merkle_tree::MerkleNode for bitcoin::merkle_tree::TxMerkleNode +impl bitcoin::merkle_tree::MerkleNode for bitcoin::merkle_tree::WitnessMerkleNode impl bitcoin::merkle_tree::PartialMerkleTree impl bitcoin::merkle_tree::TxMerkleNode impl bitcoin::merkle_tree::WitnessMerkleNode @@ -1841,9 +1843,7 @@ impl core::convert::From for impl core::convert::From for u32 impl core::convert::From for bitcoin::blockdata::transaction::Txid impl core::convert::From for bitcoin::blockdata::transaction::Wtxid -impl core::convert::From for bitcoin::merkle_tree::TxMerkleNode impl core::convert::From for bitcoin_hashes::sha256d::Hash -impl core::convert::From for bitcoin::merkle_tree::WitnessMerkleNode impl core::convert::From for bitcoin_hashes::sha256d::Hash impl core::convert::From for bitcoin::psbt::Error impl core::convert::From for bitcoin::consensus::validation::TxVerifyError @@ -8837,6 +8837,8 @@ pub fn bitcoin::merkle_tree::MerkleBlockError::eq(&self, other: &bitcoin::merkle pub fn bitcoin::merkle_tree::MerkleBlockError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result pub fn bitcoin::merkle_tree::MerkleBlockError::from(never: core::convert::Infallible) -> Self pub fn bitcoin::merkle_tree::MerkleBlockError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)> +pub fn bitcoin::merkle_tree::MerkleNode::combine(&self, other: &Self) -> Self +pub fn bitcoin::merkle_tree::MerkleNode::from_leaf(leaf: Self::Leaf) -> Self pub fn bitcoin::merkle_tree::PartialMerkleTree::bits(&self) -> &alloc::vec::Vec pub fn bitcoin::merkle_tree::PartialMerkleTree::clone(&self) -> bitcoin::merkle_tree::PartialMerkleTree pub fn bitcoin::merkle_tree::PartialMerkleTree::consensus_decode_from_finite_reader(r: &mut R) -> core::result::Result @@ -8856,6 +8858,7 @@ pub fn bitcoin::merkle_tree::TxMerkleNode::as_ref(&self) -> &[u8] pub fn bitcoin::merkle_tree::TxMerkleNode::borrow(&self) -> &[u8] pub fn bitcoin::merkle_tree::TxMerkleNode::clone(&self) -> bitcoin::merkle_tree::TxMerkleNode pub fn bitcoin::merkle_tree::TxMerkleNode::cmp(&self, other: &bitcoin::merkle_tree::TxMerkleNode) -> core::cmp::Ordering +pub fn bitcoin::merkle_tree::TxMerkleNode::combine(&self, other: &Self) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::consensus_decode(r: &mut R) -> core::result::Result pub fn bitcoin::merkle_tree::TxMerkleNode::consensus_encode(&self, w: &mut W) -> core::result::Result pub fn bitcoin::merkle_tree::TxMerkleNode::deserialize>(d: D) -> core::result::Result::Error> @@ -8863,11 +8866,11 @@ pub fn bitcoin::merkle_tree::TxMerkleNode::engine() -> bool pub fn bitcoin::merkle_tree::TxMerkleNode::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result pub fn bitcoin::merkle_tree::TxMerkleNode::from(inner: bitcoin_hashes::sha256d::Hash) -> bitcoin::merkle_tree::TxMerkleNode -pub fn bitcoin::merkle_tree::TxMerkleNode::from(txid: bitcoin::blockdata::transaction::Txid) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_byte_array(bytes: ::Bytes) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_byte_array(bytes: Self::Bytes) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_engine(e: ::Engine) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_engine(e: ::Engine) -> bitcoin::merkle_tree::TxMerkleNode +pub fn bitcoin::merkle_tree::TxMerkleNode::from_leaf(leaf: Self::Leaf) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_raw_hash(inner: bitcoin_hashes::sha256d::Hash) -> bitcoin::merkle_tree::TxMerkleNode pub fn bitcoin::merkle_tree::TxMerkleNode::from_slice(sl: &[u8]) -> core::result::Result pub fn bitcoin::merkle_tree::TxMerkleNode::from_slice_delegated(sl: &[u8]) -> core::result::Result @@ -8890,6 +8893,7 @@ pub fn bitcoin::merkle_tree::WitnessMerkleNode::as_ref(&self) -> &[u8] pub fn bitcoin::merkle_tree::WitnessMerkleNode::borrow(&self) -> &[u8] pub fn bitcoin::merkle_tree::WitnessMerkleNode::clone(&self) -> bitcoin::merkle_tree::WitnessMerkleNode pub fn bitcoin::merkle_tree::WitnessMerkleNode::cmp(&self, other: &bitcoin::merkle_tree::WitnessMerkleNode) -> core::cmp::Ordering +pub fn bitcoin::merkle_tree::WitnessMerkleNode::combine(&self, other: &Self) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::consensus_decode(r: &mut R) -> core::result::Result pub fn bitcoin::merkle_tree::WitnessMerkleNode::consensus_encode(&self, w: &mut W) -> core::result::Result pub fn bitcoin::merkle_tree::WitnessMerkleNode::deserialize>(d: D) -> core::result::Result::Error> @@ -8897,11 +8901,11 @@ pub fn bitcoin::merkle_tree::WitnessMerkleNode::engine() -> bool pub fn bitcoin::merkle_tree::WitnessMerkleNode::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result pub fn bitcoin::merkle_tree::WitnessMerkleNode::from(inner: bitcoin_hashes::sha256d::Hash) -> bitcoin::merkle_tree::WitnessMerkleNode -pub fn bitcoin::merkle_tree::WitnessMerkleNode::from(wtxid: bitcoin::blockdata::transaction::Wtxid) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_byte_array(bytes: ::Bytes) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_byte_array(bytes: Self::Bytes) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_engine(e: ::Engine) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_engine(e: ::Engine) -> bitcoin::merkle_tree::WitnessMerkleNode +pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_leaf(leaf: Self::Leaf) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_raw_hash(inner: bitcoin_hashes::sha256d::Hash) -> bitcoin::merkle_tree::WitnessMerkleNode pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_slice(sl: &[u8]) -> core::result::Result pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_slice_delegated(sl: &[u8]) -> core::result::Result @@ -8915,8 +8919,8 @@ pub fn bitcoin::merkle_tree::WitnessMerkleNode::serialize ::Bytes pub fn bitcoin::merkle_tree::WitnessMerkleNode::to_byte_array(self) -> Self::Bytes pub fn bitcoin::merkle_tree::WitnessMerkleNode::to_raw_hash(self) -> bitcoin_hashes::sha256d::Hash -pub fn bitcoin::merkle_tree::calculate_root(hashes: I) -> core::option::Option where T: bitcoin_hashes::Hash + bitcoin::consensus::encode::Encodable, ::Engine: bitcoin_io::Write, I: core::iter::traits::iterator::Iterator -pub fn bitcoin::merkle_tree::calculate_root_inline(hashes: &mut [T]) -> core::option::Option where T: bitcoin_hashes::Hash + bitcoin::consensus::encode::Encodable, ::Engine: bitcoin_io::Write +pub fn bitcoin::merkle_tree::calculate_root(hashes: I) -> core::option::Option where T: bitcoin::merkle_tree::MerkleNode, I: core::iter::traits::iterator::Iterator::Leaf> +pub fn bitcoin::merkle_tree::calculate_root_inline(hashes: &mut [T]) -> core::option::Option pub fn bitcoin::network::Network::as_ref(&self) -> &bitcoin::consensus::params::Params pub fn bitcoin::network::Network::chain_hash(self) -> bitcoin::blockdata::constants::ChainHash pub fn bitcoin::network::Network::clone(&self) -> bitcoin::network::Network @@ -10400,6 +10404,7 @@ pub trait bitcoin::consensus::serde::EncodeBytes pub trait bitcoin::consensus::serde::IntoDeError pub trait bitcoin::consensus::serde::hex::Case: sealed::Case pub trait bitcoin::key::TapTweak +pub trait bitcoin::merkle_tree::MerkleNode: core::marker::Copy pub trait bitcoin::psbt::GetKey pub trait bitcoin::script::PushBytesErrorReport pub type &'a bitcoin::bip32::DerivationPath::IntoIter = core::slice::iter::Iter<'a, bitcoin::bip32::ChildNumber> @@ -10548,13 +10553,16 @@ pub type bitcoin::key::UntweakedKeypair::TweakedKey = bitcoin::key::TweakedKeypa pub type bitcoin::key::UntweakedPublicKey = secp256k1::key::XOnlyPublicKey pub type bitcoin::key::UntweakedPublicKey::TweakedAux = (bitcoin::key::TweakedPublicKey, secp256k1::key::Parity) pub type bitcoin::key::UntweakedPublicKey::TweakedKey = bitcoin::key::TweakedPublicKey +pub type bitcoin::merkle_tree::MerkleNode::Leaf pub type bitcoin::merkle_tree::TxMerkleNode::Bytes = ::Bytes pub type bitcoin::merkle_tree::TxMerkleNode::Engine = ::Engine pub type bitcoin::merkle_tree::TxMerkleNode::Err = hex_conservative::error::HexToArrayError +pub type bitcoin::merkle_tree::TxMerkleNode::Leaf = bitcoin::blockdata::transaction::Txid pub type bitcoin::merkle_tree::TxMerkleNode::Output = >::Output pub type bitcoin::merkle_tree::WitnessMerkleNode::Bytes = ::Bytes pub type bitcoin::merkle_tree::WitnessMerkleNode::Engine = ::Engine pub type bitcoin::merkle_tree::WitnessMerkleNode::Err = hex_conservative::error::HexToArrayError +pub type bitcoin::merkle_tree::WitnessMerkleNode::Leaf = bitcoin::blockdata::transaction::Wtxid pub type bitcoin::merkle_tree::WitnessMerkleNode::Output = >::Output pub type bitcoin::network::Network::Err = bitcoin::network::ParseNetworkError pub type bitcoin::network::Network::Error = bitcoin::network::UnknownChainHashError diff --git a/api/bitcoin/default-features.txt b/api/bitcoin/default-features.txt index a5a976f46..bec211c0c 100644 --- a/api/bitcoin/default-features.txt +++ b/api/bitcoin/default-features.txt @@ -382,6 +382,8 @@ impl bitcoin::key::TapTweak for bitcoin::key::UntweakedKeypair impl bitcoin::key::TapTweak for bitcoin::key::UntweakedPublicKey impl bitcoin::key::TweakedKeypair impl bitcoin::key::TweakedPublicKey +impl bitcoin::merkle_tree::MerkleNode for bitcoin::merkle_tree::TxMerkleNode +impl bitcoin::merkle_tree::MerkleNode for bitcoin::merkle_tree::WitnessMerkleNode impl bitcoin::merkle_tree::PartialMerkleTree impl bitcoin::merkle_tree::TxMerkleNode impl bitcoin::merkle_tree::WitnessMerkleNode @@ -1801,9 +1803,7 @@ impl core::convert::From for impl core::convert::From for u32 impl core::convert::From for bitcoin::blockdata::transaction::Txid impl core::convert::From for bitcoin::blockdata::transaction::Wtxid -impl core::convert::From for bitcoin::merkle_tree::TxMerkleNode impl core::convert::From for bitcoin_hashes::sha256d::Hash -impl core::convert::From for bitcoin::merkle_tree::WitnessMerkleNode impl core::convert::From for bitcoin_hashes::sha256d::Hash impl core::convert::From for bitcoin::psbt::Error impl core::convert::From for bitcoin::key::ParsePublicKeyError @@ -8381,6 +8381,8 @@ pub fn bitcoin::merkle_tree::MerkleBlockError::eq(&self, other: &bitcoin::merkle pub fn bitcoin::merkle_tree::MerkleBlockError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result pub fn bitcoin::merkle_tree::MerkleBlockError::from(never: core::convert::Infallible) -> Self pub fn bitcoin::merkle_tree::MerkleBlockError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)> +pub fn bitcoin::merkle_tree::MerkleNode::combine(&self, other: &Self) -> Self +pub fn bitcoin::merkle_tree::MerkleNode::from_leaf(leaf: Self::Leaf) -> Self pub fn bitcoin::merkle_tree::PartialMerkleTree::bits(&self) -> &alloc::vec::Vec pub fn bitcoin::merkle_tree::PartialMerkleTree::clone(&self) -> bitcoin::merkle_tree::PartialMerkleTree pub fn bitcoin::merkle_tree::PartialMerkleTree::consensus_decode_from_finite_reader(r: &mut R) -> core::result::Result @@ -8400,17 +8402,18 @@ pub fn bitcoin::merkle_tree::TxMerkleNode::as_ref(&self) -> &[u8] pub fn bitcoin::merkle_tree::TxMerkleNode::borrow(&self) -> &[u8] pub fn bitcoin::merkle_tree::TxMerkleNode::clone(&self) -> bitcoin::merkle_tree::TxMerkleNode pub fn bitcoin::merkle_tree::TxMerkleNode::cmp(&self, other: &bitcoin::merkle_tree::TxMerkleNode) -> core::cmp::Ordering +pub fn bitcoin::merkle_tree::TxMerkleNode::combine(&self, other: &Self) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::consensus_decode(r: &mut R) -> core::result::Result pub fn bitcoin::merkle_tree::TxMerkleNode::consensus_encode(&self, w: &mut W) -> core::result::Result pub fn bitcoin::merkle_tree::TxMerkleNode::engine() -> ::Engine pub fn bitcoin::merkle_tree::TxMerkleNode::eq(&self, other: &bitcoin::merkle_tree::TxMerkleNode) -> bool pub fn bitcoin::merkle_tree::TxMerkleNode::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result pub fn bitcoin::merkle_tree::TxMerkleNode::from(inner: bitcoin_hashes::sha256d::Hash) -> bitcoin::merkle_tree::TxMerkleNode -pub fn bitcoin::merkle_tree::TxMerkleNode::from(txid: bitcoin::blockdata::transaction::Txid) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_byte_array(bytes: ::Bytes) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_byte_array(bytes: Self::Bytes) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_engine(e: ::Engine) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_engine(e: ::Engine) -> bitcoin::merkle_tree::TxMerkleNode +pub fn bitcoin::merkle_tree::TxMerkleNode::from_leaf(leaf: Self::Leaf) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_raw_hash(inner: bitcoin_hashes::sha256d::Hash) -> bitcoin::merkle_tree::TxMerkleNode pub fn bitcoin::merkle_tree::TxMerkleNode::from_slice(sl: &[u8]) -> core::result::Result pub fn bitcoin::merkle_tree::TxMerkleNode::from_str(s: &str) -> core::result::Result @@ -8431,17 +8434,18 @@ pub fn bitcoin::merkle_tree::WitnessMerkleNode::as_ref(&self) -> &[u8] pub fn bitcoin::merkle_tree::WitnessMerkleNode::borrow(&self) -> &[u8] pub fn bitcoin::merkle_tree::WitnessMerkleNode::clone(&self) -> bitcoin::merkle_tree::WitnessMerkleNode pub fn bitcoin::merkle_tree::WitnessMerkleNode::cmp(&self, other: &bitcoin::merkle_tree::WitnessMerkleNode) -> core::cmp::Ordering +pub fn bitcoin::merkle_tree::WitnessMerkleNode::combine(&self, other: &Self) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::consensus_decode(r: &mut R) -> core::result::Result pub fn bitcoin::merkle_tree::WitnessMerkleNode::consensus_encode(&self, w: &mut W) -> core::result::Result pub fn bitcoin::merkle_tree::WitnessMerkleNode::engine() -> ::Engine pub fn bitcoin::merkle_tree::WitnessMerkleNode::eq(&self, other: &bitcoin::merkle_tree::WitnessMerkleNode) -> bool pub fn bitcoin::merkle_tree::WitnessMerkleNode::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result pub fn bitcoin::merkle_tree::WitnessMerkleNode::from(inner: bitcoin_hashes::sha256d::Hash) -> bitcoin::merkle_tree::WitnessMerkleNode -pub fn bitcoin::merkle_tree::WitnessMerkleNode::from(wtxid: bitcoin::blockdata::transaction::Wtxid) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_byte_array(bytes: ::Bytes) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_byte_array(bytes: Self::Bytes) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_engine(e: ::Engine) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_engine(e: ::Engine) -> bitcoin::merkle_tree::WitnessMerkleNode +pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_leaf(leaf: Self::Leaf) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_raw_hash(inner: bitcoin_hashes::sha256d::Hash) -> bitcoin::merkle_tree::WitnessMerkleNode pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_slice(sl: &[u8]) -> core::result::Result pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_str(s: &str) -> core::result::Result @@ -8453,8 +8457,8 @@ pub fn bitcoin::merkle_tree::WitnessMerkleNode::partial_cmp(&self, other: &bitco pub fn bitcoin::merkle_tree::WitnessMerkleNode::to_byte_array(self) -> ::Bytes pub fn bitcoin::merkle_tree::WitnessMerkleNode::to_byte_array(self) -> Self::Bytes pub fn bitcoin::merkle_tree::WitnessMerkleNode::to_raw_hash(self) -> bitcoin_hashes::sha256d::Hash -pub fn bitcoin::merkle_tree::calculate_root(hashes: I) -> core::option::Option where T: bitcoin_hashes::Hash + bitcoin::consensus::encode::Encodable, ::Engine: bitcoin_io::Write, I: core::iter::traits::iterator::Iterator -pub fn bitcoin::merkle_tree::calculate_root_inline(hashes: &mut [T]) -> core::option::Option where T: bitcoin_hashes::Hash + bitcoin::consensus::encode::Encodable, ::Engine: bitcoin_io::Write +pub fn bitcoin::merkle_tree::calculate_root(hashes: I) -> core::option::Option where T: bitcoin::merkle_tree::MerkleNode, I: core::iter::traits::iterator::Iterator::Leaf> +pub fn bitcoin::merkle_tree::calculate_root_inline(hashes: &mut [T]) -> core::option::Option pub fn bitcoin::network::Network::as_ref(&self) -> &bitcoin::consensus::params::Params pub fn bitcoin::network::Network::chain_hash(self) -> bitcoin::blockdata::constants::ChainHash pub fn bitcoin::network::Network::clone(&self) -> bitcoin::network::Network @@ -9869,6 +9873,7 @@ pub trait bitcoin::consensus::encode::Encodable pub trait bitcoin::consensus::encode::ReadExt: bitcoin_io::Read pub trait bitcoin::consensus::encode::WriteExt: bitcoin_io::Write pub trait bitcoin::key::TapTweak +pub trait bitcoin::merkle_tree::MerkleNode: core::marker::Copy pub trait bitcoin::psbt::GetKey pub trait bitcoin::script::PushBytesErrorReport pub type &'a bitcoin::bip32::DerivationPath::IntoIter = core::slice::iter::Iter<'a, bitcoin::bip32::ChildNumber> @@ -10008,13 +10013,16 @@ pub type bitcoin::key::UntweakedKeypair::TweakedKey = bitcoin::key::TweakedKeypa pub type bitcoin::key::UntweakedPublicKey = secp256k1::key::XOnlyPublicKey pub type bitcoin::key::UntweakedPublicKey::TweakedAux = (bitcoin::key::TweakedPublicKey, secp256k1::key::Parity) pub type bitcoin::key::UntweakedPublicKey::TweakedKey = bitcoin::key::TweakedPublicKey +pub type bitcoin::merkle_tree::MerkleNode::Leaf pub type bitcoin::merkle_tree::TxMerkleNode::Bytes = ::Bytes pub type bitcoin::merkle_tree::TxMerkleNode::Engine = ::Engine pub type bitcoin::merkle_tree::TxMerkleNode::Err = hex_conservative::error::HexToArrayError +pub type bitcoin::merkle_tree::TxMerkleNode::Leaf = bitcoin::blockdata::transaction::Txid pub type bitcoin::merkle_tree::TxMerkleNode::Output = >::Output pub type bitcoin::merkle_tree::WitnessMerkleNode::Bytes = ::Bytes pub type bitcoin::merkle_tree::WitnessMerkleNode::Engine = ::Engine pub type bitcoin::merkle_tree::WitnessMerkleNode::Err = hex_conservative::error::HexToArrayError +pub type bitcoin::merkle_tree::WitnessMerkleNode::Leaf = bitcoin::blockdata::transaction::Wtxid pub type bitcoin::merkle_tree::WitnessMerkleNode::Output = >::Output pub type bitcoin::network::Network::Err = bitcoin::network::ParseNetworkError pub type bitcoin::network::Network::Error = bitcoin::network::UnknownChainHashError diff --git a/api/bitcoin/no-features.txt b/api/bitcoin/no-features.txt index 3b0cecd81..f520060df 100644 --- a/api/bitcoin/no-features.txt +++ b/api/bitcoin/no-features.txt @@ -325,6 +325,8 @@ impl bitcoin::key::TapTweak for bitcoin::key::UntweakedKeypair impl bitcoin::key::TapTweak for bitcoin::key::UntweakedPublicKey impl bitcoin::key::TweakedKeypair impl bitcoin::key::TweakedPublicKey +impl bitcoin::merkle_tree::MerkleNode for bitcoin::merkle_tree::TxMerkleNode +impl bitcoin::merkle_tree::MerkleNode for bitcoin::merkle_tree::WitnessMerkleNode impl bitcoin::merkle_tree::PartialMerkleTree impl bitcoin::merkle_tree::TxMerkleNode impl bitcoin::merkle_tree::WitnessMerkleNode @@ -1637,9 +1639,7 @@ impl core::convert::From for impl core::convert::From for u32 impl core::convert::From for bitcoin::blockdata::transaction::Txid impl core::convert::From for bitcoin::blockdata::transaction::Wtxid -impl core::convert::From for bitcoin::merkle_tree::TxMerkleNode impl core::convert::From for bitcoin_hashes::sha256d::Hash -impl core::convert::From for bitcoin::merkle_tree::WitnessMerkleNode impl core::convert::From for bitcoin_hashes::sha256d::Hash impl core::convert::From for bitcoin::psbt::Error impl core::convert::From for bitcoin::key::ParsePublicKeyError @@ -7716,6 +7716,8 @@ pub fn bitcoin::merkle_tree::MerkleBlockError::clone(&self) -> bitcoin::merkle_t pub fn bitcoin::merkle_tree::MerkleBlockError::eq(&self, other: &bitcoin::merkle_tree::MerkleBlockError) -> bool pub fn bitcoin::merkle_tree::MerkleBlockError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result pub fn bitcoin::merkle_tree::MerkleBlockError::from(never: core::convert::Infallible) -> Self +pub fn bitcoin::merkle_tree::MerkleNode::combine(&self, other: &Self) -> Self +pub fn bitcoin::merkle_tree::MerkleNode::from_leaf(leaf: Self::Leaf) -> Self pub fn bitcoin::merkle_tree::PartialMerkleTree::bits(&self) -> &alloc::vec::Vec pub fn bitcoin::merkle_tree::PartialMerkleTree::clone(&self) -> bitcoin::merkle_tree::PartialMerkleTree pub fn bitcoin::merkle_tree::PartialMerkleTree::consensus_decode_from_finite_reader(r: &mut R) -> core::result::Result @@ -7735,17 +7737,18 @@ pub fn bitcoin::merkle_tree::TxMerkleNode::as_ref(&self) -> &[u8] pub fn bitcoin::merkle_tree::TxMerkleNode::borrow(&self) -> &[u8] pub fn bitcoin::merkle_tree::TxMerkleNode::clone(&self) -> bitcoin::merkle_tree::TxMerkleNode pub fn bitcoin::merkle_tree::TxMerkleNode::cmp(&self, other: &bitcoin::merkle_tree::TxMerkleNode) -> core::cmp::Ordering +pub fn bitcoin::merkle_tree::TxMerkleNode::combine(&self, other: &Self) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::consensus_decode(r: &mut R) -> core::result::Result pub fn bitcoin::merkle_tree::TxMerkleNode::consensus_encode(&self, w: &mut W) -> core::result::Result pub fn bitcoin::merkle_tree::TxMerkleNode::engine() -> ::Engine pub fn bitcoin::merkle_tree::TxMerkleNode::eq(&self, other: &bitcoin::merkle_tree::TxMerkleNode) -> bool pub fn bitcoin::merkle_tree::TxMerkleNode::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result pub fn bitcoin::merkle_tree::TxMerkleNode::from(inner: bitcoin_hashes::sha256d::Hash) -> bitcoin::merkle_tree::TxMerkleNode -pub fn bitcoin::merkle_tree::TxMerkleNode::from(txid: bitcoin::blockdata::transaction::Txid) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_byte_array(bytes: ::Bytes) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_byte_array(bytes: Self::Bytes) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_engine(e: ::Engine) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_engine(e: ::Engine) -> bitcoin::merkle_tree::TxMerkleNode +pub fn bitcoin::merkle_tree::TxMerkleNode::from_leaf(leaf: Self::Leaf) -> Self pub fn bitcoin::merkle_tree::TxMerkleNode::from_raw_hash(inner: bitcoin_hashes::sha256d::Hash) -> bitcoin::merkle_tree::TxMerkleNode pub fn bitcoin::merkle_tree::TxMerkleNode::from_slice(sl: &[u8]) -> core::result::Result pub fn bitcoin::merkle_tree::TxMerkleNode::from_str(s: &str) -> core::result::Result @@ -7766,17 +7769,18 @@ pub fn bitcoin::merkle_tree::WitnessMerkleNode::as_ref(&self) -> &[u8] pub fn bitcoin::merkle_tree::WitnessMerkleNode::borrow(&self) -> &[u8] pub fn bitcoin::merkle_tree::WitnessMerkleNode::clone(&self) -> bitcoin::merkle_tree::WitnessMerkleNode pub fn bitcoin::merkle_tree::WitnessMerkleNode::cmp(&self, other: &bitcoin::merkle_tree::WitnessMerkleNode) -> core::cmp::Ordering +pub fn bitcoin::merkle_tree::WitnessMerkleNode::combine(&self, other: &Self) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::consensus_decode(r: &mut R) -> core::result::Result pub fn bitcoin::merkle_tree::WitnessMerkleNode::consensus_encode(&self, w: &mut W) -> core::result::Result pub fn bitcoin::merkle_tree::WitnessMerkleNode::engine() -> ::Engine pub fn bitcoin::merkle_tree::WitnessMerkleNode::eq(&self, other: &bitcoin::merkle_tree::WitnessMerkleNode) -> bool pub fn bitcoin::merkle_tree::WitnessMerkleNode::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result pub fn bitcoin::merkle_tree::WitnessMerkleNode::from(inner: bitcoin_hashes::sha256d::Hash) -> bitcoin::merkle_tree::WitnessMerkleNode -pub fn bitcoin::merkle_tree::WitnessMerkleNode::from(wtxid: bitcoin::blockdata::transaction::Wtxid) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_byte_array(bytes: ::Bytes) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_byte_array(bytes: Self::Bytes) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_engine(e: ::Engine) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_engine(e: ::Engine) -> bitcoin::merkle_tree::WitnessMerkleNode +pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_leaf(leaf: Self::Leaf) -> Self pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_raw_hash(inner: bitcoin_hashes::sha256d::Hash) -> bitcoin::merkle_tree::WitnessMerkleNode pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_slice(sl: &[u8]) -> core::result::Result pub fn bitcoin::merkle_tree::WitnessMerkleNode::from_str(s: &str) -> core::result::Result @@ -7788,8 +7792,8 @@ pub fn bitcoin::merkle_tree::WitnessMerkleNode::partial_cmp(&self, other: &bitco pub fn bitcoin::merkle_tree::WitnessMerkleNode::to_byte_array(self) -> ::Bytes pub fn bitcoin::merkle_tree::WitnessMerkleNode::to_byte_array(self) -> Self::Bytes pub fn bitcoin::merkle_tree::WitnessMerkleNode::to_raw_hash(self) -> bitcoin_hashes::sha256d::Hash -pub fn bitcoin::merkle_tree::calculate_root(hashes: I) -> core::option::Option where T: bitcoin_hashes::Hash + bitcoin::consensus::encode::Encodable, ::Engine: bitcoin_io::Write, I: core::iter::traits::iterator::Iterator -pub fn bitcoin::merkle_tree::calculate_root_inline(hashes: &mut [T]) -> core::option::Option where T: bitcoin_hashes::Hash + bitcoin::consensus::encode::Encodable, ::Engine: bitcoin_io::Write +pub fn bitcoin::merkle_tree::calculate_root(hashes: I) -> core::option::Option where T: bitcoin::merkle_tree::MerkleNode, I: core::iter::traits::iterator::Iterator::Leaf> +pub fn bitcoin::merkle_tree::calculate_root_inline(hashes: &mut [T]) -> core::option::Option pub fn bitcoin::network::Network::as_ref(&self) -> &bitcoin::consensus::params::Params pub fn bitcoin::network::Network::chain_hash(self) -> bitcoin::blockdata::constants::ChainHash pub fn bitcoin::network::Network::clone(&self) -> bitcoin::network::Network @@ -8947,6 +8951,7 @@ pub trait bitcoin::consensus::encode::Encodable pub trait bitcoin::consensus::encode::ReadExt: bitcoin_io::Read pub trait bitcoin::consensus::encode::WriteExt: bitcoin_io::Write pub trait bitcoin::key::TapTweak +pub trait bitcoin::merkle_tree::MerkleNode: core::marker::Copy pub trait bitcoin::psbt::GetKey pub trait bitcoin::script::PushBytesErrorReport pub type &'a bitcoin::bip32::DerivationPath::IntoIter = core::slice::iter::Iter<'a, bitcoin::bip32::ChildNumber> @@ -9084,13 +9089,16 @@ pub type bitcoin::key::UntweakedKeypair::TweakedKey = bitcoin::key::TweakedKeypa pub type bitcoin::key::UntweakedPublicKey = secp256k1::key::XOnlyPublicKey pub type bitcoin::key::UntweakedPublicKey::TweakedAux = (bitcoin::key::TweakedPublicKey, secp256k1::key::Parity) pub type bitcoin::key::UntweakedPublicKey::TweakedKey = bitcoin::key::TweakedPublicKey +pub type bitcoin::merkle_tree::MerkleNode::Leaf pub type bitcoin::merkle_tree::TxMerkleNode::Bytes = ::Bytes pub type bitcoin::merkle_tree::TxMerkleNode::Engine = ::Engine pub type bitcoin::merkle_tree::TxMerkleNode::Err = hex_conservative::error::HexToArrayError +pub type bitcoin::merkle_tree::TxMerkleNode::Leaf = bitcoin::blockdata::transaction::Txid pub type bitcoin::merkle_tree::TxMerkleNode::Output = >::Output pub type bitcoin::merkle_tree::WitnessMerkleNode::Bytes = ::Bytes pub type bitcoin::merkle_tree::WitnessMerkleNode::Engine = ::Engine pub type bitcoin::merkle_tree::WitnessMerkleNode::Err = hex_conservative::error::HexToArrayError +pub type bitcoin::merkle_tree::WitnessMerkleNode::Leaf = bitcoin::blockdata::transaction::Wtxid pub type bitcoin::merkle_tree::WitnessMerkleNode::Output = >::Output pub type bitcoin::network::Network::Err = bitcoin::network::ParseNetworkError pub type bitcoin::network::Network::Error = bitcoin::network::UnknownChainHashError