Skip to content

Remove warning on private multipath descriptors (4.0) #511

Description

@thunderbiscuit

This is related to #306, #418, #506, #510.

As of miniscript 13.1.0, this is no longer true, and using private multipath descriptors in our constructors should work well. This will therefore ship with the 4.0 version of bdk_wallet. I'm opening this just to keep track and not forget to fix the docs!

Examples

miniscript 12.X

let secp = Secp256k1::new();
// Public two-path multipath descriptor
let desc_public = "wpkh(tpubDDks68wKK1xKaVVVbNmXUAx68K1K817M6KwjvjEyCrjdU7xMvjKnfYAtZjfZcrfPfGFzqmibuVqMzKJGbBnK7mo7WSJri8Y9QgM7aNQ3fCp/1'/2'/0/<0;1>/*)";
// Private two-path multipath descriptor
let desc_private = "tr(tprv8ZgxMBicQKsPdfqH2fGKQkBAMXpqCpC6v6WhYnEZC7TbpcEavC1N27tHbFP16eLm9XdFDW6cqnGChit8gWXyyT1zQ3xFqUWgHTS9XBQw3j5/1'/2'/0/<0;1>/*)";

let res_public = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, desc_public);
let res_private = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, desc_private);
println!("{:?}", res_public);
println!("{:?}", res_private);

// Ok((wpkh(MultiXPub(...)))
// Err(Unexpected("can't make a multi-xpriv with hardened derivation steps that are not shared among all paths into a public key"))

miniscript 13.1.0

let secp = Secp256k1::new();
// Public two-path multipath descriptor
let desc_public = "wpkh(tpubDDks68wKK1xKaVVVbNmXUAx68K1K817M6KwjvjEyCrjdU7xMvjKnfYAtZjfZcrfPfGFzqmibuVqMzKJGbBnK7mo7WSJri8Y9QgM7aNQ3fCp/1'/2'/0/<0;1>/*)";
// Private two-path multipath descriptor
let desc_private = "tr(tprv8ZgxMBicQKsPdfqH2fGKQkBAMXpqCpC6v6WhYnEZC7TbpcEavC1N27tHbFP16eLm9XdFDW6cqnGChit8gWXyyT1zQ3xFqUWgHTS9XBQw3j5/1'/2'/0/<0;1>/*)";

let res_public = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, desc_public);
let res_private = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, desc_private);
println!("{:?}", res_public);
println!("{:?}", res_private);

// Ok((wpkh(MultiXPub(...))))
// Ok((tr(MultiXPub(...))))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions