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(...))))
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
miniscript 13.1.0