When a descriptor contains a private key and has hardened derivation steps, derive the xpub at the last hardened step and convert the derivation into origin info. So the result is that a BIP32PubkeyProvider
containing a xprv
with hardened derivation steps and ending with unhardened derivation becomes a OriginPubkeyProvider
with those hardened derivation steps as the origin info and a new BIP32PubkeyProvider
containing the xpub
and the unhardened derivation steps.
For example:
wpkh(xprv..../0'/0'/*)
becomes wpkh([d34db33f/0'/0']xpub.../*)
If the descriptor has only hardened steps, it is not modified.
This change allows descriptor wallets to derive from such descriptors without needing to be unlocked.