feat(direct-send): allow specifying explicit input UTXOs - #588
Merged
github-actions[bot] merged 1 commit intoAug 12, 2026
Merged
github-actions[bot] merged 1 commit into
github-actions[bot] merged 1 commit into
Conversation
4 tasks done
m0wer
force-pushed
the
feat/587-direct-send-input-utxos
branch
from
August 11, 2026 15:56
7118a31 to
11ddf85
Compare
Contributor
Author
|
@m0wer ci's green, just prek is stuck on action_required, guess it needs a maintainer to approve it since im pushing from a fork. lmk if you want anything changed meanwhile |
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 |
|
Triggered from #588 (comment) by @m0wer. Trying to fast forward Target branch ( commit 3d5f732081a5700b3332bbd304a8331a101816a0 (HEAD -> main, origin/main)
Author: /dev/fd0 <alicexbt@protonmail.com>
Date: Wed Aug 12 03:03:32 2026 +0530
build: add GPG signature for release 0.36.0Pull request ( commit f3e1b65ae6e280968c4f918ebf0401e4a20ad273 (pull_request/feat/587-direct-send-input-utxos)
Author: GuTS805 <alok020505@gmail.com>
Date: Wed Aug 12 04:33:56 2026 +0530
feat(direct-send): allow specifying explicit input UTXOs
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 #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-selectingFast forwarding $ git push origin f3e1b65ae6e280968c4f918ebf0401e4a20ad273:main
To https://github.com/joinmarket-ng/joinmarket-ng.git
3d5f7320..f3e1b65a f3e1b65ae6e280968c4f918ebf0401e4a20ad273 -> main |
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.