pub struct Bip49<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
Expand description
BIP49 template. Expands to sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))
Since there are hardened derivation steps, this template requires a private derivable key (generally a xprv
/tprv
).
See Bip49Public
for a template that can work with a xpub
/tpub
.
§Example
use bdk_wallet::template::Bip49;
let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
let mut wallet = Wallet::create(
Bip49(key.clone(), KeychainKind::External),
Bip49(key, KeychainKind::Internal),
)
.network(Network::Testnet)
.create_wallet_no_persist()?;
assert_eq!(wallet.next_unused_address(KeychainKind::External).to_string(), "2N4zkWAoGdUv4NXhSsU8DvS5MB36T8nKHEB");
assert_eq!(wallet.public_descriptor(KeychainKind::External).to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDDYr4kdnZgjjShzYNjZUZXUUtpXaofdkMaipyS8ThEh45qFmhT4hKYways7UXmg6V7het1QiFo9kf4kYUXyDvV4rHEyvSpys9pjCB3pukxi/0/*))#s9vxlc8e");
Tuple Fields§
§0: K
§1: KeychainKind
Trait Implementations§
Source§impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip49<K>
impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip49<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 Bip49<K>where
K: Freeze,
impl<K> RefUnwindSafe for Bip49<K>where
K: RefUnwindSafe,
impl<K> Send for Bip49<K>where
K: Send,
impl<K> Sync for Bip49<K>where
K: Sync,
impl<K> Unpin for Bip49<K>where
K: Unpin,
impl<K> UnwindSafe for Bip49<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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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