Struct bdk::descriptor::template::Bip86
source · pub struct Bip86<K: DerivableKey<Tap>>(pub K, pub KeychainKind);
Expand description
BIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*)
Since there are hardened derivation steps, this template requires a private derivable key (generally a xprv
/tprv
).
See Bip86Public
for a template that can work with a xpub
/tpub
.
Example
use bdk::template::Bip86;
let key = bitcoin::bip32::ExtendedPrivKey::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
let mut wallet = Wallet::new_no_persist(
Bip86(key.clone(), KeychainKind::External),
Some(Bip86(key, KeychainKind::Internal)),
Network::Testnet,
)?;
assert_eq!(wallet.get_address(New).to_string(), "tb1p5unlj09djx8xsjwe97269kqtxqpwpu2epeskgqjfk4lnf69v4tnqpp35qu");
assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "tr([c55b303f/86'/1'/0']tpubDCiHofpEs47kx358bPdJmTZHmCDqQ8qw32upCSxHrSEdeeBs2T5Mq6QMB2ukeMqhNBiyhosBvJErteVhfURPGXPv3qLJPw5MVpHUewsbP2m/0/*)#dkgvr5hm");
Tuple Fields§
§0: K
§1: KeychainKind
Trait Implementations§
source§impl<K: DerivableKey<Tap>> DescriptorTemplate for Bip86<K>
impl<K: DerivableKey<Tap>> DescriptorTemplate for Bip86<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> RefUnwindSafe for Bip86<K>where
K: RefUnwindSafe,
impl<K> Send for Bip86<K>where
K: Send,
impl<K> Sync for Bip86<K>where
K: Sync,
impl<K> Unpin for Bip86<K>where
K: Unpin,
impl<K> UnwindSafe for Bip86<K>where
K: UnwindSafe,
Blanket Implementations§
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>, HashMap<DescriptorPublicKey, DescriptorSecretKey, RandomState>), Error>
fn into_wallet_descriptor(
self,
secp: &Secp256k1<All>,
network: Network
) -> Result<(Descriptor<DescriptorPublicKey>, HashMap<DescriptorPublicKey, DescriptorSecretKey, RandomState>), Error>
Convert to wallet descriptor