Struct bdk_debug::descriptor::template::Bip86Public
source · pub struct Bip86Public<K: DerivableKey<Tap>>(pub K, pub Fingerprint, pub KeychainKind);Expand description
BIP86 public template. Expands to tr(key/{0,1}/*)
This assumes that the key used has already been derived with m/86'/0'/0' for Mainnet or m/86'/1'/0' for Testnet.
This template requires the parent fingerprint to populate correctly the metadata of PSBTs.
See Bip86 for a template that does the full derivation, but requires private data
for the key.
Example
use bdk::template::Bip86Public;
let key = bitcoin::util::bip32::ExtendedPubKey::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;
let fingerprint = bitcoin::util::bip32::Fingerprint::from_str("c55b303f")?;
let mut wallet = Wallet::new(
Bip86Public(key.clone(), fingerprint, KeychainKind::External),
Some(Bip86Public(key, fingerprint, KeychainKind::Internal)),
Network::Testnet,
MemoryDatabase::default()
)?;
assert_eq!(wallet.get_address(New)?.to_string(), "tb1pwjp9f2k5n0xq73ecuu0c5njvgqr3vkh7yaylmpqvsuuaafymh0msvcmh37");
assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "tr([c55b303f/86'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#2p65srku");Tuple Fields§
§0: K§1: Fingerprint§2: KeychainKindTrait Implementations§
source§impl<K: DerivableKey<Tap>> DescriptorTemplate for Bip86Public<K>
impl<K: DerivableKey<Tap>> DescriptorTemplate for Bip86Public<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 Bip86Public<K>where K: RefUnwindSafe,
impl<K> Send for Bip86Public<K>where K: Send,
impl<K> Sync for Bip86Public<K>where K: Sync,
impl<K> Unpin for Bip86Public<K>where K: Unpin,
impl<K> UnwindSafe for Bip86Public<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>, 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