pub struct Bip84<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
Expand description
BIP84 template. Expands to wpkh(key/84'/0'/0'/{0,1}/*)
Since there are hardened derivation steps, this template requires a private derivable key (generally a xprv
/tprv
).
See Bip84Public
for a template that can work with a xpub
/tpub
.
Example
use bdk::template::Bip84;
let key = bitcoin::util::bip32::ExtendedPrivKey::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
let wallet = Wallet::new_offline(
Bip84(key.clone(), KeychainKind::External),
Some(Bip84(key, KeychainKind::Internal)),
Network::Testnet,
MemoryDatabase::default()
)?;
assert_eq!(wallet.get_address(New)?.to_string(), "tb1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2pr6y4qc7");
assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "wpkh([c55b303f/84\'/0\'/0\']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#nkk5dtkg");
Tuple Fields
0: K
1: KeychainKind
Trait Implementations
Build the complete descriptor
Auto Trait Implementations
impl<K> RefUnwindSafe for Bip84<K> where
K: RefUnwindSafe,
impl<K> UnwindSafe for Bip84<K> where
K: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
pub fn into_wallet_descriptor(
Self,
&Secp256k1<All>,
Network
) -> Result<(Descriptor<DescriptorPublicKey>, HashMap<DescriptorPublicKey, DescriptorSecretKey, RandomState>), Error>
pub fn into_wallet_descriptor(
Self,
&Secp256k1<All>,
Network
) -> Result<(Descriptor<DescriptorPublicKey>, HashMap<DescriptorPublicKey, DescriptorSecretKey, RandomState>), Error>
Convert to wallet descriptor