This PR aligns the external signer documentation with current behavior, and makes one previously implicit behavior explicit. Per review feedback, each commit fixes a limited set of issues:
doc, rpc: document enumerate model field and fingerprint deduplication — the
enumerateresponse uses the optionalmodelfield, which Bitcoin Core maps to thenamefield of theenumeratesignersRPC result. Duplicate fingerprints are skipped, and wallet operations require exactly one connected signer.doc: replace stale signtransaction wording with current signtx flow — spending from an external signer wallet uses
send/sendall(andbumpfeefor fee-bumping), which invoke<cmd> --stdinand pass thesigntxsubcommand and PSBT over stdin.doc: clarify which commands receive --chain, --fingerprint and --stdin — mark
--chainand--fingerprintas required except forenumerate, keep--stdinrequired for protocol flexibility, and match the order and form of the actual invocations in the usage examples.doc: add taproot descriptor to getdescriptors example — show the BIP86
tr()descriptor alongside the other address types.wallet: reject sendtoaddress and sendmany for external signers — return a specific error instead of the misleading "Private keys are disabled for this wallet", with functional test coverage. Cherry-picked from #33112 (thanks Sjors).
How the documentation went stale:
The
enumerateexample has shown anamefield since external signer support landed in #16546, but the implementation has always readmodel.sendtoaddress/sendmanyexternal signer support was effectively precluded by #21201, which was merged a few days before #16546, so the interaction was missed in review and the documentedsigntransactionflow never existed in this form.Fingerprint deduplication was added in #35251.
The documentation was last updated in #33765.