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_keysis no longer mandatory (but still default)
- external_signerflag is now mutable
Additionally it does the following:
- make the blankoption forcreatewalletconsistent with regular wallets by not importing keys from the connected signer
- avoid going through createTransactionfor external signers (otherwise the GUI breaks)
- update external-signer.mdmainly to use named arguments and point out a GUI setting
This should no noticeable effect on the default single sig use case described above.