}
);
}
+
+ #[test]
+ fn test_sending_to_bip350_bech32m_address() {
+ let (wallet, _, _) = get_funded_wallet(get_test_wpkh());
+ let addr =
+ Address::from_str("tb1pqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesf3hn0c")
+ .unwrap();
+ let mut builder = wallet.build_tx();
+ builder.add_recipient(addr.script_pubkey(), 45_000);
+ builder.finish().unwrap();
+ }
}
+
+ /// Deterministically generate a unique name given the descriptors defining the wallet
+ pub fn wallet_name_from_descriptor<T>(
+ descriptor: T,
+ change_descriptor: Option<T>,
+ network: Network,
+ secp: &SecpCtx,
+ ) -> Result<String, Error>
+ where
+ T: IntoWalletDescriptor,
+ {
+ //TODO check descriptors contains only public keys
+ let descriptor = descriptor
+ .into_wallet_descriptor(secp, network)?
+ .0
+ .to_string();
+ let mut wallet_name = get_checksum(&descriptor[..descriptor.find('#').unwrap()])?;
+ if let Some(change_descriptor) = change_descriptor {
+ let change_descriptor = change_descriptor
+ .into_wallet_descriptor(secp, network)?
+ .0
+ .to_string();
+ wallet_name.push_str(
+ get_checksum(&change_descriptor[..change_descriptor.find('#').unwrap()])?.as_str(),
+ );
+ }
+
+ Ok(wallet_name)
+ }