Struct bdk::descriptor::template::Bip44Public
source · [−]pub struct Bip44Public<K: DerivableKey<Legacy>>(pub K, pub Fingerprint, pub KeychainKind);
Expand description
BIP44 public template. Expands to pkh(key/{0,1}/*)
This assumes that the key used has already been derived with m/44'/0'/0'
.
This template requires the parent fingerprint to populate correctly the metadata of PSBTs.
See Bip44
for a template that does the full derivation, but requires private data
for the key.
Example
use bdk::template::Bip44Public;
let key = bitcoin::util::bip32::ExtendedPubKey::from_str("tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU")?;
let fingerprint = bitcoin::util::bip32::Fingerprint::from_str("c55b303f")?;
let wallet = Wallet::new(
Bip44Public(key.clone(), fingerprint, KeychainKind::External),
Some(Bip44Public(key, fingerprint, KeychainKind::Internal)),
Network::Testnet,
MemoryDatabase::default()
)?;
assert_eq!(wallet.get_address(New)?.to_string(), "miNG7dJTzJqNbFS19svRdTCisC65dsubtR");
assert_eq!(wallet.public_descriptor(KeychainKind::External)?.unwrap().to_string(), "pkh([c55b303f/44'/0'/0']tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU/0/*)#xgaaevjx");
Tuple Fields
0: K
1: Fingerprint
2: KeychainKind
Trait Implementations
sourceimpl<K: DerivableKey<Legacy>> DescriptorTemplate for Bip44Public<K>
impl<K: DerivableKey<Legacy>> DescriptorTemplate for Bip44Public<K>
sourcefn build(self) -> Result<DescriptorTemplateOut, DescriptorError>
fn build(self) -> Result<DescriptorTemplateOut, DescriptorError>
Build the complete descriptor
Auto Trait Implementations
impl<K> RefUnwindSafe for Bip44Public<K> where
K: RefUnwindSafe,
impl<K> Send for Bip44Public<K> where
K: Send,
impl<K> Sync for Bip44Public<K> where
K: Sync,
impl<K> Unpin for Bip44Public<K> where
K: Unpin,
impl<K> UnwindSafe for Bip44Public<K> where
K: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> IntoWalletDescriptor for T where
T: DescriptorTemplate,
impl<T> IntoWalletDescriptor for T where
T: DescriptorTemplate,
sourcefn 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