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

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions