Struct bdk_wallet::descriptor::template::Bip49Public
source · pub struct Bip49Public<K: DerivableKey<Segwitv0>>(pub K, pub Fingerprint, pub KeychainKind);
Expand description
BIP49 public template. Expands to sh(wpkh(key/{0,1}/*))
This assumes that the key used has already been derived with m/49'/0'/0'
for Mainnet or m/49'/1'/0'
for Testnet.
This template requires the parent fingerprint to populate correctly the metadata of PSBTs.
See Bip49
for a template that does the full derivation, but requires private data
for the key.
§Example
use bdk_wallet::template::Bip49Public;
let key = bitcoin::bip32::Xpub::from_str("tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L")?;
let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
let mut wallet = Wallet::create(
Bip49Public(key.clone(), fingerprint, KeychainKind::External),
Bip49Public(key, fingerprint, KeychainKind::Internal),
)
.network(Network::Testnet)
.create_wallet_no_persist()?;
assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt");
assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L/0/*))#3tka9g0q");
Tuple Fields§
§0: K
§1: Fingerprint
§2: KeychainKind
Trait Implementations§
source§impl<K: Clone + DerivableKey<Segwitv0>> Clone for Bip49Public<K>
impl<K: Clone + DerivableKey<Segwitv0>> Clone for Bip49Public<K>
source§fn clone(&self) -> Bip49Public<K>
fn clone(&self) -> Bip49Public<K>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<K: Debug + DerivableKey<Segwitv0>> Debug for Bip49Public<K>
impl<K: Debug + DerivableKey<Segwitv0>> Debug for Bip49Public<K>
source§impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip49Public<K>
impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip49Public<K>
source§fn build(
self,
network: Network
) -> Result<DescriptorTemplateOut, DescriptorError>
fn build( self, network: Network ) -> Result<DescriptorTemplateOut, DescriptorError>
Build the complete descriptor
Auto Trait Implementations§
impl<K> Freeze for Bip49Public<K>where
K: Freeze,
impl<K> RefUnwindSafe for Bip49Public<K>where
K: RefUnwindSafe,
impl<K> Send for Bip49Public<K>where
K: Send,
impl<K> Sync for Bip49Public<K>where
K: Sync,
impl<K> Unpin for Bip49Public<K>where
K: Unpin,
impl<K> UnwindSafe for Bip49Public<K>where
K: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> IntoWalletDescriptor for Twhere
T: DescriptorTemplate,
impl<T> IntoWalletDescriptor for Twhere
T: DescriptorTemplate,
source§fn into_wallet_descriptor(
self,
secp: &Secp256k1<All>,
network: Network
) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>
fn into_wallet_descriptor( self, secp: &Secp256k1<All>, network: Network ) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>
Convert to wallet descriptor