Page:
command help swaptxcreate
Pages
A word on text editors
Altcoin and Forkcoin Support
Autosigning
Build Python from Source
Editing the user path in Windows
Getting Started with MMGen Wallet
Home
Install Bitcoind from Source on Linux
Install Bitcoind
Install MMGen Wallet on Linux or macOS
Install MMGen Wallet on Microsoft Windows
Install MMGen Wallet on Nix
Install the Offline Bitcoind
Key address files
MMGen Wallet Quick Start with Regtest Mode
MMGen Wallet command help
Recovering Your Keys Without the MMGen Wallet Software
Subwallets
Test Suite
Tool API
Tracking and spending ordinary Bitcoin addresses
Unix commands and environment
XOR Seed Splitting ^ Theory and Practice
command help addrgen
command help addrimport
command help autosign
command help cli
command help keygen
command help msg
command help passchg
command help passgen
command help regtest
command help remote
command help seedjoin
command help seedsplit
command help subwalletgen
command help swaptxcreate
command help swaptxdo
command help tool(detail)
command help tool(usage)
command help tool
command help txbump
command help txcreate
command help txdo
command help txsend
command help txsign
command help walletchk
command help walletconv
command help walletgen
command help xmrwallet
No results
4
command help swaptxcreate
The MMGen Project edited this page 2026-11-09 02:16:30 +00:00
MMGEN-SWAPTXCREATE: Create a DEX swap transaction from one MMGen tracking wallet to another
USAGE: mmgen-swaptxcreate [opts] COIN1 [AMT CHG_ADDR] COIN2 [DEST_ADDR]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
-a, --autosign Create a transaction for offline autosigning (see
‘mmgen-autosign’). The removable device is mounted and
unmounted automatically
-A, --fee-adjust f Adjust transaction fee by factor ‘f’ (see below)
-B, --no-blank Don't blank screen before displaying unspent outputs
-c, --comment-file f Source the transaction's comment from file 'f'
-C, --fee-estimate-confs c Desired number of confirmations for fee estimation
(default: 3)
-d, --outdir d Specify an alternate directory 'd' for output
-E, --fee-estimate-mode M Specify the network fee estimate mode. Choices:
'conservative','economical'. Default: 'conservative'
-f, --fee f Transaction fee, as a decimal BTC amount or as
satoshis per byte (an integer followed by ‘s’).
See FEE SPECIFICATION below. If omitted, fee will be
calculated using network fee estimation.
-g, --gas N Set the gas limit for Ethereum (see GAS LIMIT below)
-G, --router-gas N Set the gas limit for the Ethereum router contract
(integer). When unset, a hardcoded default will be
used. Applicable only for swaps from token assets.
-i, --info Display unspent outputs and exit
-I, --inputs i Specify transaction inputs (comma-separated list of
MMGen IDs or coin addresses). Note that ALL unspent
outputs associated with each address will be included.
-l, --trade-limit L Minimum swap amount, as either percentage or absolute
coin amount (see TRADE LIMIT below)
-L, --autochg-ignore-labels Ignore labels when autoselecting change addresses
-m, --minconf n Minimum number of confirmations required to spend
outputs (default: 1)
-M, --memoless Perform a memoless swap, creating a reference request
TX (activates first pass).
-n, --refnum N The memoless reference number obtained after sending
the reference request TX (activates second pass).
-N, --no-refreq-tx With --memoless, do not create a reference request TX.
Instead, display the reference memo and exit.
-p, --priority N Specify an integer priority ‘N’ for inclusion of trans-
action in blockchain (higher number means higher fee).
XMR only. Valid params: 1=low 2=normal 3=high 4=highest
If option is omitted, the default priority will be used
-q, --quiet Suppress warnings; overwrite files without prompting
-Q, --quote Get a swap quote and exit. Do not create transaction
-r, --stream-interval N Set block interval for streaming swap (default: 3)
-s, --swap-proto P Swap protocol to use (Default: thorchain,
Choices: 'thorchain')
-S, --list-assets List available swap assets
-v, --verbose Produce more verbose output
-V, --vsize-adj f Adjust transaction's estimated vsize by factor 'f'
-x, --proxy P Fetch the swap quote via SOCKS5h proxy ‘P’ (host:port).
Use special value ‘env’ to honor *_PROXY environment
vars instead.
-y, --yes Answer 'yes' to prompts, suppress non-essential output
This script is similar in operation to ‘mmgen-txcreate’, only with additional
steps. Users are advised to first familiarize themselves with the use of that
script before attempting to perform a swap with this one.
The tracking wallets of both the send and receive coins must be available when
the script is invoked. If the two coin daemons are running on different hosts
than the script, or with non-standard ports, coin-specific RPC options may be
required (see EXAMPLES below).
The swap protocol’s quote server on the Internet must be reachable either
directly or via the SOCKS5 proxy specified with the --proxy option. To improve
privacy, it’s recommended to proxy requests to the quote server via Tor or
some other anonymity network.
The resulting transaction file is saved, signed, sent, and optionally bumped,
exactly the same way as one created with ‘mmgen-txcreate’. Autosign with
automount is likewise supported via the --autosign option.
The command line must contain at minimum a send coin (COIN1) and receive coin
(COIN2) symbol. Currently supported coins are BTC, LTC, BCH and ETH. All
other arguments are optional. If AMT is specified, the specified value of
send coin will be swapped and the rest returned to a change address in the
originating tracking wallet. Otherwise, the entire value of the interactively
selected inputs will be swapped.
By default, the change (if applicable) and destination addresses are chosen
automatically by finding the lowest-indexed unused addresses of the preferred
address types in the send and receive tracking wallets. For Bitcoin and
forks, types ‘B’, ‘S’ and ‘C’ (see ADDRESS TYPES below) are searched in that
order for unused addresses. Note that sending to an unused address may be
undesirable for Ethereum, where address (i.e. account) reuse is the norm. In
that case, the user should specify a destination address on the command line.
Monero tracking wallets are likely to contain no unused addresses in the
desired destination account, or even in the entire wallet, in which case the
user must create a new address via ‘mmgen-tool --coin=xmr listaddresses
interactive=1’.
If the wallet contains eligible unused addresses with multiple Seed IDs, the
user will be presented with a list of the lowest-indexed addresses of
preferred type for each Seed ID and prompted to choose from among them.
Change and destination addresses may also be specified manually with the
CHG_ADDR and DEST_ADDR arguments. These are given either as full MMGen IDs
or in the form [SEED_ID:]ADDRTYPE_CODE, with the following exceptions: for
Ethereum and Monero the CHG_ADDR argument is not supported, and for Monero
the DEST_ADDR argument, if given, is replaced by an extended MMGen ID or a
specifier in the form WALLET_NUM:ACCT_IDX. See EXAMPLES below and the
‘mmgen-txcreate’ help screen for details.
While discouraged, sending change or swapping to non-wallet addresses is also
supported, in which case the signing script (‘mmgen-txsign’ or ‘mmgen-
autosign’, as applicable) must be invoked with the --allow-non-wallet-swap
option.
Rather than specifying a transaction fee on the command line, it’s advisable
to start with the fee suggested by the swap protocol quote server (the script
does this automatically) and then adjust the fee interactively if desired.
When choosing a fee, bear in mind that the longer the transaction remains
unconfirmed, the greater the risk that the vault address will expire, leading
to loss of funds. It’s therefore recommended to learn how to create, sign and
send replacement transactions with ‘mmgen-txbump’ before performing a swap
with this script. When bumping a stuck swap transaction, the safest option
is to create a replacement transaction with one output that returns funds back
to the originating tracking wallet, thus aborting the swap, rather than one
that merely increases the fee (see EXAMPLES below).
Before broadcasting the transaction, it’s a good idea to double-check the
vault address on a block explorer such as thorchain.net or runescan.io.
The MMGen Node Tools suite contains two useful tools to help with fine-tuning
transaction fees, ‘mmnode-feeview’ and ‘mmnode-blocks-info’, in addition to
‘mmnode-ticker’, which can be used to calculate the current cross-rate between
the asset pair of a swap, as well as the total receive value in terms of send
value.
TRADE LIMIT
A target value for the swap may be set, known as the “trade limit”. If
this target cannot be met, the network will refund the user’s coins, minus
transaction fees (note that the refund goes to the address associated with the
transaction’s first input, leading to coin reuse). Since under certain
circumstances large amounts of slippage can occur, resulting in significant
losses, setting a trade limit is highly recommended.
The target may be given as either an absolute coin amount or percentage value.
In the latter case, it’s interpreted as the percentage below the “expected
amount out” returned by the swap quote server. Zero or negative percentage
values are also accepted, but are likely to result in your coins being
refunded.
The trade limit is rounded to four digits of precision in order to reduce
transaction size.
ADDRESS TYPES:
Code Type Description
---- ---- -----------
‘L’ legacy - Legacy uncompressed address
‘C’ compressed - Compressed P2PKH address
‘S’ segwit - Segwit P2SH-P2WPKH address
‘B’ bech32 - Native Segwit (Bech32) address
‘X’ bech32x - Cross-chain Bech32 address
‘K’ bech32pk - Cross-chain pubkey Bech32 address
‘E’ ethereum - Ethereum address
‘Z’ zcash_z - Zcash z-address
‘M’ monero - Monero address
GAS LIMIT
This option specifies the maximum gas allowance for an Ethereum transaction.
It’s generally of interest only for token transactions or swap transactions
from token assets.
Parameter must be an integer or one of the special values ‘fallback’ (for a
locally computed sane default) or ‘auto’ (for gas estimate via an RPC call,
in the case of a token transaction, or locally computed default, in the case
of a standard transaction). The default is ‘auto’.
FEE SPECIFICATION
Transaction fees, both on the command line and at the interactive prompt, may
be specified as either absolute coin amounts, using a plain decimal number, or
as satoshis per byte, using an integer followed by ‘s’, for satoshi (for
Bitcoin, Litecoin and Bitcoin Cash), or gas price, using an integer followed
by ‘w’,‘K’,‘M’,‘G’,‘s’ or ‘f’, for wei, Kwei, Mwei, Gwei, szabo and finney,
respectively (for Ethereum)
EXAMPLES:
Display available swap assets:
$ mmgen-swaptxcreate -S
Create a BTC-to-LTC swap transaction, prompting the user for transaction
inputs. The full value of the inputs, minus miner fees, will be swapped
and sent to an unused address in the user’s LTC tracking wallet:
$ mmgen-swaptxcreate BTC LTC
Same as above, but swap 0.123 BTC, minus miner fees, and send the change to
an unused address in the BTC tracking wallet:
$ mmgen-swaptxcreate BTC 0.123 LTC
Same as above, but specify that the change address be a Segwit P2SH (‘S’)
address:
$ mmgen-swaptxcreate BTC 0.123 S LTC
Same as above, but additionally specify that the destination LTC address be
a compressed P2PKH (‘C’) address:
$ mmgen-swaptxcreate BTC 0.123 S LTC C
Same as above, but specify the BTC change address explicitly and the
destination LTC address by Seed ID and address type:
$ mmgen-swaptxcreate BTC 0.123 BEADCAFE:S:6 LTC BEADCAFE:C
Abort the above swap by creating a replacement transaction that returns the
funds to the originating tracking wallet (omit the transaction filename if
using --autosign):
$ mmgen-txbump BEADCAFE:S:6 [raw transaction file]
Swap 0.123 BTC to a non-wallet address (not recommended):
$ mmgen-swaptxcreate BTC 0.123 LTC ltc1qaq8t3pakcftpk095tnqfv5cmmczysls0xx9388
Create an LTC-to-BCH swap transaction, with the Litecoin daemon running on
host ‘orion’ and Bitcoin Cash Node daemon on host ‘gemini’ with non-standard
RPC port 8332. Communicate with the swap quote server via Tor.
$ mmgen-swaptxcreate --ltc-rpc-host=orion --bch-rpc-host=gemini --bch-rpc-port=8332 --proxy=localhost:9050 LTC BCH
After sending, check the status of the above swap’s LTC deposit transaction
(omit the transaction filename if using --autosign):
$ mmgen-txsend --ltc-rpc-host=orion --status [transaction file]
Check whether the funds have arrived in the BCH destination wallet:
$ mmgen-tool --coin=bch --bch-rpc-host=gemini twview minconf=0
Create a Tether-to-LTC swap transaction for autosigning, connecting to the
swap quote server via Tor:
$ mmgen-swaptxcreate --autosign --proxy=localhost:9050 ETH.USDT 1000 LTC
After signing, send the transaction via public Etherscan proxy over Tor:
$ mmgen-txsend --autosign --quiet --tx-proxy=etherscan --proxy=localhost:9050
After sending, check the transaction status:
$ mmgen-txsend --autosign --verbose --status
Create a Tether-to-DAI swap transaction, with explicit destination account:
$ mmgen-swaptxcreate ETH.USDT 1000 ETH.DAI E:01234ABC:3
Create a RUNE-to-BTC swap transaction, proxying requests to the remote
Thornode server via Tor:
$ mmgen-swaptxcreate --proxy=localhost:9050 RUNE 1000 BTC
Same as above, but proxy requests via the I2P router running on host gw1:
$ https_proxy=http://gw1:4444 mmgen-swaptxcreate --proxy=env RUNE 1000 BTC
MEMOLESS SWAP EXAMPLES:
The following examples assume --autosign
Initiate a BTC-to-XMR swap with autoselected destination address. The
command produces a THORChain registration transaction:
$ mmgen-swaptxcreate --memoless BTC 0.1234 XMR
Send the registration transaction to the THORChain network:
$ mmgen-txsend
=> TxID
Get the reference number from the THORChain network:
$ mmgen-remote --coin=rune get_refnum TxID
=> REFNUM
Create a BTC-to-XMR swap transaction using the reference number:
$ mmgen-swaptxcreate --refnum=REFNUM BTC 0.1234 XMR
Send the swap transaction:
$ mmgen-txsend
Monitor your XMR wallet for the funds:
$ mmgen-tool --coin=xmr twview
Initiate a BTC-to-XMR swap with destination argument in the form
WALLET_NUM:ACCT_IDX:
$ mmgen-swaptxcreate --memoless BTC 0.1234 XMR 3:12
Initiate a BTC-to-XMR swap with destination argument being a specific
address denoted by an extended MMGen ID in the form SEED_ID:ADDR_TYPE:
WALLET_NUM/ACCT_IDX/ADDR_IDX:
$ mmgen-swaptxcreate --memoless BTC 0.1234 XMR 4BA5D19B:M:3/12/7
MMGEN-WALLET 17.0.0 November 2026 MMGEN-SWAPTXCREATE(1)
The MMGen Wallet Wiki
Download/Install
Using MMGen Wallet
Homepage:
Clearnet |
I2P |
Onion
Code Repository:
Clearnet |
I2P |
Onion
Code Repository Mirrors:
Github |
Gitlab |
Codeberg
IRC:
#mmgen-wallet (OFTC | postman.i2p) |
E-Mail:
Tuta |
Proton
Accounts:
Twitter |
Bitcointalk |
Dread |
Reddit |
Keybase
Repository Signing Key: 5C84 CB45 AEE2 250F 31A6 A570 3F8B 1861 E32B 7DA2
PGP Encryption Key: 6EF5 A0EA E833 BA79 EE47 6A36 7C60 2DC4 55BF CC26
Donate:
⊙ BTC: bc1qxmymxf8p5ckvlxkmkwgw8ap5t2xuaffmrpexap
⊙ BCH: 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w
⊙ XMR: 8B14zb8wgLuKDdse5p8f3aKpFqRdB4i4xj83b7BHYABHMvHifWxiDXeKRELnaxL5FySfeRRS5girgUvgy8fQKsYMEzPUJ8h