This PR adds GUI support for external signers. It consists of 7 commits on top of #16546 (RPC).
The UX isn't amazing - especially the blocking calls - but it works.
First we adds a GUI setting for the signer script (e.g. path to HWI):
<img width="625" alt="Schermafbeelding 2019-08-05 om 19 32 59" src="https://user-images.githubusercontent.com/10217/62483415-e1ff1680-b7b7-11e9-97ca-8d2ce54ca1cb.png">
Then we add an external signer checkbox to the wallet creation dialog:
<img width="374" alt="Schermafbeelding 2019-11-07 om 19 17 23" src="https://user-images.githubusercontent.com/10217/68416387-b57ee000-0194-11ea-9730-127d60273008.png">
It's checked by default if HWI detects a device. It also grabs the name. It then creates a fresh wallet and imports the keys.
You can verify an address on the device (blocking...):
<img width="673" alt="Schermafbeelding 2019-08-05 om 19 29 22" src="https://user-images.githubusercontent.com/10217/62483560-43bf8080-b7b8-11e9-9902-8a036116dc4b.png">
Sending, including coin selection, Just Works(tm) as long the device is present. It's a bit weird though: the device will prompt for signing first and the QT confirmation dialog appears after.
External signer support is enabled by default when the GUI is configured and Boost::Process is present.
DrahtBot added the label Build system on Aug 5, 2019
DrahtBot added the label Docs on Aug 5, 2019
DrahtBot added the label GUI on Aug 5, 2019
DrahtBot added the label RPC/REST/ZMQ on Aug 5, 2019
DrahtBot added the label Scripts and tools on Aug 5, 2019
DrahtBot added the label Tests on Aug 5, 2019
DrahtBot added the label Utils/log/libs on Aug 5, 2019
DrahtBot added the label Wallet on Aug 5, 2019
DrahtBot
commented at 9:04 PM on August 5, 2019:
member
<!--e57a25ab6845829454e8d69fc972939a-->
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
<!--174a7506f384e20aa4161008e828411d-->
Conflicts
Reviewers, this pull request conflicts with the following ones:
#19267 (ci: Upgrade most ci configs to focal by MarcoFalke)
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
DrahtBot added the label Needs rebase on Aug 6, 2019
jonasschnelli
commented at 11:41 AM on August 12, 2019:
contributor
This PR has 146 commits,... is this intentional?
Sjors
commented at 1:18 PM on August 12, 2019:
member
@jonasschnelli see the list in #16546 for all the all the experimental stuff this PR is based on. The actual change is only a few commits (Github messes up the ordering), compared to RPC-only functionality.
fanquake removed the label Build system on Aug 14, 2019
fanquake removed the label Docs on Aug 14, 2019
fanquake removed the label Scripts and tools on Aug 14, 2019
fanquake removed the label Tests on Aug 14, 2019
fanquake removed the label Utils/log/libs on Aug 14, 2019
Sjors force-pushed on Sep 16, 2019
Sjors
commented at 5:19 PM on September 16, 2019:
member
Cleaned it up a bit and tweaked the timestamps so it's more clear that only the most recent 4 commits are relevant.
139 commits may seem a bit intimidating, but it's really just a matter of reviewing:
runCommandParseJSON, so the GUI can call HWI: #15382
Github lets you mark existing pull requests as draft now!
Sjors force-pushed on May 7, 2020
fjahr
commented at 11:44 AM on May 11, 2020:
member
Concept ACK
I am not a huge GUI user but I compared the way this works here with #16546 and it looks good to me.
Sjors force-pushed on May 18, 2020
Sjors force-pushed on May 22, 2020
jonasschnelli
commented at 7:31 AM on May 29, 2020:
contributor
I haven't followed the recent HWW work,... but is this still à jour with the concept?
Sjors
commented at 6:37 PM on May 29, 2020:
member
I'm keeping this PR up to date and it actually works, so it is the concept :-)
Sjors force-pushed on Jun 10, 2020
[depends] boost: patch unused variable in boost_process
Co-Authored-By: fanquake <fanquake@gmail.com>
4037f85033
configure: add ax_boost_process
Co-authored-by: Luke Dashjr <luke-jr+git@utopios.org>
2436908651
[build] make boost-process opt-in459e567992
[build] msvc: add boost::process
* AppVeyor boost-process vcpkg package.
* Tell Boost linter to ignore it
* Add HAVE_BOOST_PROCESS for MSVC build (bitcoin_config.h)
97f65def30
[doc] include Doxygen comments for HAVE_BOOST_PROCESS4a093579e1
[ci] use boost::process
Explictly opt-out on win64, in case the default changes.
f97f9e2bd4
[util] add runCommandParseJSON48c57c7548
[rpc] [DO NOT MERGE] sendmany: return PSBT for wallets without private keys
TODO: replace with #16378 once its prerequisites are merged.
In addition we check to see if the PSBT is complete, in preperation for a ScriptPubKeyMan that can use an external signer.
fc46eb2202
configure: add --enable-external-signer
This prepares external signer support to be disabled by default.
It adds a configure option to enable this feature and to check
if Boost::Process is present.
It can also be enabled using --with-boost-process
This also exposes ENABLE_EXTERNAL_SIGNER to the test suite via test/config.ini
fixup! e192a9dedf1bc5dcddb928466eca9a93c83e5c91
This is a metadata mirror of the GitHub repository
bitcoin/bitcoin.
This site is not affiliated with GitHub.
Content is generated from a GitHub metadata backup.
generated: 2026-04-17 09:14 UTC
This site is hosted by @0xB10C More mirrored repositories can be found on mirror.b10c.me