The external_signer
indicates that an external signer device may be called via HWI or equivalent application.
When it was initially introduced some additional constraints were placed on wallets with this flag: it had to be a descriptor wallet and watch-only. Also the flag could not be added or removed later.
The constraints aren’t a problem for the main supported and documented use case of connecting a single hardware wallet and using it just like a normal single sig Bitcoin Core wallet.
But they get in the way of more advanced constructions, which are becoming increasingly practical especially once MuSig2 support lands with #29675. See https://github.com/Sjors/bitcoin/pull/91 and https://github.com/bitcoin-core/HWI/pull/794 for a collection of changes on top of that which facilitate MuSig2 with a hardware wallet. And see #24861.
This pull requests drops the following constraints:
disable_private_keys
is no longer mandatory (but still default)external_signer
flag is now mutable
Additionally it does the following:
- make the
blank
option forcreatewallet
consistent with regular wallets by not importing keys from the connected signer - avoid going through
createTransaction
for external signers (otherwise the GUI breaks) - update
external-signer.md
mainly to use named arguments and point out a GUI setting
This should no noticeable effect on the default single sig use case described above.