Merge rust-bitcoin/rust-bitcoin#2808: Add an `AddressData` type

b5ef7db3c0 api: Run just check-api (Tobin C. Harding)
1b40550ce8 Add an AddressData type (Tobin C. Harding)

Pull request description:

  In the 0.32.0 release we removed the `address::Payload` struct because it was deemed an implementation detail. As a byproduct of doing so we made it impossible for users to match on an enum and get the address payload (or data).

  - Add a public `AddressData` enum that holds an address' encoded data.
  - Add a conversion function to `Address` that returns the data enum.

  This patch is additive and is expected to be backported and release as a `0.32` point release.

ACKs for top commit:
  apoelstra:
    ACK b5ef7db3c0 I still feel a little partial to calling the struct "DecodedAddress" and the method "decode"...but this is good, and I do not want to bikeshed

Tree-SHA512: d97836bb2d7fc0f6e9fbba2afb30eeefefc88e7105d4765a146dd444c8397dd4d1ef4fd3e3eb925589294d46bfc8a66d33797a05dbc2131923534364424c135c
This commit is contained in:
Andrew Poelstra 2024-05-27 14:45:48 +00:00
commit 1741229526
No known key found for this signature in database
GPG Key ID: C588D63CE41B97C1
4 changed files with 119 additions and 0 deletions

View File

@ -1,6 +1,7 @@
#[non_exhaustive] pub enum bitcoin::AddressType
#[non_exhaustive] pub enum bitcoin::KnownHrp
#[non_exhaustive] pub enum bitcoin::Network
#[non_exhaustive] pub enum bitcoin::address::AddressData
#[non_exhaustive] pub enum bitcoin::address::AddressType
#[non_exhaustive] pub enum bitcoin::address::FromScriptError
#[non_exhaustive] pub enum bitcoin::address::KnownHrp
@ -539,6 +540,7 @@ impl core::clone::Clone for bitcoin::TapSighash
impl core::clone::Clone for bitcoin::TapSighashTag
impl core::clone::Clone for bitcoin::TapSighashType
impl core::clone::Clone for bitcoin::WPubkeyHash
impl core::clone::Clone for bitcoin::address::AddressData
impl core::clone::Clone for bitcoin::address::AddressType
impl core::clone::Clone for bitcoin::address::KnownHrp
impl core::clone::Clone for bitcoin::address::NetworkChecked
@ -737,6 +739,7 @@ impl core::cmp::Eq for bitcoin::TapSighash
impl core::cmp::Eq for bitcoin::TapSighashTag
impl core::cmp::Eq for bitcoin::TapSighashType
impl core::cmp::Eq for bitcoin::WPubkeyHash
impl core::cmp::Eq for bitcoin::address::AddressData
impl core::cmp::Eq for bitcoin::address::AddressType
impl core::cmp::Eq for bitcoin::address::KnownHrp
impl core::cmp::Eq for bitcoin::address::NetworkChecked
@ -931,6 +934,7 @@ impl core::cmp::Ord for bitcoin::TapSighash
impl core::cmp::Ord for bitcoin::TapSighashTag
impl core::cmp::Ord for bitcoin::TapSighashType
impl core::cmp::Ord for bitcoin::WPubkeyHash
impl core::cmp::Ord for bitcoin::address::AddressData
impl core::cmp::Ord for bitcoin::address::AddressType
impl core::cmp::Ord for bitcoin::address::KnownHrp
impl core::cmp::Ord for bitcoin::address::NetworkChecked
@ -1023,6 +1027,7 @@ impl core::cmp::PartialEq for bitcoin::TapSighash
impl core::cmp::PartialEq for bitcoin::TapSighashTag
impl core::cmp::PartialEq for bitcoin::TapSighashType
impl core::cmp::PartialEq for bitcoin::WPubkeyHash
impl core::cmp::PartialEq for bitcoin::address::AddressData
impl core::cmp::PartialEq for bitcoin::address::AddressType
impl core::cmp::PartialEq for bitcoin::address::KnownHrp
impl core::cmp::PartialEq for bitcoin::address::NetworkChecked
@ -1221,6 +1226,7 @@ impl core::cmp::PartialOrd for bitcoin::TapSighash
impl core::cmp::PartialOrd for bitcoin::TapSighashTag
impl core::cmp::PartialOrd for bitcoin::TapSighashType
impl core::cmp::PartialOrd for bitcoin::WPubkeyHash
impl core::cmp::PartialOrd for bitcoin::address::AddressData
impl core::cmp::PartialOrd for bitcoin::address::AddressType
impl core::cmp::PartialOrd for bitcoin::address::KnownHrp
impl core::cmp::PartialOrd for bitcoin::address::NetworkChecked
@ -2082,6 +2088,7 @@ impl core::fmt::Debug for bitcoin::SegwitV0Sighash
impl core::fmt::Debug for bitcoin::TapSighash
impl core::fmt::Debug for bitcoin::TapSighashType
impl core::fmt::Debug for bitcoin::WPubkeyHash
impl core::fmt::Debug for bitcoin::address::AddressData
impl core::fmt::Debug for bitcoin::address::AddressType
impl core::fmt::Debug for bitcoin::address::KnownHrp
impl core::fmt::Debug for bitcoin::address::NetworkChecked
@ -2481,6 +2488,7 @@ impl core::hash::Hash for bitcoin::TapSighash
impl core::hash::Hash for bitcoin::TapSighashTag
impl core::hash::Hash for bitcoin::TapSighashType
impl core::hash::Hash for bitcoin::WPubkeyHash
impl core::hash::Hash for bitcoin::address::AddressData
impl core::hash::Hash for bitcoin::address::AddressType
impl core::hash::Hash for bitcoin::address::KnownHrp
impl core::hash::Hash for bitcoin::address::NetworkChecked
@ -2673,6 +2681,7 @@ impl core::marker::Freeze for bitcoin::TapSighash
impl core::marker::Freeze for bitcoin::TapSighashTag
impl core::marker::Freeze for bitcoin::TapSighashType
impl core::marker::Freeze for bitcoin::WPubkeyHash
impl core::marker::Freeze for bitcoin::address::AddressData
impl core::marker::Freeze for bitcoin::address::AddressType
impl core::marker::Freeze for bitcoin::address::KnownHrp
impl core::marker::Freeze for bitcoin::address::NetworkChecked
@ -2883,6 +2892,7 @@ impl core::marker::Send for bitcoin::TapSighash
impl core::marker::Send for bitcoin::TapSighashTag
impl core::marker::Send for bitcoin::TapSighashType
impl core::marker::Send for bitcoin::WPubkeyHash
impl core::marker::Send for bitcoin::address::AddressData
impl core::marker::Send for bitcoin::address::AddressType
impl core::marker::Send for bitcoin::address::KnownHrp
impl core::marker::Send for bitcoin::address::NetworkChecked
@ -3093,6 +3103,7 @@ impl core::marker::StructuralPartialEq for bitcoin::TapSighash
impl core::marker::StructuralPartialEq for bitcoin::TapSighashTag
impl core::marker::StructuralPartialEq for bitcoin::TapSighashType
impl core::marker::StructuralPartialEq for bitcoin::WPubkeyHash
impl core::marker::StructuralPartialEq for bitcoin::address::AddressData
impl core::marker::StructuralPartialEq for bitcoin::address::AddressType
impl core::marker::StructuralPartialEq for bitcoin::address::KnownHrp
impl core::marker::StructuralPartialEq for bitcoin::address::NetworkChecked
@ -3287,6 +3298,7 @@ impl core::marker::Sync for bitcoin::TapSighash
impl core::marker::Sync for bitcoin::TapSighashTag
impl core::marker::Sync for bitcoin::TapSighashType
impl core::marker::Sync for bitcoin::WPubkeyHash
impl core::marker::Sync for bitcoin::address::AddressData
impl core::marker::Sync for bitcoin::address::AddressType
impl core::marker::Sync for bitcoin::address::KnownHrp
impl core::marker::Sync for bitcoin::address::NetworkChecked
@ -3497,6 +3509,7 @@ impl core::marker::Unpin for bitcoin::TapSighash
impl core::marker::Unpin for bitcoin::TapSighashTag
impl core::marker::Unpin for bitcoin::TapSighashType
impl core::marker::Unpin for bitcoin::WPubkeyHash
impl core::marker::Unpin for bitcoin::address::AddressData
impl core::marker::Unpin for bitcoin::address::AddressType
impl core::marker::Unpin for bitcoin::address::KnownHrp
impl core::marker::Unpin for bitcoin::address::NetworkChecked
@ -3739,6 +3752,7 @@ impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::TapSighash
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::TapSighashTag
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::TapSighashType
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::WPubkeyHash
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::address::AddressData
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::address::AddressType
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::address::KnownHrp
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::address::NetworkChecked
@ -3944,6 +3958,7 @@ impl core::panic::unwind_safe::UnwindSafe for bitcoin::TapSighash
impl core::panic::unwind_safe::UnwindSafe for bitcoin::TapSighashTag
impl core::panic::unwind_safe::UnwindSafe for bitcoin::TapSighashType
impl core::panic::unwind_safe::UnwindSafe for bitcoin::WPubkeyHash
impl core::panic::unwind_safe::UnwindSafe for bitcoin::address::AddressData
impl core::panic::unwind_safe::UnwindSafe for bitcoin::address::AddressType
impl core::panic::unwind_safe::UnwindSafe for bitcoin::address::KnownHrp
impl core::panic::unwind_safe::UnwindSafe for bitcoin::address::NetworkChecked
@ -4965,6 +4980,12 @@ pub bitcoin::WitnessVersion::V8 = 8
pub bitcoin::WitnessVersion::V9 = 9
pub bitcoin::absolute::LockTime::Blocks(bitcoin_units::locktime::absolute::Height)
pub bitcoin::absolute::LockTime::Seconds(bitcoin_units::locktime::absolute::Time)
pub bitcoin::address::AddressData::P2pkh
pub bitcoin::address::AddressData::P2pkh::pubkey_hash: bitcoin::PubkeyHash
pub bitcoin::address::AddressData::P2sh
pub bitcoin::address::AddressData::P2sh::script_hash: bitcoin::blockdata::script::ScriptHash
pub bitcoin::address::AddressData::Segwit
pub bitcoin::address::AddressData::Segwit::witness_program: bitcoin::blockdata::script::witness_program::WitnessProgram
pub bitcoin::address::AddressType::P2pkh
pub bitcoin::address::AddressType::P2sh
pub bitcoin::address::AddressType::P2tr
@ -7067,6 +7088,7 @@ pub fn bitcoin::address::Address::p2wsh(script: &bitcoin::blockdata::script::Scr
pub fn bitcoin::address::Address::pubkey_hash(&self) -> core::option::Option<bitcoin::PubkeyHash>
pub fn bitcoin::address::Address::script_hash(&self) -> core::option::Option<bitcoin::blockdata::script::ScriptHash>
pub fn bitcoin::address::Address::script_pubkey(&self) -> bitcoin::blockdata::script::ScriptBuf
pub fn bitcoin::address::Address::to_address_data(&self) -> bitcoin::address::AddressData
pub fn bitcoin::address::Address::to_qr_uri(&self) -> alloc::string::String
pub fn bitcoin::address::Address::witness_program(&self) -> core::option::Option<bitcoin::blockdata::script::witness_program::WitnessProgram>
pub fn bitcoin::address::Address<N>::serialize<S>(&self, serializer: S) -> core::result::Result<<S as serde::ser::Serializer>::Ok, <S as serde::ser::Serializer>::Error> where S: serde::ser::Serializer
@ -7083,6 +7105,12 @@ pub fn bitcoin::address::Address<bitcoin::address::NetworkUnchecked>::deserializ
pub fn bitcoin::address::Address<bitcoin::address::NetworkUnchecked>::from_str(s: &str) -> core::result::Result<bitcoin::address::Address<bitcoin::address::NetworkUnchecked>, bitcoin::address::error::ParseError>
pub fn bitcoin::address::Address<bitcoin::address::NetworkUnchecked>::is_valid_for_network(&self, n: bitcoin::network::Network) -> bool
pub fn bitcoin::address::Address<bitcoin::address::NetworkUnchecked>::require_network(self, required: bitcoin::network::Network) -> core::result::Result<bitcoin::address::Address, bitcoin::address::error::ParseError>
pub fn bitcoin::address::AddressData::clone(&self) -> bitcoin::address::AddressData
pub fn bitcoin::address::AddressData::cmp(&self, other: &bitcoin::address::AddressData) -> core::cmp::Ordering
pub fn bitcoin::address::AddressData::eq(&self, other: &bitcoin::address::AddressData) -> bool
pub fn bitcoin::address::AddressData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
pub fn bitcoin::address::AddressData::hash<__H: core::hash::Hasher>(&self, state: &mut __H)
pub fn bitcoin::address::AddressData::partial_cmp(&self, other: &bitcoin::address::AddressData) -> core::option::Option<core::cmp::Ordering>
pub fn bitcoin::address::AddressType::clone(&self) -> bitcoin::address::AddressType
pub fn bitcoin::address::AddressType::cmp(&self, other: &bitcoin::address::AddressType) -> core::cmp::Ordering
pub fn bitcoin::address::AddressType::eq(&self, other: &bitcoin::address::AddressType) -> bool

View File

@ -1,6 +1,7 @@
#[non_exhaustive] pub enum bitcoin::AddressType
#[non_exhaustive] pub enum bitcoin::KnownHrp
#[non_exhaustive] pub enum bitcoin::Network
#[non_exhaustive] pub enum bitcoin::address::AddressData
#[non_exhaustive] pub enum bitcoin::address::AddressType
#[non_exhaustive] pub enum bitcoin::address::FromScriptError
#[non_exhaustive] pub enum bitcoin::address::KnownHrp
@ -511,6 +512,7 @@ impl core::clone::Clone for bitcoin::TapSighash
impl core::clone::Clone for bitcoin::TapSighashTag
impl core::clone::Clone for bitcoin::TapSighashType
impl core::clone::Clone for bitcoin::WPubkeyHash
impl core::clone::Clone for bitcoin::address::AddressData
impl core::clone::Clone for bitcoin::address::AddressType
impl core::clone::Clone for bitcoin::address::KnownHrp
impl core::clone::Clone for bitcoin::address::NetworkChecked
@ -705,6 +707,7 @@ impl core::cmp::Eq for bitcoin::TapSighash
impl core::cmp::Eq for bitcoin::TapSighashTag
impl core::cmp::Eq for bitcoin::TapSighashType
impl core::cmp::Eq for bitcoin::WPubkeyHash
impl core::cmp::Eq for bitcoin::address::AddressData
impl core::cmp::Eq for bitcoin::address::AddressType
impl core::cmp::Eq for bitcoin::address::KnownHrp
impl core::cmp::Eq for bitcoin::address::NetworkChecked
@ -895,6 +898,7 @@ impl core::cmp::Ord for bitcoin::TapSighash
impl core::cmp::Ord for bitcoin::TapSighashTag
impl core::cmp::Ord for bitcoin::TapSighashType
impl core::cmp::Ord for bitcoin::WPubkeyHash
impl core::cmp::Ord for bitcoin::address::AddressData
impl core::cmp::Ord for bitcoin::address::AddressType
impl core::cmp::Ord for bitcoin::address::KnownHrp
impl core::cmp::Ord for bitcoin::address::NetworkChecked
@ -987,6 +991,7 @@ impl core::cmp::PartialEq for bitcoin::TapSighash
impl core::cmp::PartialEq for bitcoin::TapSighashTag
impl core::cmp::PartialEq for bitcoin::TapSighashType
impl core::cmp::PartialEq for bitcoin::WPubkeyHash
impl core::cmp::PartialEq for bitcoin::address::AddressData
impl core::cmp::PartialEq for bitcoin::address::AddressType
impl core::cmp::PartialEq for bitcoin::address::KnownHrp
impl core::cmp::PartialEq for bitcoin::address::NetworkChecked
@ -1181,6 +1186,7 @@ impl core::cmp::PartialOrd for bitcoin::TapSighash
impl core::cmp::PartialOrd for bitcoin::TapSighashTag
impl core::cmp::PartialOrd for bitcoin::TapSighashType
impl core::cmp::PartialOrd for bitcoin::WPubkeyHash
impl core::cmp::PartialOrd for bitcoin::address::AddressData
impl core::cmp::PartialOrd for bitcoin::address::AddressType
impl core::cmp::PartialOrd for bitcoin::address::KnownHrp
impl core::cmp::PartialOrd for bitcoin::address::NetworkChecked
@ -2036,6 +2042,7 @@ impl core::fmt::Debug for bitcoin::SegwitV0Sighash
impl core::fmt::Debug for bitcoin::TapSighash
impl core::fmt::Debug for bitcoin::TapSighashType
impl core::fmt::Debug for bitcoin::WPubkeyHash
impl core::fmt::Debug for bitcoin::address::AddressData
impl core::fmt::Debug for bitcoin::address::AddressType
impl core::fmt::Debug for bitcoin::address::KnownHrp
impl core::fmt::Debug for bitcoin::address::NetworkChecked
@ -2425,6 +2432,7 @@ impl core::hash::Hash for bitcoin::TapSighash
impl core::hash::Hash for bitcoin::TapSighashTag
impl core::hash::Hash for bitcoin::TapSighashType
impl core::hash::Hash for bitcoin::WPubkeyHash
impl core::hash::Hash for bitcoin::address::AddressData
impl core::hash::Hash for bitcoin::address::AddressType
impl core::hash::Hash for bitcoin::address::KnownHrp
impl core::hash::Hash for bitcoin::address::NetworkChecked
@ -2617,6 +2625,7 @@ impl core::marker::Freeze for bitcoin::TapSighash
impl core::marker::Freeze for bitcoin::TapSighashTag
impl core::marker::Freeze for bitcoin::TapSighashType
impl core::marker::Freeze for bitcoin::WPubkeyHash
impl core::marker::Freeze for bitcoin::address::AddressData
impl core::marker::Freeze for bitcoin::address::AddressType
impl core::marker::Freeze for bitcoin::address::KnownHrp
impl core::marker::Freeze for bitcoin::address::NetworkChecked
@ -2820,6 +2829,7 @@ impl core::marker::Send for bitcoin::TapSighash
impl core::marker::Send for bitcoin::TapSighashTag
impl core::marker::Send for bitcoin::TapSighashType
impl core::marker::Send for bitcoin::WPubkeyHash
impl core::marker::Send for bitcoin::address::AddressData
impl core::marker::Send for bitcoin::address::AddressType
impl core::marker::Send for bitcoin::address::KnownHrp
impl core::marker::Send for bitcoin::address::NetworkChecked
@ -3023,6 +3033,7 @@ impl core::marker::StructuralPartialEq for bitcoin::TapSighash
impl core::marker::StructuralPartialEq for bitcoin::TapSighashTag
impl core::marker::StructuralPartialEq for bitcoin::TapSighashType
impl core::marker::StructuralPartialEq for bitcoin::WPubkeyHash
impl core::marker::StructuralPartialEq for bitcoin::address::AddressData
impl core::marker::StructuralPartialEq for bitcoin::address::AddressType
impl core::marker::StructuralPartialEq for bitcoin::address::KnownHrp
impl core::marker::StructuralPartialEq for bitcoin::address::NetworkChecked
@ -3213,6 +3224,7 @@ impl core::marker::Sync for bitcoin::TapSighash
impl core::marker::Sync for bitcoin::TapSighashTag
impl core::marker::Sync for bitcoin::TapSighashType
impl core::marker::Sync for bitcoin::WPubkeyHash
impl core::marker::Sync for bitcoin::address::AddressData
impl core::marker::Sync for bitcoin::address::AddressType
impl core::marker::Sync for bitcoin::address::KnownHrp
impl core::marker::Sync for bitcoin::address::NetworkChecked
@ -3416,6 +3428,7 @@ impl core::marker::Unpin for bitcoin::TapSighash
impl core::marker::Unpin for bitcoin::TapSighashTag
impl core::marker::Unpin for bitcoin::TapSighashType
impl core::marker::Unpin for bitcoin::WPubkeyHash
impl core::marker::Unpin for bitcoin::address::AddressData
impl core::marker::Unpin for bitcoin::address::AddressType
impl core::marker::Unpin for bitcoin::address::KnownHrp
impl core::marker::Unpin for bitcoin::address::NetworkChecked
@ -3651,6 +3664,7 @@ impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::TapSighash
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::TapSighashTag
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::TapSighashType
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::WPubkeyHash
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::address::AddressData
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::address::AddressType
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::address::KnownHrp
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::address::NetworkChecked
@ -3850,6 +3864,7 @@ impl core::panic::unwind_safe::UnwindSafe for bitcoin::TapSighash
impl core::panic::unwind_safe::UnwindSafe for bitcoin::TapSighashTag
impl core::panic::unwind_safe::UnwindSafe for bitcoin::TapSighashType
impl core::panic::unwind_safe::UnwindSafe for bitcoin::WPubkeyHash
impl core::panic::unwind_safe::UnwindSafe for bitcoin::address::AddressData
impl core::panic::unwind_safe::UnwindSafe for bitcoin::address::AddressType
impl core::panic::unwind_safe::UnwindSafe for bitcoin::address::KnownHrp
impl core::panic::unwind_safe::UnwindSafe for bitcoin::address::NetworkChecked
@ -4691,6 +4706,12 @@ pub bitcoin::WitnessVersion::V8 = 8
pub bitcoin::WitnessVersion::V9 = 9
pub bitcoin::absolute::LockTime::Blocks(bitcoin_units::locktime::absolute::Height)
pub bitcoin::absolute::LockTime::Seconds(bitcoin_units::locktime::absolute::Time)
pub bitcoin::address::AddressData::P2pkh
pub bitcoin::address::AddressData::P2pkh::pubkey_hash: bitcoin::PubkeyHash
pub bitcoin::address::AddressData::P2sh
pub bitcoin::address::AddressData::P2sh::script_hash: bitcoin::blockdata::script::ScriptHash
pub bitcoin::address::AddressData::Segwit
pub bitcoin::address::AddressData::Segwit::witness_program: bitcoin::blockdata::script::witness_program::WitnessProgram
pub bitcoin::address::AddressType::P2pkh
pub bitcoin::address::AddressType::P2sh
pub bitcoin::address::AddressType::P2tr
@ -6735,6 +6756,7 @@ pub fn bitcoin::address::Address::p2wsh(script: &bitcoin::blockdata::script::Scr
pub fn bitcoin::address::Address::pubkey_hash(&self) -> core::option::Option<bitcoin::PubkeyHash>
pub fn bitcoin::address::Address::script_hash(&self) -> core::option::Option<bitcoin::blockdata::script::ScriptHash>
pub fn bitcoin::address::Address::script_pubkey(&self) -> bitcoin::blockdata::script::ScriptBuf
pub fn bitcoin::address::Address::to_address_data(&self) -> bitcoin::address::AddressData
pub fn bitcoin::address::Address::to_qr_uri(&self) -> alloc::string::String
pub fn bitcoin::address::Address::witness_program(&self) -> core::option::Option<bitcoin::blockdata::script::witness_program::WitnessProgram>
pub fn bitcoin::address::Address<V>::as_unchecked(&self) -> &bitcoin::address::Address<bitcoin::address::NetworkUnchecked>
@ -6749,6 +6771,12 @@ pub fn bitcoin::address::Address<bitcoin::address::NetworkUnchecked>::assume_che
pub fn bitcoin::address::Address<bitcoin::address::NetworkUnchecked>::from_str(s: &str) -> core::result::Result<bitcoin::address::Address<bitcoin::address::NetworkUnchecked>, bitcoin::address::error::ParseError>
pub fn bitcoin::address::Address<bitcoin::address::NetworkUnchecked>::is_valid_for_network(&self, n: bitcoin::network::Network) -> bool
pub fn bitcoin::address::Address<bitcoin::address::NetworkUnchecked>::require_network(self, required: bitcoin::network::Network) -> core::result::Result<bitcoin::address::Address, bitcoin::address::error::ParseError>
pub fn bitcoin::address::AddressData::clone(&self) -> bitcoin::address::AddressData
pub fn bitcoin::address::AddressData::cmp(&self, other: &bitcoin::address::AddressData) -> core::cmp::Ordering
pub fn bitcoin::address::AddressData::eq(&self, other: &bitcoin::address::AddressData) -> bool
pub fn bitcoin::address::AddressData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
pub fn bitcoin::address::AddressData::hash<__H: core::hash::Hasher>(&self, state: &mut __H)
pub fn bitcoin::address::AddressData::partial_cmp(&self, other: &bitcoin::address::AddressData) -> core::option::Option<core::cmp::Ordering>
pub fn bitcoin::address::AddressType::clone(&self) -> bitcoin::address::AddressType
pub fn bitcoin::address::AddressType::cmp(&self, other: &bitcoin::address::AddressType) -> core::cmp::Ordering
pub fn bitcoin::address::AddressType::eq(&self, other: &bitcoin::address::AddressType) -> bool

View File

@ -1,6 +1,7 @@
#[non_exhaustive] pub enum bitcoin::AddressType
#[non_exhaustive] pub enum bitcoin::KnownHrp
#[non_exhaustive] pub enum bitcoin::Network
#[non_exhaustive] pub enum bitcoin::address::AddressData
#[non_exhaustive] pub enum bitcoin::address::AddressType
#[non_exhaustive] pub enum bitcoin::address::FromScriptError
#[non_exhaustive] pub enum bitcoin::address::KnownHrp
@ -442,6 +443,7 @@ impl core::clone::Clone for bitcoin::TapSighash
impl core::clone::Clone for bitcoin::TapSighashTag
impl core::clone::Clone for bitcoin::TapSighashType
impl core::clone::Clone for bitcoin::WPubkeyHash
impl core::clone::Clone for bitcoin::address::AddressData
impl core::clone::Clone for bitcoin::address::AddressType
impl core::clone::Clone for bitcoin::address::KnownHrp
impl core::clone::Clone for bitcoin::address::NetworkChecked
@ -608,6 +610,7 @@ impl core::cmp::Eq for bitcoin::TapSighash
impl core::cmp::Eq for bitcoin::TapSighashTag
impl core::cmp::Eq for bitcoin::TapSighashType
impl core::cmp::Eq for bitcoin::WPubkeyHash
impl core::cmp::Eq for bitcoin::address::AddressData
impl core::cmp::Eq for bitcoin::address::AddressType
impl core::cmp::Eq for bitcoin::address::KnownHrp
impl core::cmp::Eq for bitcoin::address::NetworkChecked
@ -770,6 +773,7 @@ impl core::cmp::Ord for bitcoin::TapSighash
impl core::cmp::Ord for bitcoin::TapSighashTag
impl core::cmp::Ord for bitcoin::TapSighashType
impl core::cmp::Ord for bitcoin::WPubkeyHash
impl core::cmp::Ord for bitcoin::address::AddressData
impl core::cmp::Ord for bitcoin::address::AddressType
impl core::cmp::Ord for bitcoin::address::KnownHrp
impl core::cmp::Ord for bitcoin::address::NetworkChecked
@ -857,6 +861,7 @@ impl core::cmp::PartialEq for bitcoin::TapSighash
impl core::cmp::PartialEq for bitcoin::TapSighashTag
impl core::cmp::PartialEq for bitcoin::TapSighashType
impl core::cmp::PartialEq for bitcoin::WPubkeyHash
impl core::cmp::PartialEq for bitcoin::address::AddressData
impl core::cmp::PartialEq for bitcoin::address::AddressType
impl core::cmp::PartialEq for bitcoin::address::KnownHrp
impl core::cmp::PartialEq for bitcoin::address::NetworkChecked
@ -1023,6 +1028,7 @@ impl core::cmp::PartialOrd for bitcoin::TapSighash
impl core::cmp::PartialOrd for bitcoin::TapSighashTag
impl core::cmp::PartialOrd for bitcoin::TapSighashType
impl core::cmp::PartialOrd for bitcoin::WPubkeyHash
impl core::cmp::PartialOrd for bitcoin::address::AddressData
impl core::cmp::PartialOrd for bitcoin::address::AddressType
impl core::cmp::PartialOrd for bitcoin::address::KnownHrp
impl core::cmp::PartialOrd for bitcoin::address::NetworkChecked
@ -1796,6 +1802,7 @@ impl core::fmt::Debug for bitcoin::SegwitV0Sighash
impl core::fmt::Debug for bitcoin::TapSighash
impl core::fmt::Debug for bitcoin::TapSighashType
impl core::fmt::Debug for bitcoin::WPubkeyHash
impl core::fmt::Debug for bitcoin::address::AddressData
impl core::fmt::Debug for bitcoin::address::AddressType
impl core::fmt::Debug for bitcoin::address::KnownHrp
impl core::fmt::Debug for bitcoin::address::NetworkChecked
@ -2154,6 +2161,7 @@ impl core::hash::Hash for bitcoin::TapSighash
impl core::hash::Hash for bitcoin::TapSighashTag
impl core::hash::Hash for bitcoin::TapSighashType
impl core::hash::Hash for bitcoin::WPubkeyHash
impl core::hash::Hash for bitcoin::address::AddressData
impl core::hash::Hash for bitcoin::address::AddressType
impl core::hash::Hash for bitcoin::address::KnownHrp
impl core::hash::Hash for bitcoin::address::NetworkChecked
@ -2333,6 +2341,7 @@ impl core::marker::Freeze for bitcoin::TapSighash
impl core::marker::Freeze for bitcoin::TapSighashTag
impl core::marker::Freeze for bitcoin::TapSighashType
impl core::marker::Freeze for bitcoin::WPubkeyHash
impl core::marker::Freeze for bitcoin::address::AddressData
impl core::marker::Freeze for bitcoin::address::AddressType
impl core::marker::Freeze for bitcoin::address::KnownHrp
impl core::marker::Freeze for bitcoin::address::NetworkChecked
@ -2508,6 +2517,7 @@ impl core::marker::Send for bitcoin::TapSighash
impl core::marker::Send for bitcoin::TapSighashTag
impl core::marker::Send for bitcoin::TapSighashType
impl core::marker::Send for bitcoin::WPubkeyHash
impl core::marker::Send for bitcoin::address::AddressData
impl core::marker::Send for bitcoin::address::AddressType
impl core::marker::Send for bitcoin::address::KnownHrp
impl core::marker::Send for bitcoin::address::NetworkChecked
@ -2683,6 +2693,7 @@ impl core::marker::StructuralPartialEq for bitcoin::TapSighash
impl core::marker::StructuralPartialEq for bitcoin::TapSighashTag
impl core::marker::StructuralPartialEq for bitcoin::TapSighashType
impl core::marker::StructuralPartialEq for bitcoin::WPubkeyHash
impl core::marker::StructuralPartialEq for bitcoin::address::AddressData
impl core::marker::StructuralPartialEq for bitcoin::address::AddressType
impl core::marker::StructuralPartialEq for bitcoin::address::KnownHrp
impl core::marker::StructuralPartialEq for bitcoin::address::NetworkChecked
@ -2845,6 +2856,7 @@ impl core::marker::Sync for bitcoin::TapSighash
impl core::marker::Sync for bitcoin::TapSighashTag
impl core::marker::Sync for bitcoin::TapSighashType
impl core::marker::Sync for bitcoin::WPubkeyHash
impl core::marker::Sync for bitcoin::address::AddressData
impl core::marker::Sync for bitcoin::address::AddressType
impl core::marker::Sync for bitcoin::address::KnownHrp
impl core::marker::Sync for bitcoin::address::NetworkChecked
@ -3020,6 +3032,7 @@ impl core::marker::Unpin for bitcoin::TapSighash
impl core::marker::Unpin for bitcoin::TapSighashTag
impl core::marker::Unpin for bitcoin::TapSighashType
impl core::marker::Unpin for bitcoin::WPubkeyHash
impl core::marker::Unpin for bitcoin::address::AddressData
impl core::marker::Unpin for bitcoin::address::AddressType
impl core::marker::Unpin for bitcoin::address::KnownHrp
impl core::marker::Unpin for bitcoin::address::NetworkChecked
@ -3227,6 +3240,7 @@ impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::TapSighash
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::TapSighashTag
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::TapSighashType
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::WPubkeyHash
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::address::AddressData
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::address::AddressType
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::address::KnownHrp
impl core::panic::unwind_safe::RefUnwindSafe for bitcoin::address::NetworkChecked
@ -3398,6 +3412,7 @@ impl core::panic::unwind_safe::UnwindSafe for bitcoin::TapSighash
impl core::panic::unwind_safe::UnwindSafe for bitcoin::TapSighashTag
impl core::panic::unwind_safe::UnwindSafe for bitcoin::TapSighashType
impl core::panic::unwind_safe::UnwindSafe for bitcoin::WPubkeyHash
impl core::panic::unwind_safe::UnwindSafe for bitcoin::address::AddressData
impl core::panic::unwind_safe::UnwindSafe for bitcoin::address::AddressType
impl core::panic::unwind_safe::UnwindSafe for bitcoin::address::KnownHrp
impl core::panic::unwind_safe::UnwindSafe for bitcoin::address::NetworkChecked
@ -4205,6 +4220,12 @@ pub bitcoin::WitnessVersion::V8 = 8
pub bitcoin::WitnessVersion::V9 = 9
pub bitcoin::absolute::LockTime::Blocks(bitcoin_units::locktime::absolute::Height)
pub bitcoin::absolute::LockTime::Seconds(bitcoin_units::locktime::absolute::Time)
pub bitcoin::address::AddressData::P2pkh
pub bitcoin::address::AddressData::P2pkh::pubkey_hash: bitcoin::PubkeyHash
pub bitcoin::address::AddressData::P2sh
pub bitcoin::address::AddressData::P2sh::script_hash: bitcoin::blockdata::script::ScriptHash
pub bitcoin::address::AddressData::Segwit
pub bitcoin::address::AddressData::Segwit::witness_program: bitcoin::blockdata::script::witness_program::WitnessProgram
pub bitcoin::address::AddressType::P2pkh
pub bitcoin::address::AddressType::P2sh
pub bitcoin::address::AddressType::P2tr
@ -6106,6 +6127,7 @@ pub fn bitcoin::address::Address::p2wsh(script: &bitcoin::blockdata::script::Scr
pub fn bitcoin::address::Address::pubkey_hash(&self) -> core::option::Option<bitcoin::PubkeyHash>
pub fn bitcoin::address::Address::script_hash(&self) -> core::option::Option<bitcoin::blockdata::script::ScriptHash>
pub fn bitcoin::address::Address::script_pubkey(&self) -> bitcoin::blockdata::script::ScriptBuf
pub fn bitcoin::address::Address::to_address_data(&self) -> bitcoin::address::AddressData
pub fn bitcoin::address::Address::to_qr_uri(&self) -> alloc::string::String
pub fn bitcoin::address::Address::witness_program(&self) -> core::option::Option<bitcoin::blockdata::script::witness_program::WitnessProgram>
pub fn bitcoin::address::Address<V>::as_unchecked(&self) -> &bitcoin::address::Address<bitcoin::address::NetworkUnchecked>
@ -6120,6 +6142,12 @@ pub fn bitcoin::address::Address<bitcoin::address::NetworkUnchecked>::assume_che
pub fn bitcoin::address::Address<bitcoin::address::NetworkUnchecked>::from_str(s: &str) -> core::result::Result<bitcoin::address::Address<bitcoin::address::NetworkUnchecked>, bitcoin::address::error::ParseError>
pub fn bitcoin::address::Address<bitcoin::address::NetworkUnchecked>::is_valid_for_network(&self, n: bitcoin::network::Network) -> bool
pub fn bitcoin::address::Address<bitcoin::address::NetworkUnchecked>::require_network(self, required: bitcoin::network::Network) -> core::result::Result<bitcoin::address::Address, bitcoin::address::error::ParseError>
pub fn bitcoin::address::AddressData::clone(&self) -> bitcoin::address::AddressData
pub fn bitcoin::address::AddressData::cmp(&self, other: &bitcoin::address::AddressData) -> core::cmp::Ordering
pub fn bitcoin::address::AddressData::eq(&self, other: &bitcoin::address::AddressData) -> bool
pub fn bitcoin::address::AddressData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result
pub fn bitcoin::address::AddressData::hash<__H: core::hash::Hasher>(&self, state: &mut __H)
pub fn bitcoin::address::AddressData::partial_cmp(&self, other: &bitcoin::address::AddressData) -> core::option::Option<core::cmp::Ordering>
pub fn bitcoin::address::AddressType::clone(&self) -> bitcoin::address::AddressType
pub fn bitcoin::address::AddressType::cmp(&self, other: &bitcoin::address::AddressType) -> core::cmp::Ordering
pub fn bitcoin::address::AddressType::eq(&self, other: &bitcoin::address::AddressType) -> bool

View File

@ -235,6 +235,30 @@ impl From<Network> for KnownHrp {
fn from(n: Network) -> Self { Self::from_network(n) }
}
/// The data encoded by an `Address`.
///
/// This is the data used to encumber an output that pays to this address i.e., it is the address
/// excluding the network information.
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[non_exhaustive]
pub enum AddressData {
/// Data encoded by a P2PKH address.
P2pkh {
/// The pubkey hash used to encumber outputs to this address.
pubkey_hash: PubkeyHash
},
/// Data encoded by a P2SH address.
P2sh {
/// The script hash used to encumber outputs to this address.
script_hash: ScriptHash
},
/// Data encoded by a Segwit address.
Segwit {
/// The witness program used to encumber outputs to this address.
witness_program: WitnessProgram
},
}
/// A Bitcoin address.
///
/// ### Parsing addresses
@ -475,6 +499,17 @@ impl Address {
}
}
/// Gets the address data from this address.
pub fn to_address_data(&self) -> AddressData {
use AddressData::*;
match self.0 {
AddressInner::P2pkh { hash, network: _ } => P2pkh { pubkey_hash: hash },
AddressInner::P2sh { hash, network: _ } => P2sh { script_hash: hash },
AddressInner::Segwit { program, hrp: _ } => Segwit { witness_program: program },
}
}
/// Gets the pubkey hash for this address if this is a P2PKH address.
pub fn pubkey_hash(&self) -> Option<PubkeyHash> {
use AddressInner::*;