{{ message }}
feat(jm-wallet): --input-utxo flag for send - #589
Merged
github-actions[bot] merged 1 commit intoAug 12, 2026
Conversation
m0wer
force-pushed
the
feat/587-cli-input-utxo
branch
from
August 11, 2026 15:56
ba03043 to
44e0198
Compare
GuTS805
force-pushed
the
feat/587-cli-input-utxo
branch
from
August 11, 2026 17:30
44e0198 to
24e0b51
Compare
Contributor
Author
GuTS805
force-pushed
the
feat/587-cli-input-utxo
branch
from
August 11, 2026 23:05
24e0b51 to
7b0bdd8
Compare
Adds a repeatable --input-utxo TXID:VOUT flag to jm-wallet send, mutually exclusive with --select-utxos. When given, it resolves the listed outpoints through the same resolve_input_utxos validation used by direct-send (unfrozen, correct mixdepth, expired/signable fidelity bonds only) and spends exactly those UTXOs instead of auto-selecting, including for sweeps. Anything unusable exits with a reason rather than falling back to automatic selection. Follow-up to the direct-send input_utxos support (issue joinmarket-ng#587). jm-taker coinjoin is intentionally left out of this change: its UTXO selection has to interoperate with maker fee negotiation and can expand beyond the taker's own preselected inputs, so it needs its own design pass rather than reusing this same "exact set or error" rule. Changelog: Add a repeatable --input-utxo flag to jm-wallet send for explicit coin control
m0wer
force-pushed
the
feat/587-cli-input-utxo
branch
from
August 12, 2026 06:23
7b0bdd8 to
924c433
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.

Follow up to #588 (this is stacked on it, so it depends on that one going in first - diff will look bigger than it actually is until then, sorry about that).
Adds
--input-utxo TXID:VOUTtojm-wallet send, repeatable, mutually exclusive with--select-utxos. This is the CLI part i mentioned in #587 - now thatprepare_direct_send/resolve_input_utxosaccept an explicit list, the flag itself ended up pretty thin like i expected.behaviour is the same as the API side:
--mixdepth, otherwise it errors out with why--amount 0+--input-utxosweeps exactly what you listed and nothing elseOne thing i want to flag: i did NOT touch
jm-taker coinjoinhere even tho m0wer mentioned it too. Reason is the coinjoin utxo selection is more involved - it has to interact with maker fees/podle stuff and can pull in more utxos beyond what you preselected if the value isnt enough (this already happens today with--select-utxos). Doing the same "exact set or error" rule there would need its own discussion since it might not even be the right behaviour for coinjoin. Happy to take a stab at it separately once we agree on what it should actually do, or you can if you'd rather.test plan:
_send_transactionpath with--input-utxo(spends only the named utxo, unknown utxo exits without broadcasting) + a CLI-level test for the mutual exclusivity checkjmwallet--helpsort test still passes (flag is alphabetically placed)