{{ message }}
feat(direct-send): allow specifying explicit input UTXOs - #588
Merged
github-actions[bot] merged 1 commit intoAug 12, 2026
Merged
Conversation
4 tasks
m0wer
force-pushed
the
feat/587-direct-send-input-utxos
branch
from
August 11, 2026 15:56
7118a31 to
11ddf85
Compare
Contributor
Author
GuTS805
force-pushed
the
feat/587-direct-send-input-utxos
branch
from
August 11, 2026 23:04
1502163 to
f28f3c0
Compare
Adds an optional input_utxos field (list of "txid:vout" strings) to direct-send so callers can pin exactly which coins get spent instead of relying on automatic selection. Every listed UTXO must already be unfrozen and belong to the requested mixdepth; anything unusable (frozen, not found, wrong mixdepth, insufficient value, unexpired or unsignable fidelity bond) is rejected with a specific reason rather than silently falling back to auto-selection. Works for sweeps (amount_sats: 0) as well as amount-based sends, and omitting the field keeps prior behavior unchanged. Backend + jmwalletd HTTP API only (issue joinmarket-ng#587); CLI support and docoinjoin are tracked as separate follow-ups. Changelog: Allow direct-send to spend an explicit list of input UTXOs instead of auto-selecting
m0wer
force-pushed
the
feat/587-direct-send-input-utxos
branch
from
August 12, 2026 06:21
f28f3c0 to
f3e1b65
Compare
Member
|
/fast-forward |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Closes #587 (core + jmwalletd part; CLI support tracked as a follow-up per the issue discussion).
What
Adds an optional
input_utxosfield (list of"txid:vout"strings) to direct-send so a client can pin exactly which coins get spent instead of relying on automatic selection.Behaviour
mixdepth, error otherwiseamount_sats: 0+input_utxossweeps exactly those inputs, nothing elseWhere
jmwallet/src/jmwallet/wallet/spend.py—parse_outpoint,resolve_input_utxos, andprepare_direct_send/direct_sendaccept the explicit listjmwalletd/src/jmwalletd/models.py—DirectSendRequest.input_utxosjmwalletd/src/jmwalletd/send.py,jmwalletd/src/jmwalletd/routers/coinjoin.py— pass it through to the wallet layerTest plan
pytest jmwallet jmwalletd— full suite green except the 7 pre-existing WSL-only chmod failures intest_utxo_metadata.py(unrelated, root bypasses permission checks)parse_outpoint/resolve_input_utxos/prepare_direct_sendcovering exact-spend, sweep, ordering, empty list, frozen, not-found, wrong-mixdepth, duplicates, insufficient value, expired/unexpired/unsignable bondsjmwalletdtests covering request forwarding and the ValueError -> 400 mappingFollow-up (separate PR, per discussion in #587)
--input-utxo TXID:VOUTonjm-wallet send/jm-taker coinjoin, mutually exclusive with--select-utxos, and eventually the same fordocoinjoin.