diff --git a/api/bitcoin/all-features.txt b/api/bitcoin/all-features.txt index 14d6c1eb4..62cfcdb29 100644 --- a/api/bitcoin/all-features.txt +++ b/api/bitcoin/all-features.txt @@ -427,6 +427,10 @@ impl bitcoin::taproot::ControlBlock impl bitcoin::taproot::FutureLeafVersion impl bitcoin::taproot::HiddenNodesError impl bitcoin::taproot::IncompleteBuilderError +impl bitcoin::taproot::InvalidControlBlockSizeError +impl bitcoin::taproot::InvalidMerkleBranchSizeError +impl bitcoin::taproot::InvalidMerkleTreeDepthError +impl bitcoin::taproot::InvalidTaprootLeafVersionError impl bitcoin::taproot::LeafNode impl bitcoin::taproot::LeafVersion impl bitcoin::taproot::NodeInfo @@ -715,6 +719,10 @@ impl core::clone::Clone for bitcoin::taproot::ControlBlock impl core::clone::Clone for bitcoin::taproot::FutureLeafVersion impl core::clone::Clone for bitcoin::taproot::HiddenNodesError impl core::clone::Clone for bitcoin::taproot::IncompleteBuilderError +impl core::clone::Clone for bitcoin::taproot::InvalidControlBlockSizeError +impl core::clone::Clone for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::clone::Clone for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::clone::Clone for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::clone::Clone for bitcoin::taproot::LeafNode impl core::clone::Clone for bitcoin::taproot::LeafVersion impl core::clone::Clone for bitcoin::taproot::NodeInfo @@ -916,6 +924,10 @@ impl core::cmp::Eq for bitcoin::taproot::ControlBlock impl core::cmp::Eq for bitcoin::taproot::FutureLeafVersion impl core::cmp::Eq for bitcoin::taproot::HiddenNodesError impl core::cmp::Eq for bitcoin::taproot::IncompleteBuilderError +impl core::cmp::Eq for bitcoin::taproot::InvalidControlBlockSizeError +impl core::cmp::Eq for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::cmp::Eq for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::cmp::Eq for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::cmp::Eq for bitcoin::taproot::LeafNode impl core::cmp::Eq for bitcoin::taproot::LeafVersion impl core::cmp::Eq for bitcoin::taproot::NodeInfo @@ -1205,6 +1217,10 @@ impl core::cmp::PartialEq for bitcoin::taproot::ControlBlock impl core::cmp::PartialEq for bitcoin::taproot::FutureLeafVersion impl core::cmp::PartialEq for bitcoin::taproot::HiddenNodesError impl core::cmp::PartialEq for bitcoin::taproot::IncompleteBuilderError +impl core::cmp::PartialEq for bitcoin::taproot::InvalidControlBlockSizeError +impl core::cmp::PartialEq for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::cmp::PartialEq for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::cmp::PartialEq for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::cmp::PartialEq for bitcoin::taproot::LeafNode impl core::cmp::PartialEq for bitcoin::taproot::LeafVersion impl core::cmp::PartialEq for bitcoin::taproot::NodeInfo @@ -1874,6 +1890,11 @@ impl core::convert::From for bitcoin::sigh impl core::convert::From for bitcoin::sighash::TaprootError impl core::convert::From for bitcoin::sighash::TaprootError impl core::convert::From for bitcoin::psbt::SignError +impl core::convert::From for bitcoin::taproot::TaprootError +impl core::convert::From for bitcoin::taproot::TaprootError +impl core::convert::From for bitcoin::taproot::TaprootBuilderError +impl core::convert::From for bitcoin::taproot::TaprootError +impl core::convert::From for bitcoin::taproot::TaprootError impl core::convert::From for bitcoin::taproot::TapNodeHash impl core::convert::From for bitcoin::taproot::serialized_signature::SerializedSignature impl core::convert::From for bitcoin::taproot::TapNodeHash @@ -1946,6 +1967,10 @@ impl core::convert::From for bitcoin::sighash::Taproo impl core::convert::From for bitcoin::sign_message::MessageSignatureError impl core::convert::From for bitcoin::taproot::HiddenNodesError impl core::convert::From for bitcoin::taproot::IncompleteBuilderError +impl core::convert::From for bitcoin::taproot::InvalidControlBlockSizeError +impl core::convert::From for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::convert::From for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::convert::From for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::convert::From for bitcoin::taproot::SigFromSliceError impl core::convert::From for bitcoin::taproot::TaprootBuilderError impl core::convert::From for bitcoin::taproot::TaprootError @@ -2085,6 +2110,10 @@ impl core::error::Error for bitcoin::sighash::TaprootError impl core::error::Error for bitcoin::sign_message::MessageSignatureError impl core::error::Error for bitcoin::taproot::HiddenNodesError impl core::error::Error for bitcoin::taproot::IncompleteBuilderError +impl core::error::Error for bitcoin::taproot::InvalidControlBlockSizeError +impl core::error::Error for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::error::Error for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::error::Error for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::error::Error for bitcoin::taproot::SigFromSliceError impl core::error::Error for bitcoin::taproot::TaprootBuilderError impl core::error::Error for bitcoin::taproot::TaprootError @@ -2274,6 +2303,10 @@ impl core::fmt::Debug for bitcoin::taproot::ControlBlock impl core::fmt::Debug for bitcoin::taproot::FutureLeafVersion impl core::fmt::Debug for bitcoin::taproot::HiddenNodesError impl core::fmt::Debug for bitcoin::taproot::IncompleteBuilderError +impl core::fmt::Debug for bitcoin::taproot::InvalidControlBlockSizeError +impl core::fmt::Debug for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::fmt::Debug for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::fmt::Debug for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::fmt::Debug for bitcoin::taproot::LeafNode impl core::fmt::Debug for bitcoin::taproot::LeafVersion impl core::fmt::Debug for bitcoin::taproot::NodeInfo @@ -2414,6 +2447,10 @@ impl core::fmt::Display for bitcoin::sign_message::MessageSignatureError impl core::fmt::Display for bitcoin::taproot::FutureLeafVersion impl core::fmt::Display for bitcoin::taproot::HiddenNodesError impl core::fmt::Display for bitcoin::taproot::IncompleteBuilderError +impl core::fmt::Display for bitcoin::taproot::InvalidControlBlockSizeError +impl core::fmt::Display for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::fmt::Display for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::fmt::Display for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::fmt::Display for bitcoin::taproot::LeafVersion impl core::fmt::Display for bitcoin::taproot::SigFromSliceError impl core::fmt::Display for bitcoin::taproot::TapLeafHash @@ -2873,6 +2910,10 @@ impl core::marker::Freeze for bitcoin::taproot::ControlBlock impl core::marker::Freeze for bitcoin::taproot::FutureLeafVersion impl core::marker::Freeze for bitcoin::taproot::HiddenNodesError impl core::marker::Freeze for bitcoin::taproot::IncompleteBuilderError +impl core::marker::Freeze for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::Freeze for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::Freeze for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::Freeze for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::Freeze for bitcoin::taproot::LeafNode impl core::marker::Freeze for bitcoin::taproot::LeafVersion impl core::marker::Freeze for bitcoin::taproot::NodeInfo @@ -3085,6 +3126,10 @@ impl core::marker::Send for bitcoin::taproot::ControlBlock impl core::marker::Send for bitcoin::taproot::FutureLeafVersion impl core::marker::Send for bitcoin::taproot::HiddenNodesError impl core::marker::Send for bitcoin::taproot::IncompleteBuilderError +impl core::marker::Send for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::Send for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::Send for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::Send for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::Send for bitcoin::taproot::LeafNode impl core::marker::Send for bitcoin::taproot::LeafVersion impl core::marker::Send for bitcoin::taproot::NodeInfo @@ -3285,6 +3330,10 @@ impl core::marker::StructuralPartialEq for bitcoin::taproot::ControlBlock impl core::marker::StructuralPartialEq for bitcoin::taproot::FutureLeafVersion impl core::marker::StructuralPartialEq for bitcoin::taproot::HiddenNodesError impl core::marker::StructuralPartialEq for bitcoin::taproot::IncompleteBuilderError +impl core::marker::StructuralPartialEq for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::StructuralPartialEq for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::StructuralPartialEq for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::StructuralPartialEq for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::StructuralPartialEq for bitcoin::taproot::LeafNode impl core::marker::StructuralPartialEq for bitcoin::taproot::LeafVersion impl core::marker::StructuralPartialEq for bitcoin::taproot::SigFromSliceError @@ -3493,6 +3542,10 @@ impl core::marker::Sync for bitcoin::taproot::ControlBlock impl core::marker::Sync for bitcoin::taproot::FutureLeafVersion impl core::marker::Sync for bitcoin::taproot::HiddenNodesError impl core::marker::Sync for bitcoin::taproot::IncompleteBuilderError +impl core::marker::Sync for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::Sync for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::Sync for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::Sync for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::Sync for bitcoin::taproot::LeafNode impl core::marker::Sync for bitcoin::taproot::LeafVersion impl core::marker::Sync for bitcoin::taproot::NodeInfo @@ -3705,6 +3758,10 @@ impl core::marker::Unpin for bitcoin::taproot::ControlBlock impl core::marker::Unpin for bitcoin::taproot::FutureLeafVersion impl core::marker::Unpin for bitcoin::taproot::HiddenNodesError impl core::marker::Unpin for bitcoin::taproot::IncompleteBuilderError +impl core::marker::Unpin for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::Unpin for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::Unpin for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::Unpin for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::Unpin for bitcoin::taproot::LeafNode impl core::marker::Unpin for bitcoin::taproot::LeafVersion impl core::marker::Unpin for bitcoin::taproot::NodeInfo @@ -3944,6 +4001,10 @@ impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::ControlBlock impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::FutureLeafVersion impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::HiddenNodesError impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::IncompleteBuilderError +impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::InvalidControlBlockSizeError +impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::LeafNode impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::LeafVersion impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::NodeInfo @@ -4151,6 +4212,10 @@ impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::ControlBlock impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::FutureLeafVersion impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::HiddenNodesError impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::IncompleteBuilderError +impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::InvalidControlBlockSizeError +impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::LeafNode impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::LeafVersion impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::NodeInfo @@ -5637,15 +5702,15 @@ pub bitcoin::taproot::Signature::signature: secp256k1::schnorr::Signature pub bitcoin::taproot::TapLeaf::Hidden(bitcoin::taproot::TapNodeHash) pub bitcoin::taproot::TapLeaf::Script(bitcoin::blockdata::script::ScriptBuf, bitcoin::taproot::LeafVersion) pub bitcoin::taproot::TaprootBuilderError::EmptyTree -pub bitcoin::taproot::TaprootBuilderError::InvalidMerkleTreeDepth(usize) +pub bitcoin::taproot::TaprootBuilderError::InvalidMerkleTreeDepth(bitcoin::taproot::InvalidMerkleTreeDepthError) pub bitcoin::taproot::TaprootBuilderError::NodeNotInDfsOrder pub bitcoin::taproot::TaprootBuilderError::OverCompleteTree pub bitcoin::taproot::TaprootError::EmptyTree -pub bitcoin::taproot::TaprootError::InvalidControlBlockSize(usize) +pub bitcoin::taproot::TaprootError::InvalidControlBlockSize(bitcoin::taproot::InvalidControlBlockSizeError) pub bitcoin::taproot::TaprootError::InvalidInternalKey(secp256k1::Error) -pub bitcoin::taproot::TaprootError::InvalidMerkleBranchSize(usize) -pub bitcoin::taproot::TaprootError::InvalidMerkleTreeDepth(usize) -pub bitcoin::taproot::TaprootError::InvalidTaprootLeafVersion(u8) +pub bitcoin::taproot::TaprootError::InvalidMerkleBranchSize(bitcoin::taproot::InvalidMerkleBranchSizeError) +pub bitcoin::taproot::TaprootError::InvalidMerkleTreeDepth(bitcoin::taproot::InvalidMerkleTreeDepthError) +pub bitcoin::taproot::TaprootError::InvalidTaprootLeafVersion(bitcoin::taproot::InvalidTaprootLeafVersionError) pub bitcoin::transaction::IndexOutOfBoundsError::index: usize pub bitcoin::transaction::IndexOutOfBoundsError::length: usize pub bitcoin::transaction::OutPoint::txid: bitcoin::blockdata::transaction::Txid @@ -9470,6 +9535,26 @@ pub fn bitcoin::taproot::IncompleteBuilderError::fmt(&self, f: &mut core::fmt::F pub fn bitcoin::taproot::IncompleteBuilderError::from(never: core::convert::Infallible) -> Self pub fn bitcoin::taproot::IncompleteBuilderError::into_builder(self) -> bitcoin::taproot::TaprootBuilder pub fn bitcoin::taproot::IncompleteBuilderError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)> +pub fn bitcoin::taproot::InvalidControlBlockSizeError::clone(&self) -> bitcoin::taproot::InvalidControlBlockSizeError +pub fn bitcoin::taproot::InvalidControlBlockSizeError::eq(&self, other: &bitcoin::taproot::InvalidControlBlockSizeError) -> bool +pub fn bitcoin::taproot::InvalidControlBlockSizeError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::InvalidControlBlockSizeError::from(never: core::convert::Infallible) -> Self +pub fn bitcoin::taproot::InvalidControlBlockSizeError::invalid_control_block_size(&self) -> usize +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::clone(&self) -> bitcoin::taproot::InvalidMerkleBranchSizeError +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::eq(&self, other: &bitcoin::taproot::InvalidMerkleBranchSizeError) -> bool +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::from(never: core::convert::Infallible) -> Self +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::invalid_merkle_branch_size(&self) -> usize +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::clone(&self) -> bitcoin::taproot::InvalidMerkleTreeDepthError +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::eq(&self, other: &bitcoin::taproot::InvalidMerkleTreeDepthError) -> bool +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::from(never: core::convert::Infallible) -> Self +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::invalid_merkle_tree_depth(&self) -> usize +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::clone(&self) -> bitcoin::taproot::InvalidTaprootLeafVersionError +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::eq(&self, other: &bitcoin::taproot::InvalidTaprootLeafVersionError) -> bool +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::from(never: core::convert::Infallible) -> Self +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::invalid_leaf_version(&self) -> u8 pub fn bitcoin::taproot::LeafNode::clone(&self) -> bitcoin::taproot::LeafNode pub fn bitcoin::taproot::LeafNode::cmp(&self, other: &bitcoin::taproot::LeafNode) -> core::cmp::Ordering pub fn bitcoin::taproot::LeafNode::depth(&self) -> u8 @@ -9493,7 +9578,7 @@ pub fn bitcoin::taproot::LeafVersion::cmp(&self, other: &bitcoin::taproot::LeafV pub fn bitcoin::taproot::LeafVersion::deserialize(deserializer: D) -> core::result::Result::Error> where D: serde::de::Deserializer<'de> pub fn bitcoin::taproot::LeafVersion::eq(&self, other: &bitcoin::taproot::LeafVersion) -> bool pub fn bitcoin::taproot::LeafVersion::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn bitcoin::taproot::LeafVersion::from_consensus(version: u8) -> core::result::Result +pub fn bitcoin::taproot::LeafVersion::from_consensus(version: u8) -> core::result::Result pub fn bitcoin::taproot::LeafVersion::hash<__H: core::hash::Hasher>(&self, state: &mut __H) pub fn bitcoin::taproot::LeafVersion::partial_cmp(&self, other: &bitcoin::taproot::LeafVersion) -> core::option::Option pub fn bitcoin::taproot::LeafVersion::serialize(&self, serializer: S) -> core::result::Result<::Ok, ::Error> where S: serde::ser::Serializer @@ -9701,11 +9786,16 @@ pub fn bitcoin::taproot::TaprootBuilder::with_huffman_tree(script_weights: I) pub fn bitcoin::taproot::TaprootBuilderError::clone(&self) -> bitcoin::taproot::TaprootBuilderError pub fn bitcoin::taproot::TaprootBuilderError::eq(&self, other: &bitcoin::taproot::TaprootBuilderError) -> bool pub fn bitcoin::taproot::TaprootBuilderError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::TaprootBuilderError::from(e: bitcoin::taproot::InvalidMerkleTreeDepthError) -> Self pub fn bitcoin::taproot::TaprootBuilderError::from(never: core::convert::Infallible) -> Self pub fn bitcoin::taproot::TaprootBuilderError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)> pub fn bitcoin::taproot::TaprootError::clone(&self) -> bitcoin::taproot::TaprootError pub fn bitcoin::taproot::TaprootError::eq(&self, other: &bitcoin::taproot::TaprootError) -> bool pub fn bitcoin::taproot::TaprootError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::TaprootError::from(e: bitcoin::taproot::InvalidControlBlockSizeError) -> Self +pub fn bitcoin::taproot::TaprootError::from(e: bitcoin::taproot::InvalidMerkleBranchSizeError) -> Self +pub fn bitcoin::taproot::TaprootError::from(e: bitcoin::taproot::InvalidMerkleTreeDepthError) -> Self +pub fn bitcoin::taproot::TaprootError::from(e: bitcoin::taproot::InvalidTaprootLeafVersionError) -> Self pub fn bitcoin::taproot::TaprootError::from(never: core::convert::Infallible) -> Self pub fn bitcoin::taproot::TaprootError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)> pub fn bitcoin::taproot::TaprootSpendInfo::clone(&self) -> bitcoin::taproot::TaprootSpendInfo @@ -10272,6 +10362,10 @@ pub struct bitcoin::sighash::TapSighashTag pub struct bitcoin::sign_message::MessageSignature pub struct bitcoin::taproot::ControlBlock pub struct bitcoin::taproot::FutureLeafVersion(_) +pub struct bitcoin::taproot::InvalidControlBlockSizeError(_) +pub struct bitcoin::taproot::InvalidMerkleBranchSizeError(_) +pub struct bitcoin::taproot::InvalidMerkleTreeDepthError(_) +pub struct bitcoin::taproot::InvalidTaprootLeafVersionError(_) pub struct bitcoin::taproot::LeafNode pub struct bitcoin::taproot::LeafNodes<'a> pub struct bitcoin::taproot::NodeInfo @@ -10506,7 +10600,7 @@ pub type bitcoin::taproot::TapTweakHash::Engine = >::Output pub type bitcoin::taproot::merkle_branch::IntoIter::Item = bitcoin::taproot::TapNodeHash -pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::Error = bitcoin::taproot::TaprootError +pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::Error = bitcoin::taproot::InvalidMerkleTreeDepthError pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::IntoIter = bitcoin::taproot::merkle_branch::IntoIter pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::Item = bitcoin::taproot::TapNodeHash pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::Target = [bitcoin::taproot::TapNodeHash] diff --git a/api/bitcoin/default-features.txt b/api/bitcoin/default-features.txt index 7f1f06159..56781cbfd 100644 --- a/api/bitcoin/default-features.txt +++ b/api/bitcoin/default-features.txt @@ -418,6 +418,10 @@ impl bitcoin::taproot::ControlBlock impl bitcoin::taproot::FutureLeafVersion impl bitcoin::taproot::HiddenNodesError impl bitcoin::taproot::IncompleteBuilderError +impl bitcoin::taproot::InvalidControlBlockSizeError +impl bitcoin::taproot::InvalidMerkleBranchSizeError +impl bitcoin::taproot::InvalidMerkleTreeDepthError +impl bitcoin::taproot::InvalidTaprootLeafVersionError impl bitcoin::taproot::LeafNode impl bitcoin::taproot::LeafVersion impl bitcoin::taproot::NodeInfo @@ -683,6 +687,10 @@ impl core::clone::Clone for bitcoin::taproot::ControlBlock impl core::clone::Clone for bitcoin::taproot::FutureLeafVersion impl core::clone::Clone for bitcoin::taproot::HiddenNodesError impl core::clone::Clone for bitcoin::taproot::IncompleteBuilderError +impl core::clone::Clone for bitcoin::taproot::InvalidControlBlockSizeError +impl core::clone::Clone for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::clone::Clone for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::clone::Clone for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::clone::Clone for bitcoin::taproot::LeafNode impl core::clone::Clone for bitcoin::taproot::LeafVersion impl core::clone::Clone for bitcoin::taproot::NodeInfo @@ -880,6 +888,10 @@ impl core::cmp::Eq for bitcoin::taproot::ControlBlock impl core::cmp::Eq for bitcoin::taproot::FutureLeafVersion impl core::cmp::Eq for bitcoin::taproot::HiddenNodesError impl core::cmp::Eq for bitcoin::taproot::IncompleteBuilderError +impl core::cmp::Eq for bitcoin::taproot::InvalidControlBlockSizeError +impl core::cmp::Eq for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::cmp::Eq for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::cmp::Eq for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::cmp::Eq for bitcoin::taproot::LeafNode impl core::cmp::Eq for bitcoin::taproot::LeafVersion impl core::cmp::Eq for bitcoin::taproot::NodeInfo @@ -1165,6 +1177,10 @@ impl core::cmp::PartialEq for bitcoin::taproot::ControlBlock impl core::cmp::PartialEq for bitcoin::taproot::FutureLeafVersion impl core::cmp::PartialEq for bitcoin::taproot::HiddenNodesError impl core::cmp::PartialEq for bitcoin::taproot::IncompleteBuilderError +impl core::cmp::PartialEq for bitcoin::taproot::InvalidControlBlockSizeError +impl core::cmp::PartialEq for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::cmp::PartialEq for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::cmp::PartialEq for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::cmp::PartialEq for bitcoin::taproot::LeafNode impl core::cmp::PartialEq for bitcoin::taproot::LeafVersion impl core::cmp::PartialEq for bitcoin::taproot::NodeInfo @@ -1833,6 +1849,11 @@ impl core::convert::From for bitcoin::sigh impl core::convert::From for bitcoin::sighash::TaprootError impl core::convert::From for bitcoin::sighash::TaprootError impl core::convert::From for bitcoin::psbt::SignError +impl core::convert::From for bitcoin::taproot::TaprootError +impl core::convert::From for bitcoin::taproot::TaprootError +impl core::convert::From for bitcoin::taproot::TaprootBuilderError +impl core::convert::From for bitcoin::taproot::TaprootError +impl core::convert::From for bitcoin::taproot::TaprootError impl core::convert::From for bitcoin::taproot::TapNodeHash impl core::convert::From for bitcoin::taproot::serialized_signature::SerializedSignature impl core::convert::From for bitcoin::taproot::TapNodeHash @@ -1903,6 +1924,10 @@ impl core::convert::From for bitcoin::sighash::Taproo impl core::convert::From for bitcoin::sign_message::MessageSignatureError impl core::convert::From for bitcoin::taproot::HiddenNodesError impl core::convert::From for bitcoin::taproot::IncompleteBuilderError +impl core::convert::From for bitcoin::taproot::InvalidControlBlockSizeError +impl core::convert::From for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::convert::From for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::convert::From for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::convert::From for bitcoin::taproot::SigFromSliceError impl core::convert::From for bitcoin::taproot::TaprootBuilderError impl core::convert::From for bitcoin::taproot::TaprootError @@ -2039,6 +2064,10 @@ impl core::error::Error for bitcoin::sighash::TaprootError impl core::error::Error for bitcoin::sign_message::MessageSignatureError impl core::error::Error for bitcoin::taproot::HiddenNodesError impl core::error::Error for bitcoin::taproot::IncompleteBuilderError +impl core::error::Error for bitcoin::taproot::InvalidControlBlockSizeError +impl core::error::Error for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::error::Error for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::error::Error for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::error::Error for bitcoin::taproot::SigFromSliceError impl core::error::Error for bitcoin::taproot::TaprootBuilderError impl core::error::Error for bitcoin::taproot::TaprootError @@ -2223,6 +2252,10 @@ impl core::fmt::Debug for bitcoin::taproot::ControlBlock impl core::fmt::Debug for bitcoin::taproot::FutureLeafVersion impl core::fmt::Debug for bitcoin::taproot::HiddenNodesError impl core::fmt::Debug for bitcoin::taproot::IncompleteBuilderError +impl core::fmt::Debug for bitcoin::taproot::InvalidControlBlockSizeError +impl core::fmt::Debug for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::fmt::Debug for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::fmt::Debug for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::fmt::Debug for bitcoin::taproot::LeafNode impl core::fmt::Debug for bitcoin::taproot::LeafVersion impl core::fmt::Debug for bitcoin::taproot::NodeInfo @@ -2358,6 +2391,10 @@ impl core::fmt::Display for bitcoin::sign_message::MessageSignatureError impl core::fmt::Display for bitcoin::taproot::FutureLeafVersion impl core::fmt::Display for bitcoin::taproot::HiddenNodesError impl core::fmt::Display for bitcoin::taproot::IncompleteBuilderError +impl core::fmt::Display for bitcoin::taproot::InvalidControlBlockSizeError +impl core::fmt::Display for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::fmt::Display for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::fmt::Display for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::fmt::Display for bitcoin::taproot::LeafVersion impl core::fmt::Display for bitcoin::taproot::SigFromSliceError impl core::fmt::Display for bitcoin::taproot::TapLeafHash @@ -2810,6 +2847,10 @@ impl core::marker::Freeze for bitcoin::taproot::ControlBlock impl core::marker::Freeze for bitcoin::taproot::FutureLeafVersion impl core::marker::Freeze for bitcoin::taproot::HiddenNodesError impl core::marker::Freeze for bitcoin::taproot::IncompleteBuilderError +impl core::marker::Freeze for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::Freeze for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::Freeze for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::Freeze for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::Freeze for bitcoin::taproot::LeafNode impl core::marker::Freeze for bitcoin::taproot::LeafVersion impl core::marker::Freeze for bitcoin::taproot::NodeInfo @@ -3015,6 +3056,10 @@ impl core::marker::Send for bitcoin::taproot::ControlBlock impl core::marker::Send for bitcoin::taproot::FutureLeafVersion impl core::marker::Send for bitcoin::taproot::HiddenNodesError impl core::marker::Send for bitcoin::taproot::IncompleteBuilderError +impl core::marker::Send for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::Send for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::Send for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::Send for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::Send for bitcoin::taproot::LeafNode impl core::marker::Send for bitcoin::taproot::LeafVersion impl core::marker::Send for bitcoin::taproot::NodeInfo @@ -3211,6 +3256,10 @@ impl core::marker::StructuralPartialEq for bitcoin::taproot::ControlBlock impl core::marker::StructuralPartialEq for bitcoin::taproot::FutureLeafVersion impl core::marker::StructuralPartialEq for bitcoin::taproot::HiddenNodesError impl core::marker::StructuralPartialEq for bitcoin::taproot::IncompleteBuilderError +impl core::marker::StructuralPartialEq for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::StructuralPartialEq for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::StructuralPartialEq for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::StructuralPartialEq for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::StructuralPartialEq for bitcoin::taproot::LeafNode impl core::marker::StructuralPartialEq for bitcoin::taproot::LeafVersion impl core::marker::StructuralPartialEq for bitcoin::taproot::SigFromSliceError @@ -3412,6 +3461,10 @@ impl core::marker::Sync for bitcoin::taproot::ControlBlock impl core::marker::Sync for bitcoin::taproot::FutureLeafVersion impl core::marker::Sync for bitcoin::taproot::HiddenNodesError impl core::marker::Sync for bitcoin::taproot::IncompleteBuilderError +impl core::marker::Sync for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::Sync for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::Sync for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::Sync for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::Sync for bitcoin::taproot::LeafNode impl core::marker::Sync for bitcoin::taproot::LeafVersion impl core::marker::Sync for bitcoin::taproot::NodeInfo @@ -3617,6 +3670,10 @@ impl core::marker::Unpin for bitcoin::taproot::ControlBlock impl core::marker::Unpin for bitcoin::taproot::FutureLeafVersion impl core::marker::Unpin for bitcoin::taproot::HiddenNodesError impl core::marker::Unpin for bitcoin::taproot::IncompleteBuilderError +impl core::marker::Unpin for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::Unpin for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::Unpin for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::Unpin for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::Unpin for bitcoin::taproot::LeafNode impl core::marker::Unpin for bitcoin::taproot::LeafVersion impl core::marker::Unpin for bitcoin::taproot::NodeInfo @@ -3850,6 +3907,10 @@ impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::ControlBlock impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::FutureLeafVersion impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::HiddenNodesError impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::IncompleteBuilderError +impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::InvalidControlBlockSizeError +impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::LeafNode impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::LeafVersion impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::NodeInfo @@ -4051,6 +4112,10 @@ impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::ControlBlock impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::FutureLeafVersion impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::HiddenNodesError impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::IncompleteBuilderError +impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::InvalidControlBlockSizeError +impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::LeafNode impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::LeafVersion impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::NodeInfo @@ -5357,15 +5422,15 @@ pub bitcoin::taproot::Signature::signature: secp256k1::schnorr::Signature pub bitcoin::taproot::TapLeaf::Hidden(bitcoin::taproot::TapNodeHash) pub bitcoin::taproot::TapLeaf::Script(bitcoin::blockdata::script::ScriptBuf, bitcoin::taproot::LeafVersion) pub bitcoin::taproot::TaprootBuilderError::EmptyTree -pub bitcoin::taproot::TaprootBuilderError::InvalidMerkleTreeDepth(usize) +pub bitcoin::taproot::TaprootBuilderError::InvalidMerkleTreeDepth(bitcoin::taproot::InvalidMerkleTreeDepthError) pub bitcoin::taproot::TaprootBuilderError::NodeNotInDfsOrder pub bitcoin::taproot::TaprootBuilderError::OverCompleteTree pub bitcoin::taproot::TaprootError::EmptyTree -pub bitcoin::taproot::TaprootError::InvalidControlBlockSize(usize) +pub bitcoin::taproot::TaprootError::InvalidControlBlockSize(bitcoin::taproot::InvalidControlBlockSizeError) pub bitcoin::taproot::TaprootError::InvalidInternalKey(secp256k1::Error) -pub bitcoin::taproot::TaprootError::InvalidMerkleBranchSize(usize) -pub bitcoin::taproot::TaprootError::InvalidMerkleTreeDepth(usize) -pub bitcoin::taproot::TaprootError::InvalidTaprootLeafVersion(u8) +pub bitcoin::taproot::TaprootError::InvalidMerkleBranchSize(bitcoin::taproot::InvalidMerkleBranchSizeError) +pub bitcoin::taproot::TaprootError::InvalidMerkleTreeDepth(bitcoin::taproot::InvalidMerkleTreeDepthError) +pub bitcoin::taproot::TaprootError::InvalidTaprootLeafVersion(bitcoin::taproot::InvalidTaprootLeafVersionError) pub bitcoin::transaction::IndexOutOfBoundsError::index: usize pub bitcoin::transaction::IndexOutOfBoundsError::length: usize pub bitcoin::transaction::OutPoint::txid: bitcoin::blockdata::transaction::Txid @@ -8975,6 +9040,26 @@ pub fn bitcoin::taproot::IncompleteBuilderError::fmt(&self, f: &mut core::fmt::F pub fn bitcoin::taproot::IncompleteBuilderError::from(never: core::convert::Infallible) -> Self pub fn bitcoin::taproot::IncompleteBuilderError::into_builder(self) -> bitcoin::taproot::TaprootBuilder pub fn bitcoin::taproot::IncompleteBuilderError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)> +pub fn bitcoin::taproot::InvalidControlBlockSizeError::clone(&self) -> bitcoin::taproot::InvalidControlBlockSizeError +pub fn bitcoin::taproot::InvalidControlBlockSizeError::eq(&self, other: &bitcoin::taproot::InvalidControlBlockSizeError) -> bool +pub fn bitcoin::taproot::InvalidControlBlockSizeError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::InvalidControlBlockSizeError::from(never: core::convert::Infallible) -> Self +pub fn bitcoin::taproot::InvalidControlBlockSizeError::invalid_control_block_size(&self) -> usize +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::clone(&self) -> bitcoin::taproot::InvalidMerkleBranchSizeError +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::eq(&self, other: &bitcoin::taproot::InvalidMerkleBranchSizeError) -> bool +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::from(never: core::convert::Infallible) -> Self +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::invalid_merkle_branch_size(&self) -> usize +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::clone(&self) -> bitcoin::taproot::InvalidMerkleTreeDepthError +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::eq(&self, other: &bitcoin::taproot::InvalidMerkleTreeDepthError) -> bool +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::from(never: core::convert::Infallible) -> Self +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::invalid_merkle_tree_depth(&self) -> usize +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::clone(&self) -> bitcoin::taproot::InvalidTaprootLeafVersionError +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::eq(&self, other: &bitcoin::taproot::InvalidTaprootLeafVersionError) -> bool +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::from(never: core::convert::Infallible) -> Self +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::invalid_leaf_version(&self) -> u8 pub fn bitcoin::taproot::LeafNode::clone(&self) -> bitcoin::taproot::LeafNode pub fn bitcoin::taproot::LeafNode::cmp(&self, other: &bitcoin::taproot::LeafNode) -> core::cmp::Ordering pub fn bitcoin::taproot::LeafNode::depth(&self) -> u8 @@ -8997,7 +9082,7 @@ pub fn bitcoin::taproot::LeafVersion::clone(&self) -> bitcoin::taproot::LeafVers pub fn bitcoin::taproot::LeafVersion::cmp(&self, other: &bitcoin::taproot::LeafVersion) -> core::cmp::Ordering pub fn bitcoin::taproot::LeafVersion::eq(&self, other: &bitcoin::taproot::LeafVersion) -> bool pub fn bitcoin::taproot::LeafVersion::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn bitcoin::taproot::LeafVersion::from_consensus(version: u8) -> core::result::Result +pub fn bitcoin::taproot::LeafVersion::from_consensus(version: u8) -> core::result::Result pub fn bitcoin::taproot::LeafVersion::hash<__H: core::hash::Hasher>(&self, state: &mut __H) pub fn bitcoin::taproot::LeafVersion::partial_cmp(&self, other: &bitcoin::taproot::LeafVersion) -> core::option::Option pub fn bitcoin::taproot::LeafVersion::to_consensus(self) -> u8 @@ -9187,11 +9272,16 @@ pub fn bitcoin::taproot::TaprootBuilder::with_huffman_tree(script_weights: I) pub fn bitcoin::taproot::TaprootBuilderError::clone(&self) -> bitcoin::taproot::TaprootBuilderError pub fn bitcoin::taproot::TaprootBuilderError::eq(&self, other: &bitcoin::taproot::TaprootBuilderError) -> bool pub fn bitcoin::taproot::TaprootBuilderError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::TaprootBuilderError::from(e: bitcoin::taproot::InvalidMerkleTreeDepthError) -> Self pub fn bitcoin::taproot::TaprootBuilderError::from(never: core::convert::Infallible) -> Self pub fn bitcoin::taproot::TaprootBuilderError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)> pub fn bitcoin::taproot::TaprootError::clone(&self) -> bitcoin::taproot::TaprootError pub fn bitcoin::taproot::TaprootError::eq(&self, other: &bitcoin::taproot::TaprootError) -> bool pub fn bitcoin::taproot::TaprootError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::TaprootError::from(e: bitcoin::taproot::InvalidControlBlockSizeError) -> Self +pub fn bitcoin::taproot::TaprootError::from(e: bitcoin::taproot::InvalidMerkleBranchSizeError) -> Self +pub fn bitcoin::taproot::TaprootError::from(e: bitcoin::taproot::InvalidMerkleTreeDepthError) -> Self +pub fn bitcoin::taproot::TaprootError::from(e: bitcoin::taproot::InvalidTaprootLeafVersionError) -> Self pub fn bitcoin::taproot::TaprootError::from(never: core::convert::Infallible) -> Self pub fn bitcoin::taproot::TaprootError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)> pub fn bitcoin::taproot::TaprootSpendInfo::clone(&self) -> bitcoin::taproot::TaprootSpendInfo @@ -9746,6 +9836,10 @@ pub struct bitcoin::sighash::TapSighashTag pub struct bitcoin::sign_message::MessageSignature pub struct bitcoin::taproot::ControlBlock pub struct bitcoin::taproot::FutureLeafVersion(_) +pub struct bitcoin::taproot::InvalidControlBlockSizeError(_) +pub struct bitcoin::taproot::InvalidMerkleBranchSizeError(_) +pub struct bitcoin::taproot::InvalidMerkleTreeDepthError(_) +pub struct bitcoin::taproot::InvalidTaprootLeafVersionError(_) pub struct bitcoin::taproot::LeafNode pub struct bitcoin::taproot::LeafNodes<'a> pub struct bitcoin::taproot::NodeInfo @@ -9964,7 +10058,7 @@ pub type bitcoin::taproot::TapTweakHash::Engine = >::Output pub type bitcoin::taproot::merkle_branch::IntoIter::Item = bitcoin::taproot::TapNodeHash -pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::Error = bitcoin::taproot::TaprootError +pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::Error = bitcoin::taproot::InvalidMerkleTreeDepthError pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::IntoIter = bitcoin::taproot::merkle_branch::IntoIter pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::Item = bitcoin::taproot::TapNodeHash pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::Target = [bitcoin::taproot::TapNodeHash] diff --git a/api/bitcoin/no-features.txt b/api/bitcoin/no-features.txt index 7adcdf7dc..7be0bae36 100644 --- a/api/bitcoin/no-features.txt +++ b/api/bitcoin/no-features.txt @@ -349,6 +349,10 @@ impl bitcoin::taproot::ControlBlock impl bitcoin::taproot::FutureLeafVersion impl bitcoin::taproot::HiddenNodesError impl bitcoin::taproot::IncompleteBuilderError +impl bitcoin::taproot::InvalidControlBlockSizeError +impl bitcoin::taproot::InvalidMerkleBranchSizeError +impl bitcoin::taproot::InvalidMerkleTreeDepthError +impl bitcoin::taproot::InvalidTaprootLeafVersionError impl bitcoin::taproot::LeafNode impl bitcoin::taproot::LeafVersion impl bitcoin::taproot::NodeInfo @@ -586,6 +590,10 @@ impl core::clone::Clone for bitcoin::taproot::ControlBlock impl core::clone::Clone for bitcoin::taproot::FutureLeafVersion impl core::clone::Clone for bitcoin::taproot::HiddenNodesError impl core::clone::Clone for bitcoin::taproot::IncompleteBuilderError +impl core::clone::Clone for bitcoin::taproot::InvalidControlBlockSizeError +impl core::clone::Clone for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::clone::Clone for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::clone::Clone for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::clone::Clone for bitcoin::taproot::LeafNode impl core::clone::Clone for bitcoin::taproot::LeafVersion impl core::clone::Clone for bitcoin::taproot::NodeInfo @@ -755,6 +763,10 @@ impl core::cmp::Eq for bitcoin::taproot::ControlBlock impl core::cmp::Eq for bitcoin::taproot::FutureLeafVersion impl core::cmp::Eq for bitcoin::taproot::HiddenNodesError impl core::cmp::Eq for bitcoin::taproot::IncompleteBuilderError +impl core::cmp::Eq for bitcoin::taproot::InvalidControlBlockSizeError +impl core::cmp::Eq for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::cmp::Eq for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::cmp::Eq for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::cmp::Eq for bitcoin::taproot::LeafNode impl core::cmp::Eq for bitcoin::taproot::LeafVersion impl core::cmp::Eq for bitcoin::taproot::NodeInfo @@ -1007,6 +1019,10 @@ impl core::cmp::PartialEq for bitcoin::taproot::ControlBlock impl core::cmp::PartialEq for bitcoin::taproot::FutureLeafVersion impl core::cmp::PartialEq for bitcoin::taproot::HiddenNodesError impl core::cmp::PartialEq for bitcoin::taproot::IncompleteBuilderError +impl core::cmp::PartialEq for bitcoin::taproot::InvalidControlBlockSizeError +impl core::cmp::PartialEq for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::cmp::PartialEq for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::cmp::PartialEq for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::cmp::PartialEq for bitcoin::taproot::LeafNode impl core::cmp::PartialEq for bitcoin::taproot::LeafVersion impl core::cmp::PartialEq for bitcoin::taproot::NodeInfo @@ -1669,6 +1685,11 @@ impl core::convert::From for bitcoin::sigh impl core::convert::From for bitcoin::sighash::TaprootError impl core::convert::From for bitcoin::sighash::TaprootError impl core::convert::From for bitcoin::psbt::SignError +impl core::convert::From for bitcoin::taproot::TaprootError +impl core::convert::From for bitcoin::taproot::TaprootError +impl core::convert::From for bitcoin::taproot::TaprootBuilderError +impl core::convert::From for bitcoin::taproot::TaprootError +impl core::convert::From for bitcoin::taproot::TaprootError impl core::convert::From for bitcoin::taproot::TapNodeHash impl core::convert::From for bitcoin::taproot::serialized_signature::SerializedSignature impl core::convert::From for bitcoin::taproot::TapNodeHash @@ -1738,6 +1759,10 @@ impl core::convert::From for bitcoin::sighash::Prevou impl core::convert::From for bitcoin::sighash::TaprootError impl core::convert::From for bitcoin::taproot::HiddenNodesError impl core::convert::From for bitcoin::taproot::IncompleteBuilderError +impl core::convert::From for bitcoin::taproot::InvalidControlBlockSizeError +impl core::convert::From for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::convert::From for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::convert::From for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::convert::From for bitcoin::taproot::SigFromSliceError impl core::convert::From for bitcoin::taproot::TaprootBuilderError impl core::convert::From for bitcoin::taproot::TaprootError @@ -1954,6 +1979,10 @@ impl core::fmt::Debug for bitcoin::taproot::ControlBlock impl core::fmt::Debug for bitcoin::taproot::FutureLeafVersion impl core::fmt::Debug for bitcoin::taproot::HiddenNodesError impl core::fmt::Debug for bitcoin::taproot::IncompleteBuilderError +impl core::fmt::Debug for bitcoin::taproot::InvalidControlBlockSizeError +impl core::fmt::Debug for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::fmt::Debug for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::fmt::Debug for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::fmt::Debug for bitcoin::taproot::LeafNode impl core::fmt::Debug for bitcoin::taproot::LeafVersion impl core::fmt::Debug for bitcoin::taproot::NodeInfo @@ -2086,6 +2115,10 @@ impl core::fmt::Display for bitcoin::sighash::TaprootError impl core::fmt::Display for bitcoin::taproot::FutureLeafVersion impl core::fmt::Display for bitcoin::taproot::HiddenNodesError impl core::fmt::Display for bitcoin::taproot::IncompleteBuilderError +impl core::fmt::Display for bitcoin::taproot::InvalidControlBlockSizeError +impl core::fmt::Display for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::fmt::Display for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::fmt::Display for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::fmt::Display for bitcoin::taproot::LeafVersion impl core::fmt::Display for bitcoin::taproot::SigFromSliceError impl core::fmt::Display for bitcoin::taproot::TapLeafHash @@ -2497,6 +2530,10 @@ impl core::marker::Freeze for bitcoin::taproot::ControlBlock impl core::marker::Freeze for bitcoin::taproot::FutureLeafVersion impl core::marker::Freeze for bitcoin::taproot::HiddenNodesError impl core::marker::Freeze for bitcoin::taproot::IncompleteBuilderError +impl core::marker::Freeze for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::Freeze for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::Freeze for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::Freeze for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::Freeze for bitcoin::taproot::LeafNode impl core::marker::Freeze for bitcoin::taproot::LeafVersion impl core::marker::Freeze for bitcoin::taproot::NodeInfo @@ -2674,6 +2711,10 @@ impl core::marker::Send for bitcoin::taproot::ControlBlock impl core::marker::Send for bitcoin::taproot::FutureLeafVersion impl core::marker::Send for bitcoin::taproot::HiddenNodesError impl core::marker::Send for bitcoin::taproot::IncompleteBuilderError +impl core::marker::Send for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::Send for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::Send for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::Send for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::Send for bitcoin::taproot::LeafNode impl core::marker::Send for bitcoin::taproot::LeafVersion impl core::marker::Send for bitcoin::taproot::NodeInfo @@ -2842,6 +2883,10 @@ impl core::marker::StructuralPartialEq for bitcoin::taproot::ControlBlock impl core::marker::StructuralPartialEq for bitcoin::taproot::FutureLeafVersion impl core::marker::StructuralPartialEq for bitcoin::taproot::HiddenNodesError impl core::marker::StructuralPartialEq for bitcoin::taproot::IncompleteBuilderError +impl core::marker::StructuralPartialEq for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::StructuralPartialEq for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::StructuralPartialEq for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::StructuralPartialEq for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::StructuralPartialEq for bitcoin::taproot::LeafNode impl core::marker::StructuralPartialEq for bitcoin::taproot::LeafVersion impl core::marker::StructuralPartialEq for bitcoin::taproot::SigFromSliceError @@ -3015,6 +3060,10 @@ impl core::marker::Sync for bitcoin::taproot::ControlBlock impl core::marker::Sync for bitcoin::taproot::FutureLeafVersion impl core::marker::Sync for bitcoin::taproot::HiddenNodesError impl core::marker::Sync for bitcoin::taproot::IncompleteBuilderError +impl core::marker::Sync for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::Sync for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::Sync for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::Sync for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::Sync for bitcoin::taproot::LeafNode impl core::marker::Sync for bitcoin::taproot::LeafVersion impl core::marker::Sync for bitcoin::taproot::NodeInfo @@ -3192,6 +3241,10 @@ impl core::marker::Unpin for bitcoin::taproot::ControlBlock impl core::marker::Unpin for bitcoin::taproot::FutureLeafVersion impl core::marker::Unpin for bitcoin::taproot::HiddenNodesError impl core::marker::Unpin for bitcoin::taproot::IncompleteBuilderError +impl core::marker::Unpin for bitcoin::taproot::InvalidControlBlockSizeError +impl core::marker::Unpin for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::marker::Unpin for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::marker::Unpin for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::marker::Unpin for bitcoin::taproot::LeafNode impl core::marker::Unpin for bitcoin::taproot::LeafVersion impl core::marker::Unpin for bitcoin::taproot::NodeInfo @@ -3397,6 +3450,10 @@ impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::ControlBlock impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::FutureLeafVersion impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::HiddenNodesError impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::IncompleteBuilderError +impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::InvalidControlBlockSizeError +impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::LeafNode impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::LeafVersion impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::taproot::NodeInfo @@ -3570,6 +3627,10 @@ impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::ControlBlock impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::FutureLeafVersion impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::HiddenNodesError impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::IncompleteBuilderError +impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::InvalidControlBlockSizeError +impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::InvalidMerkleBranchSizeError +impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::InvalidMerkleTreeDepthError +impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::InvalidTaprootLeafVersionError impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::LeafNode impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::LeafVersion impl core::panic::unwind_safe::UnwindSafe for bitcoin::taproot::NodeInfo @@ -4740,15 +4801,15 @@ pub bitcoin::taproot::Signature::signature: secp256k1::schnorr::Signature pub bitcoin::taproot::TapLeaf::Hidden(bitcoin::taproot::TapNodeHash) pub bitcoin::taproot::TapLeaf::Script(bitcoin::blockdata::script::ScriptBuf, bitcoin::taproot::LeafVersion) pub bitcoin::taproot::TaprootBuilderError::EmptyTree -pub bitcoin::taproot::TaprootBuilderError::InvalidMerkleTreeDepth(usize) +pub bitcoin::taproot::TaprootBuilderError::InvalidMerkleTreeDepth(bitcoin::taproot::InvalidMerkleTreeDepthError) pub bitcoin::taproot::TaprootBuilderError::NodeNotInDfsOrder pub bitcoin::taproot::TaprootBuilderError::OverCompleteTree pub bitcoin::taproot::TaprootError::EmptyTree -pub bitcoin::taproot::TaprootError::InvalidControlBlockSize(usize) +pub bitcoin::taproot::TaprootError::InvalidControlBlockSize(bitcoin::taproot::InvalidControlBlockSizeError) pub bitcoin::taproot::TaprootError::InvalidInternalKey(secp256k1::Error) -pub bitcoin::taproot::TaprootError::InvalidMerkleBranchSize(usize) -pub bitcoin::taproot::TaprootError::InvalidMerkleTreeDepth(usize) -pub bitcoin::taproot::TaprootError::InvalidTaprootLeafVersion(u8) +pub bitcoin::taproot::TaprootError::InvalidMerkleBranchSize(bitcoin::taproot::InvalidMerkleBranchSizeError) +pub bitcoin::taproot::TaprootError::InvalidMerkleTreeDepth(bitcoin::taproot::InvalidMerkleTreeDepthError) +pub bitcoin::taproot::TaprootError::InvalidTaprootLeafVersion(bitcoin::taproot::InvalidTaprootLeafVersionError) pub bitcoin::transaction::IndexOutOfBoundsError::index: usize pub bitcoin::transaction::IndexOutOfBoundsError::length: usize pub bitcoin::transaction::OutPoint::txid: bitcoin::blockdata::transaction::Txid @@ -8087,6 +8148,26 @@ pub fn bitcoin::taproot::IncompleteBuilderError::eq(&self, other: &bitcoin::tapr pub fn bitcoin::taproot::IncompleteBuilderError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result pub fn bitcoin::taproot::IncompleteBuilderError::from(never: core::convert::Infallible) -> Self pub fn bitcoin::taproot::IncompleteBuilderError::into_builder(self) -> bitcoin::taproot::TaprootBuilder +pub fn bitcoin::taproot::InvalidControlBlockSizeError::clone(&self) -> bitcoin::taproot::InvalidControlBlockSizeError +pub fn bitcoin::taproot::InvalidControlBlockSizeError::eq(&self, other: &bitcoin::taproot::InvalidControlBlockSizeError) -> bool +pub fn bitcoin::taproot::InvalidControlBlockSizeError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::InvalidControlBlockSizeError::from(never: core::convert::Infallible) -> Self +pub fn bitcoin::taproot::InvalidControlBlockSizeError::invalid_control_block_size(&self) -> usize +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::clone(&self) -> bitcoin::taproot::InvalidMerkleBranchSizeError +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::eq(&self, other: &bitcoin::taproot::InvalidMerkleBranchSizeError) -> bool +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::from(never: core::convert::Infallible) -> Self +pub fn bitcoin::taproot::InvalidMerkleBranchSizeError::invalid_merkle_branch_size(&self) -> usize +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::clone(&self) -> bitcoin::taproot::InvalidMerkleTreeDepthError +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::eq(&self, other: &bitcoin::taproot::InvalidMerkleTreeDepthError) -> bool +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::from(never: core::convert::Infallible) -> Self +pub fn bitcoin::taproot::InvalidMerkleTreeDepthError::invalid_merkle_tree_depth(&self) -> usize +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::clone(&self) -> bitcoin::taproot::InvalidTaprootLeafVersionError +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::eq(&self, other: &bitcoin::taproot::InvalidTaprootLeafVersionError) -> bool +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::from(never: core::convert::Infallible) -> Self +pub fn bitcoin::taproot::InvalidTaprootLeafVersionError::invalid_leaf_version(&self) -> u8 pub fn bitcoin::taproot::LeafNode::clone(&self) -> bitcoin::taproot::LeafNode pub fn bitcoin::taproot::LeafNode::cmp(&self, other: &bitcoin::taproot::LeafNode) -> core::cmp::Ordering pub fn bitcoin::taproot::LeafNode::depth(&self) -> u8 @@ -8109,7 +8190,7 @@ pub fn bitcoin::taproot::LeafVersion::clone(&self) -> bitcoin::taproot::LeafVers pub fn bitcoin::taproot::LeafVersion::cmp(&self, other: &bitcoin::taproot::LeafVersion) -> core::cmp::Ordering pub fn bitcoin::taproot::LeafVersion::eq(&self, other: &bitcoin::taproot::LeafVersion) -> bool pub fn bitcoin::taproot::LeafVersion::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn bitcoin::taproot::LeafVersion::from_consensus(version: u8) -> core::result::Result +pub fn bitcoin::taproot::LeafVersion::from_consensus(version: u8) -> core::result::Result pub fn bitcoin::taproot::LeafVersion::hash<__H: core::hash::Hasher>(&self, state: &mut __H) pub fn bitcoin::taproot::LeafVersion::partial_cmp(&self, other: &bitcoin::taproot::LeafVersion) -> core::option::Option pub fn bitcoin::taproot::LeafVersion::to_consensus(self) -> u8 @@ -8298,10 +8379,15 @@ pub fn bitcoin::taproot::TaprootBuilder::with_huffman_tree(script_weights: I) pub fn bitcoin::taproot::TaprootBuilderError::clone(&self) -> bitcoin::taproot::TaprootBuilderError pub fn bitcoin::taproot::TaprootBuilderError::eq(&self, other: &bitcoin::taproot::TaprootBuilderError) -> bool pub fn bitcoin::taproot::TaprootBuilderError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::TaprootBuilderError::from(e: bitcoin::taproot::InvalidMerkleTreeDepthError) -> Self pub fn bitcoin::taproot::TaprootBuilderError::from(never: core::convert::Infallible) -> Self pub fn bitcoin::taproot::TaprootError::clone(&self) -> bitcoin::taproot::TaprootError pub fn bitcoin::taproot::TaprootError::eq(&self, other: &bitcoin::taproot::TaprootError) -> bool pub fn bitcoin::taproot::TaprootError::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::taproot::TaprootError::from(e: bitcoin::taproot::InvalidControlBlockSizeError) -> Self +pub fn bitcoin::taproot::TaprootError::from(e: bitcoin::taproot::InvalidMerkleBranchSizeError) -> Self +pub fn bitcoin::taproot::TaprootError::from(e: bitcoin::taproot::InvalidMerkleTreeDepthError) -> Self +pub fn bitcoin::taproot::TaprootError::from(e: bitcoin::taproot::InvalidTaprootLeafVersionError) -> Self pub fn bitcoin::taproot::TaprootError::from(never: core::convert::Infallible) -> Self pub fn bitcoin::taproot::TaprootSpendInfo::clone(&self) -> bitcoin::taproot::TaprootSpendInfo pub fn bitcoin::taproot::TaprootSpendInfo::cmp(&self, other: &bitcoin::taproot::TaprootSpendInfo) -> core::cmp::Ordering @@ -8824,6 +8910,10 @@ pub struct bitcoin::sighash::TapSighash(_) pub struct bitcoin::sighash::TapSighashTag pub struct bitcoin::taproot::ControlBlock pub struct bitcoin::taproot::FutureLeafVersion(_) +pub struct bitcoin::taproot::InvalidControlBlockSizeError(_) +pub struct bitcoin::taproot::InvalidMerkleBranchSizeError(_) +pub struct bitcoin::taproot::InvalidMerkleTreeDepthError(_) +pub struct bitcoin::taproot::InvalidTaprootLeafVersionError(_) pub struct bitcoin::taproot::LeafNode pub struct bitcoin::taproot::LeafNodes<'a> pub struct bitcoin::taproot::NodeInfo @@ -9036,7 +9126,7 @@ pub type bitcoin::taproot::TapTweakHash::Engine = >::Output pub type bitcoin::taproot::merkle_branch::IntoIter::Item = bitcoin::taproot::TapNodeHash -pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::Error = bitcoin::taproot::TaprootError +pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::Error = bitcoin::taproot::InvalidMerkleTreeDepthError pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::IntoIter = bitcoin::taproot::merkle_branch::IntoIter pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::Item = bitcoin::taproot::TapNodeHash pub type bitcoin::taproot::merkle_branch::TaprootMerkleBranch::Target = [bitcoin::taproot::TapNodeHash] diff --git a/bitcoin/src/taproot/merkle_branch.rs b/bitcoin/src/taproot/merkle_branch.rs index 0e5732669..ad172c70d 100644 --- a/bitcoin/src/taproot/merkle_branch.rs +++ b/bitcoin/src/taproot/merkle_branch.rs @@ -5,8 +5,8 @@ use hashes::Hash; use super::{ - TapNodeHash, TaprootBuilderError, TaprootError, TAPROOT_CONTROL_MAX_NODE_COUNT, - TAPROOT_CONTROL_NODE_SIZE, + InvalidMerkleBranchSizeError, InvalidMerkleTreeDepthError, TapNodeHash, TaprootError, + TAPROOT_CONTROL_MAX_NODE_COUNT, TAPROOT_CONTROL_NODE_SIZE, }; use crate::prelude::*; @@ -47,9 +47,9 @@ impl TaprootMerkleBranch { /// if the number of hashes exceeds 128. pub fn decode(sl: &[u8]) -> Result { if sl.len() % TAPROOT_CONTROL_NODE_SIZE != 0 { - Err(TaprootError::InvalidMerkleBranchSize(sl.len())) + Err(InvalidMerkleBranchSizeError(sl.len()).into()) } else if sl.len() > TAPROOT_CONTROL_NODE_SIZE * TAPROOT_CONTROL_MAX_NODE_COUNT { - Err(TaprootError::InvalidMerkleTreeDepth(sl.len() / TAPROOT_CONTROL_NODE_SIZE)) + Err(InvalidMerkleTreeDepthError(sl.len() / TAPROOT_CONTROL_NODE_SIZE).into()) } else { let inner = sl .chunks_exact(TAPROOT_CONTROL_NODE_SIZE) @@ -71,9 +71,9 @@ impl TaprootMerkleBranch { #[inline] fn from_collection + Into>>( collection: T, - ) -> Result { + ) -> Result { if collection.as_ref().len() > TAPROOT_CONTROL_MAX_NODE_COUNT { - Err(TaprootError::InvalidMerkleTreeDepth(collection.as_ref().len())) + Err(InvalidMerkleTreeDepthError(collection.as_ref().len())) } else { Ok(TaprootMerkleBranch(collection.into())) } @@ -97,9 +97,9 @@ impl TaprootMerkleBranch { } /// Appends elements to proof. - pub(super) fn push(&mut self, h: TapNodeHash) -> Result<(), TaprootBuilderError> { + pub(super) fn push(&mut self, h: TapNodeHash) -> Result<(), InvalidMerkleTreeDepthError> { if self.len() >= TAPROOT_CONTROL_MAX_NODE_COUNT { - Err(TaprootBuilderError::InvalidMerkleTreeDepth(self.0.len())) + Err(InvalidMerkleTreeDepthError(self.0.len())) } else { self.0.push(h); Ok(()) @@ -119,7 +119,7 @@ impl TaprootMerkleBranch { macro_rules! impl_try_from { ($from:ty) => { impl TryFrom<$from> for TaprootMerkleBranch { - type Error = TaprootError; + type Error = InvalidMerkleTreeDepthError; /// Creates a merkle proof from list of hashes. /// diff --git a/bitcoin/src/taproot/mod.rs b/bitcoin/src/taproot/mod.rs index 74027057f..8e21cd539 100644 --- a/bitcoin/src/taproot/mod.rs +++ b/bitcoin/src/taproot/mod.rs @@ -546,7 +546,7 @@ impl TaprootBuilder { // early error on invalid depth. Though this will be checked later // while constructing TaprootMerkelBranch if depth as usize > TAPROOT_CONTROL_MAX_NODE_COUNT { - return Err(TaprootBuilderError::InvalidMerkleTreeDepth(depth as usize)); + return Err(InvalidMerkleTreeDepthError(depth as usize).into()); } // We cannot insert a leaf at a lower depth while a deeper branch is unfinished. Doing // so would mean the add_leaf/add_hidden invocations do not correspond to a DFS traversal of a @@ -1110,7 +1110,7 @@ impl ControlBlock { if sl.len() < TAPROOT_CONTROL_BASE_SIZE || (sl.len() - TAPROOT_CONTROL_BASE_SIZE) % TAPROOT_CONTROL_NODE_SIZE != 0 { - return Err(TaprootError::InvalidControlBlockSize(sl.len())); + return Err(InvalidControlBlockSizeError(sl.len()).into()); } let output_key_parity = match sl[0] & 1 { 0 => secp256k1::Parity::Even, @@ -1188,14 +1188,15 @@ impl ControlBlock { pub struct FutureLeafVersion(u8); impl FutureLeafVersion { - pub(self) fn from_consensus(version: u8) -> Result { + pub(self) fn from_consensus( + version: u8, + ) -> Result { match version { TAPROOT_LEAF_TAPSCRIPT => unreachable!( "FutureLeafVersion::from_consensus should be never called for 0xC0 value" ), - TAPROOT_ANNEX_PREFIX => - Err(TaprootError::InvalidTaprootLeafVersion(TAPROOT_ANNEX_PREFIX)), - odd if odd & 0xFE != odd => Err(TaprootError::InvalidTaprootLeafVersion(odd)), + TAPROOT_ANNEX_PREFIX => Err(InvalidTaprootLeafVersionError(TAPROOT_ANNEX_PREFIX)), + odd if odd & 0xFE != odd => Err(InvalidTaprootLeafVersionError(odd)), even => Ok(FutureLeafVersion(even)), } } @@ -1237,11 +1238,10 @@ impl LeafVersion { /// /// - If the last bit of the `version` is odd. /// - If the `version` is 0x50 ([`TAPROOT_ANNEX_PREFIX`]). - pub fn from_consensus(version: u8) -> Result { + pub fn from_consensus(version: u8) -> Result { match version { TAPROOT_LEAF_TAPSCRIPT => Ok(LeafVersion::TapScript), - TAPROOT_ANNEX_PREFIX => - Err(TaprootError::InvalidTaprootLeafVersion(TAPROOT_ANNEX_PREFIX)), + TAPROOT_ANNEX_PREFIX => Err(InvalidTaprootLeafVersionError(TAPROOT_ANNEX_PREFIX)), future => FutureLeafVersion::from_consensus(future).map(LeafVersion::Future), } } @@ -1332,7 +1332,7 @@ impl<'de> serde::Deserialize<'de> for LeafVersion { #[non_exhaustive] pub enum TaprootBuilderError { /// Merkle tree depth must not be more than 128. - InvalidMerkleTreeDepth(usize), + InvalidMerkleTreeDepth(InvalidMerkleTreeDepthError), /// Nodes must be added specified in DFS walk order. NodeNotInDfsOrder, /// Two nodes at depth 0 are not allowed. @@ -1348,13 +1348,7 @@ impl fmt::Display for TaprootBuilderError { use TaprootBuilderError::*; match *self { - InvalidMerkleTreeDepth(d) => { - write!( - f, - "Merkle Tree depth({}) must be less than {}", - d, TAPROOT_CONTROL_MAX_NODE_COUNT - ) - } + InvalidMerkleTreeDepth(ref e) => write_err!(f, "invalid Merkle tree depth"; e), NodeNotInDfsOrder => { write!(f, "add_leaf/add_hidden must be called in DFS walk order",) } @@ -1375,24 +1369,29 @@ impl std::error::Error for TaprootBuilderError { fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { use TaprootBuilderError::*; - match self { - InvalidMerkleTreeDepth(_) | NodeNotInDfsOrder | OverCompleteTree | EmptyTree => None, + match *self { + InvalidMerkleTreeDepth(ref e) => Some(e), + NodeNotInDfsOrder | OverCompleteTree | EmptyTree => None, } } } +impl From for TaprootBuilderError { + fn from(e: InvalidMerkleTreeDepthError) -> Self { Self::InvalidMerkleTreeDepth(e) } +} + /// Detailed error type for taproot utilities. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] pub enum TaprootError { /// Proof size must be a multiple of 32. - InvalidMerkleBranchSize(usize), + InvalidMerkleBranchSize(InvalidMerkleBranchSizeError), /// Merkle tree depth must not be more than 128. - InvalidMerkleTreeDepth(usize), + InvalidMerkleTreeDepth(InvalidMerkleTreeDepthError), /// The last bit of tapleaf version must be zero. - InvalidTaprootLeafVersion(u8), + InvalidTaprootLeafVersion(InvalidTaprootLeafVersionError), /// Invalid control block size. - InvalidControlBlockSize(usize), + InvalidControlBlockSize(InvalidControlBlockSizeError), /// Invalid taproot internal key. InvalidInternalKey(secp256k1::Error), /// Empty tap tree. @@ -1406,27 +1405,11 @@ impl fmt::Display for TaprootError { use TaprootError::*; match *self { - InvalidMerkleBranchSize(sz) => write!( - f, - "Merkle branch size({}) must be a multiple of {}", - sz, TAPROOT_CONTROL_NODE_SIZE - ), - InvalidMerkleTreeDepth(d) => write!( - f, - "Merkle Tree depth({}) must be less than {}", - d, TAPROOT_CONTROL_MAX_NODE_COUNT - ), - InvalidTaprootLeafVersion(v) => { - write!(f, "Leaf version({}) must have the least significant bit 0", v) - } - InvalidControlBlockSize(sz) => write!( - f, - "Control Block size({}) must be of the form 33 + 32*m where 0 <= m <= {} ", - sz, TAPROOT_CONTROL_MAX_NODE_COUNT - ), - InvalidInternalKey(ref e) => { - write_err!(f, "invalid internal x-only key"; e) - } + InvalidMerkleBranchSize(ref e) => write_err!(f, "invalid Merkle branch size"; e), + InvalidMerkleTreeDepth(ref e) => write_err!(f, "invalid Merkle tree depth"; e), + InvalidTaprootLeafVersion(ref e) => write_err!(f, "invalid Taproot leaf version"; e), + InvalidControlBlockSize(ref e) => write_err!(f, "invalid control block size"; e), + InvalidInternalKey(ref e) => write_err!(f, "invalid internal x-only key"; e), EmptyTree => write!(f, "Taproot Tree must contain at least one script"), } } @@ -1439,15 +1422,121 @@ impl std::error::Error for TaprootError { match self { InvalidInternalKey(e) => Some(e), - InvalidMerkleBranchSize(_) - | InvalidMerkleTreeDepth(_) - | InvalidTaprootLeafVersion(_) - | InvalidControlBlockSize(_) - | EmptyTree => None, + InvalidTaprootLeafVersion(ref e) => Some(e), + InvalidMerkleTreeDepth(ref e) => Some(e), + InvalidMerkleBranchSize(_) | InvalidControlBlockSize(_) | EmptyTree => None, } } } +impl From for TaprootError { + fn from(e: InvalidMerkleBranchSizeError) -> Self { Self::InvalidMerkleBranchSize(e) } +} + +impl From for TaprootError { + fn from(e: InvalidMerkleTreeDepthError) -> Self { Self::InvalidMerkleTreeDepth(e) } +} + +impl From for TaprootError { + fn from(e: InvalidTaprootLeafVersionError) -> Self { Self::InvalidTaprootLeafVersion(e) } +} + +impl From for TaprootError { + fn from(e: InvalidControlBlockSizeError) -> Self { Self::InvalidControlBlockSize(e) } +} + +/// Proof size must be a multiple of 32. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct InvalidMerkleBranchSizeError(usize); + +impl InvalidMerkleBranchSizeError { + /// Accessor for the invalid merkle branch size. + pub fn invalid_merkle_branch_size(&self) -> usize { self.0 } +} + +internals::impl_from_infallible!(InvalidMerkleBranchSizeError); + +impl fmt::Display for InvalidMerkleBranchSizeError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!( + f, + "Merkle branch size({}) must be a multiple of {}", + self.0, TAPROOT_CONTROL_NODE_SIZE + ) + } +} + +#[cfg(feature = "std")] +impl std::error::Error for InvalidMerkleBranchSizeError {} + +/// Merkle tree depth must not be more than 128. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct InvalidMerkleTreeDepthError(usize); + +impl InvalidMerkleTreeDepthError { + /// Accessor for the invalid merkle tree depth. + pub fn invalid_merkle_tree_depth(&self) -> usize { self.0 } +} + +internals::impl_from_infallible!(InvalidMerkleTreeDepthError); + +impl fmt::Display for InvalidMerkleTreeDepthError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!( + f, + "Merkle tree depth({}) must be less than {}", + self.0, TAPROOT_CONTROL_MAX_NODE_COUNT + ) + } +} + +#[cfg(feature = "std")] +impl std::error::Error for InvalidMerkleTreeDepthError {} + +/// The last bit of tapleaf version must be zero. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct InvalidTaprootLeafVersionError(u8); + +impl InvalidTaprootLeafVersionError { + /// Accessor for the invalid leaf version. + pub fn invalid_leaf_version(&self) -> u8 { self.0 } +} + +internals::impl_from_infallible!(InvalidTaprootLeafVersionError); + +impl fmt::Display for InvalidTaprootLeafVersionError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "leaf version({}) must have the least significant bit 0", self.0) + } +} + +#[cfg(feature = "std")] +impl std::error::Error for InvalidTaprootLeafVersionError {} + +/// Invalid control block size. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct InvalidControlBlockSizeError(usize); + +impl InvalidControlBlockSizeError { + /// Accessor for the invalid control block size. + pub fn invalid_control_block_size(&self) -> usize { self.0 } +} + +internals::impl_from_infallible!(InvalidControlBlockSizeError); + +impl fmt::Display for InvalidControlBlockSizeError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!( + f, + "Control Block size({}) must be of the form 33 + 32*m where 0 <= m <= {} ", + self.0, TAPROOT_CONTROL_MAX_NODE_COUNT + ) + } +} + +#[cfg(feature = "std")] +impl std::error::Error for InvalidControlBlockSizeError {} + #[cfg(test)] mod test { use core::str::FromStr;