Update for v16.1.0

The MMGen Project 2026-05-15 13:10:04 +00:00
commit cfbf780ee6
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
32 changed files with 776 additions and 194 deletions

@ -35,10 +35,12 @@ tokens. In addition, ERC20 token creation and deployment are supported via the
#### <a id="a_ed">Install the Ethereum dependencies</a>
Skip this step for MSYS2 or if your Python version is 3.13 or greater.
From the MMGen Wallet repository root, type:
```text
$ python3 -m pip install -r alt-requirements.txt # skip this for MSYS2
$ python3 -m pip install -r keccak-requirements.txt
```
#### <a id="a_geth">Install and run Reth, Geth or Parity</a>
@ -92,7 +94,7 @@ the `--help` option for more complete information.
#### <a id="a_tx">Transacting and other basic operations</a>
Basic operations with ETH, ETC and ERC20 tokens work as described in the
[**Getting Started**][bo] guide, with some differences. Please note the
[**Getting Started**][ct] guide, with some differences. Please note the
following:
* Don’t forget to invoke relevant commands with `--coin=eth` or `--coin=etc`.
@ -154,7 +156,7 @@ On your offline machine, sign the TX:
$ mmgen-txsign --coin=eth --token=eos ABC123-EOS[10,50000].rawtx
```
*You can also set up and use [autosigning][X] on the offline machine.*
*You can also set up and use [**autosigning**][ax] on the offline machine.*
On your online machine, send the TX:
@ -240,21 +242,54 @@ commands. It’s that simple!
### <a id="a_xmr">Monero (XMR)</a>
MMGen Wallet’s Monero support includes automated wallet creation/syncing and
transacting via the [`mmgen-xmrwallet`][mx] command. Make sure that
[Monerod][M] is installed and running and that `monero-wallet-rpc` is located
in your executable path.
Monero is fully supported by MMGen Wallet.
Make sure that [Monerod][M] is installed and running and that
`monero-wallet-rpc` is located in your executable path.
<a id="a_xmr_req">Install the Python XMR requirements:</a>
(Note that this step is not required for MSYS2, as these requirements were
already installed by pacman.)
Skip this step for MSYS2, as these requirements were already installed by
pacman.
Skip ‘keccak-requirements.txt’ if your Python version is 3.13 or greater.
```text
$ python3 -m pip install -r alt-requirements.txt
$ python3 -m pip install -r keccak-requirements.txt # see above
$ python3 -m pip install -r xmr-requirements.txt
```
#### Wallet creation and transacting via the compatibility layer
This is now the preferred way to transact XMR, replacing the deprecated
`mmgen-xmrwallet` command for most operations. Everything works as described
in the [**Getting Started**][ct] guide, with the following differences:
- Manual transacting is not supported, only version 2 [**autosigning**][ax].
- XMR compatibility mode must be enabled. Use `--xmrwallet-compat` for online
commands, or set `xmrwallet_compat` to `true` in your config file.
- The `mmgen-addrgen` script is not used. Instead, addresses are created
automatically when `mmgen-autosign setup` is run with the `--xmrwallets`
option. Type `mmgen-autosign --help` for more information.
- After autosign setup, `mmgen-addrimport --coin=xmr` is run on the online
machine with no arguments. This creates the watch-only wallet or wallets
that together comprise the user’s tracking wallet. For watch-only wallets
that already exist, no action is performed.
- `mmgen-txcreate` supports both sweep transactions and send to external
address (see `mmgen-txcreate --coin=xmr --help`)
- Tracking wallet views are account-based.
- New accounts and addresses may be added to the tracking wallet via
`mmgen-tool --coin=xmr listaddresses`.
- The `mmgen-xmrwallet` script may be used to list and view sent transactions
on the removable device. Type `mmgen-xmrwallet --help` for details.
- Compatibility mode is not available for Windows. Windows users must use
`mmgen-xmrwallet` in non-automount (v1) mode to transact Monero.
#### Wallet creation and transacting via `mmgen-xmrwallet` (deprecated)
Monero support includes automated wallet creation/syncing and transacting via
the [`mmgen-xmrwallet`][mx] command.
*The following instructions are applicable for a hot wallet setup. To learn
how to cold sign transactions using MMGen Wallet’s autosign feature, first
familiarize yourself with the basic concepts here and then consult the OFFLINE
@ -302,6 +337,12 @@ To learn how to transact using your wallets, continue on to the
### <a id="a_rune">THORChain (RUNE)</a>
Install the RUNE requirements:
```text
$ python3 -m pip install -r rune-requirements.txt
```
Transacting RUNE with MMGen Wallet is similar to transacting BTC as described in
the [**Getting Started**][gs] guide. Just add the `--coin=rune` option to all
relevant commands. With `mmgen-autosign`, add `rune` to the list of coins in
@ -315,6 +356,8 @@ communications via Tor or I2P: refer to the helpscreens of `mmgen-txcreate`,
### <a id="a_tcswap">Asset swaps via THORChain</a>
Install the RUNE requirements as shown above.
21 assets (as of this writing) may be swapped directly within MMGen Wallet via
THORChain. Swapping assets is just like normal transacting, except transactions
are created using `mmgen-swaptxcreate` instead of `mmgen-txcreate`. Note that
@ -397,9 +440,9 @@ the MMGen Project.
[y]: https://github.com/ethereum/pyethereum
[P]: https://pypi.org/project/pip
[M]: https://getmonero.org/downloads/#linux
[X]: command-help-autosign
[ax]: Autosigning
[gs]: Getting-Started-with-MMGen-Wallet
[bo]: Getting-Started-with-MMGen-Wallet#a_bo
[ct]: Getting-Started-with-MMGen-Wallet#a_ct
[si]: Install-Bitcoind-from-Source-on-Linux
[bi]: Install-Bitcoind#a_d
[p8]: Install-Bitcoind#a_r

99
Autosigning.md Normal file

@ -0,0 +1,99 @@
### [Manual transacting](#as_r) | [Autosigning v1](#as_v1) | [Autosigning v2](#as_v2)
For most situations, Version 2 autosigning is the best way to transact with
MMGen Wallet.
## <a id="as_r">Transacting, the manual way</a>
Transacting manually involves the following steps:
#### Preparation of signing session:
1. Boot and log in to offline signing machine
#### Transacting:
1. On online machine, create transaction with [`mmgen-txcreate`][tc]
(or [`mmgen-swaptxcreate`][sc])
1. Insert removable device
1. Mount removable device
1. Copy transaction file to removable device
1. Unmount removable device
1. Extract removable device and transfer it to offline machine
1. Mount removable device
1. Locate transaction file on removable device, sign it with
[`mmgen-txsign`][ts]
1. Unmount removable device
1. Extract removable device and transfer it to online machine
1. Mount removable device
1. Locate signed transaction file on removable device, send it with
[`mmgen-txsend`][tx]
Admittedly, this is all quite tedious. To simplify the transaction workflow,
Version 1 Autosigning was introduced.
## <a id="as_v1">Autosigning, Version 1</a>
Here the main innovation was to eliminate keyboard interaction with the
offline signing machine during the signing process.
#### <a id="as_v1_s">Preparation of signing session:
1. Boot and log in to offline signing machine
1. Set up autosigning session ([`mmgen-autosign setup`][as])
1. Start signing loop ([`mmgen-autosign wait`][as])
#### Transacting:
1. On online machine, create transaction with [`mmgen-txcreate`][tc]
(or [`mmgen-swaptxcreate`][sc])
1. Insert removable device
1. Mount removable device
1. Copy transaction file to `/mnt/mmgen_autosign/tx` on removable device
(or `/mnt/mmgen_autosign/xmr/tx` for Monero)
1. Unmount removable device
1. Extract removable device and transfer it to offline machine
1. Wait for [autosigning][as] to complete
1. Extract removable device and transfer it to online machine
1. Mount removable device
1. Locate signed transaction file on removable device, send it with
[`mmgen-txsend`][tx]
#### Differences compared to manual method:
- signing session preparation involves additional steps
- signing requires no keyboard interaction
- removable device and, for Linux, mountpoints must be prepared as described
in [`mmgen-autosign --help`][as]
While this is already much better, there was still room for improvement.
Enter Version 2 Autosigning.
## <a id="as_v2">Autosigning, Version 2</a>
Here the main innovation was to automate all mounting, unmounting, and file
copying operations. Version 2 autosigning is sometimes referred to in the
program output and documentation by the term “automount”.
#### Preparation of signing session:
1. Same as for [Version 1](#as_v1_s)
#### Transacting:
1. On online machine, insert removable device
1. Create transaction with [`mmgen-txcreate`][tc]
(or [`mmgen-swaptxcreate`][sc])
1. Extract removable device and transfer it to offline machine
1. Wait for [autosigning][as] to complete
1. Extract removable device and transfer it to online machine
1. Send transaction with [`mmgen-txsend`][tx]
#### Differences compared to Version 1:
- filename arguments are omitted from all commands
- for online operations, the `--autosign` option must be supplied, or
`autosign` set to `true` in the config file
- only one transaction may be created-signed-sent at a time (Version 1 allows
for multiple signables per signing operation)
- unsent transactions may be aborted and ranges of sent transactions viewed or
checked for confirmation status (see [`mmgen-txsend --help`][tx])
[tc]: command-help-txcreate
[ts]: command-help-txsign
[tx]: command-help-txsend
[sc]: command-help-swaptxcreate
[as]: command-help-autosign

@ -48,8 +48,9 @@ commands and filenames) will speed up your work at the command line greatly.
The examples in this tutorial are geared towards Bitcoin, but with some
modification they may be used with altcoins and forkcoins for which MMGen
Wallet supports transaction operations (BCH, LTC, ETH, ETC, RUNE and XMR as of
this writing). See [Altcoin-and-Forkcoin-Support][09] for more details.
Wallet supports transaction operations (BCH, LTC, ETH, ETC, ERC20 tokens, RUNE
and XMR as of this writing). See [**Altcoin-and-Forkcoin-Support**][09] for
more details.
#### <a id="a_iv">Invocation</a>
@ -170,9 +171,10 @@ overestimated.
### <a id="a_tr">Transacting</a>
*The following transacting information is applicable to BTC, BCH, LTC, ETH, ETC
and RUNE. For transacting with Monero, consult [Altcoin-and-Forkcoin-Support][x]
and the [`mmgen-xmrwallet`][mx] help screen.*
*Transacting is supported for BTC, BCH, LTC, ETH, ETC, ERC20 tokens, RUNE and
XMR. The description below applies to BTC, BCH and LTC. For other coins, there
are important differences: consult [**Altcoin-and-Forkcoin-Support**][09] for
details.*
#### <a id="a_ga">Generate addresses (offline computer)</a>
@ -337,6 +339,15 @@ TOTAL: 1 BTC
#### <a id="a_ct">Create a transaction (online computer)</a>
*The following decribes the old, manual way of transacting with MMGen Wallet.
Instead, you should consider setting up [transaction autosigning][ax] on your
offline machine, which will greatly simplify the transacting process. For
optimal user experience, the offline signing device should be a Raspberry Pi
or other single-board computer for which LED signaling support is provided.*
*The* [***Autosigning***][ax] *wiki page outlines the differences between the
manual and autosigning methods of transacting.*
Now that you have some coins under MMGen Wallet’s control, you’re ready to
create a transaction. Note that transactions are harmless until they’re signed
and broadcast to the network, so feel free to experiment and create transactions
@ -476,6 +487,17 @@ Network: BTC MAINNET
4) 123c.. 6 3PeI55vtp2bX2uKDkAAR2c6e.. 89ABCDEF:S:5 0.0999 7
```
Note that all tracking wallet views support the --scroll option, which provides
a curses-like scrolling interface that greatly improves the user experience when
there’s more than a screenful of lines to display. The option may also be set
in the configuration file.
```text
$ mmgen-txcreate --scroll --info
$ mmgen-tool --scroll twview
$ mmgen-tool --scroll listaddresses
```
Since you’ve sent 0.1 BTC to a third party, your balance has decreased by 0.1
BTC plus the transaction fee of 0.0001 BTC.
@ -849,18 +871,12 @@ Signed transaction written to file 'ABCDEF[0.1].sigtx'
#### <a id="a_hw">Hot wallets</a>
*Instead of using a hot wallet, you should consider setting up [transaction
autosigning][07] on your offline machine. Autosigning makes it possible to
transact directly from cold storage in a secure and convenient way. Ideally,
your autosigning device should be a Raspberry Pi or other single-board computer
for which MMGen Wallet provides LED support. However, an old laptop running
Linux or macOS will also suffice, provided its network interfaces are removed
or disabled.*
For greater transacting convenience, it’s possible to place a small portion of
your funds in a “hot wallet” on your online computer. You may then use the
`mmgen-txdo` command to quickly create, sign and send transactions in one
operation.
To use MMGen Wallet for not only cold storage but also day-to-day transacting,
it’s possible to place a portion of your funds in a “hot wallet” on your online
computer. You may then use the `mmgen-txdo` command to quickly create, sign and
send transactions in one operation.
It’s recommended to entrust only very small sums to the hot wallet.
*Note: prior to Version 0.11.0, MMGen Wallet implemented hot wallets using
[key-address files][05], but these have now been obsoleted by [subwallets][06].
@ -1124,11 +1140,10 @@ $ python3 -m pip install user --upgrade dist/*.whl
[04]: MMGen-Wallet-Quick-Start-with-Regtest-Mode
[05]: Key-address-files
[06]: Subwallets
[07]: command-help-autosign
[08]: Install-Bitcoind
[09]: Altcoin-and-Forkcoin-Support
[x]: Altcoin-and-Forkcoin-Support#a_xmr
[cp]: ../commits/master
[mx]: command-help-xmrwallet
[li]: Install-MMGen-Wallet-on-Linux-or-macOS
[wi]: Install-MMGen-Wallet-on-Microsoft-Windows
[ax]: Autosigning

@ -59,9 +59,9 @@ Download the MSYS2 executable installer for your architecture from the [MSYS2
homepage][mh], but ignore the installation instructions there.
Run the installer, accepting all defaults. When installation completes,
uncheck ‘Run MSYS2 now’ and click ‘Finish’. From the Start menu, drag the
‘MSYS2 UCRT64’ icon to the desktop. You will use it to launch all MSYS2
terminal sessions from now on. Double-click the icon to launch the terminal.
uncheck ‘Run MSYS2 now’ and click ‘Finish’. From the Start menu, pin the
‘MSYS2 UCRT64’ icon to the taskbar. You will use it to launch all MSYS2
terminal sessions from now on. Click the icon to launch the terminal.
Note that the root of your MSYS2 installation is located in `C:\\msys64`, so the
following commands, for example, will produce a listing of the same directory:
@ -102,18 +102,18 @@ $ ls 'C:\\msys64\etc' # the path as seen by Windows
>
> Download up-to-date versions of these files from the primary MSYS2 mirror:
>
>> <https://mirror.msys2.org/msys/x86_64/msys.db>
>> <https://mirror.msys2.org/msys/x86_64/msys.db.sig>
>> <https://mirror.msys2.org/mingw/mingw64/mingw64.db>
>> <https://mirror.msys2.org/mingw/mingw64/mingw64.db.sig>
>> <https://mirror.msys2.org/mingw/mingw32/mingw32.db>
>> <https://mirror.msys2.org/mingw/mingw32/mingw32.db.sig>
>> <https://mirror.msys2.org/mingw/clang64/clang64.db>
>> <https://mirror.msys2.org/mingw/clang64/clang64.db.sig>
>> <https://mirror.msys2.org/mingw/clangarm64/clangarm64.db>
>> <https://mirror.msys2.org/mingw/clangarm64/clangarm64.db.sig>
>> <https://mirror.msys2.org/mingw/ucrt64/ucrt64.db>
>> <https://mirror.msys2.org/mingw/ucrt64/ucrt64.db.sig>
>> <https://repo.msys2.org/msys/x86_64/msys.db>
>> <https://repo.msys2.org/msys/x86_64/msys.db.sig>
>> <https://repo.msys2.org/mingw/mingw64/mingw64.db>
>> <https://repo.msys2.org/mingw/mingw64/mingw64.db.sig>
>> <https://repo.msys2.org/mingw/mingw32/mingw32.db>
>> <https://repo.msys2.org/mingw/mingw32/mingw32.db.sig>
>> <https://repo.msys2.org/mingw/clang64/clang64.db>
>> <https://repo.msys2.org/mingw/clang64/clang64.db.sig>
>> <https://repo.msys2.org/mingw/clangarm64/clangarm64.db>
>> <https://repo.msys2.org/mingw/clangarm64/clangarm64.db.sig>
>> <https://repo.msys2.org/mingw/ucrt64/ucrt64.db>
>> <https://repo.msys2.org/mingw/ucrt64/ucrt64.db.sig>
>
> Copy the files to your offline machine, replacing the originals at
> `C:\msys64\var\lib\pacman\sync`.
@ -184,13 +184,13 @@ pacman -S tar git vim autoconf automake-wrapper autogen libtool cygrunsrv \
mingw-w64-ucrt-x86_64-libsodium \
mingw-w64-ucrt-x86_64-python-pynacl \
mingw-w64-ucrt-x86_64-python-cryptography \
mingw-w64-ucrt-x86_64-python-pycryptodome \
mingw-w64-ucrt-x86_64-python-six \
mingw-w64-ucrt-x86_64-python-pexpect \
mingw-w64-ucrt-x86_64-python-gmpy2 \
mingw-w64-ucrt-x86_64-python-pysocks \
mingw-w64-ucrt-x86_64-python-requests \
mingw-w64-ucrt-x86_64-python-aiohttp \
mingw-w64-ucrt-x86_64-python-ecdsa \
mingw-w64-ucrt-x86_64-python-pyreadline3 \
mingw-w64-ucrt-x86_64-python-lxml
```
@ -238,17 +238,13 @@ prevent pip from installing packages in the system directory.
On your online machine:
```text
$ python3 -m pip download ecdsa
$ python3 -m pip download --no-binary :all: scrypt==0.8.27 aiohttp==3.12.9
$ python3 -m pip download --no-binary :all: scrypt==0.8.27
```
Copy the downloaded files to your offline machine (if applicable) and install:
```text
$ python3 -m pip install ecdsa-*.whl
$ python3 -m pip install --no-build-isolation scrypt*gz
$ python3 -m pip install --no-build-isolation aiohtt* multidic* yarl* aiohap* aiosig* attrs* frozenlist* idna* propcache*
```
### <a id="a_se">7. Clone and copy the secp256k1 library (offline install only)</a>
@ -316,7 +312,7 @@ Enter the repo directory, build and install:
```text
$ cd mmgen-wallet
$ python3 -m build --no-isolation
$ python3 -m build --no-isolation --wheel
$ python3 -m pip install dist/*.whl
```
@ -437,7 +433,7 @@ Offline upgrade:
[ib]: Install-Bitcoind
[gs]: Getting-Started-with-MMGen-Wallet
[pl]: Altcoin-and-Forkcoin-Support#a_ed
[ax]: command-help-autosign
[ax]: Autosigning
[mc]: Altcoin-and-Forkcoin-Support#a_xmr
[ts]: Test-Suite
[vv]: https://docs.python.org/3/library/venv.html

@ -12,7 +12,7 @@
#### <a id="a_i">Introduction</a>
If you’re considering using MMGen Wallet and are a Bitcoiner with a normal,
If you’re considering using MMGen Wallet and are a crypto user with a normal,
healthy degree of paranoia, then the following question will probably come to
mind: “What if I have funds in MMGen Wallet and I lose the software? How do
I recover my coins?”

@ -51,18 +51,16 @@ $ python3 -m pip download pycoin # online
$ python3 -m pip install --no-build-isolation pycoin-*.tar.gz # offline
```
CD to the MMGen Wallet repository root and build the secp256k1 extension module
in place:
CD to the MMGen Wallet repository root:
```text
$ cd path/to/mmgen/repo
$ python3 setup.py build_ext --inplace
```
Run the following if upgrading from a previous version of MMGen:
```text
$ test/cmdtest.py clean
$ test/clean.py
```
Run the test suite in fast mode, skipping altcoin tests (fast mode skips
@ -94,7 +92,8 @@ requires the SSH daemon to be set up and running. On MSYS2 systems, SSHD
is not configured by default, but it may be easily set up with the following
steps:
Open PowerShell as administrator, and at the DOS prompt, execute:
Open PowerShell as administrator (right mouse click, “Run as Administrator”).
At the DOS prompt, execute:
```text
system32> net user administrator /active:yes
@ -120,7 +119,7 @@ may also be started and stopped manually at the DOS or MSYS2 prompt as follows
#### Install Monero-Python
```text
$ python3 -m pip install pycryptodome ipaddress varint
$ python3 -m pip install ipaddress varint
$ python3 -m pip install --no-deps monero
```
@ -138,12 +137,6 @@ $ python3 -m pip install eth-keys
Install this on MSYS2 or if ‘eth-keys’ is unavailable on your platform. Do not
confuse this with the Reth ‘ethkey’ utility, which is entirely different.
On Arch Linux and ArchLinuxArm systems, ‘ethkey’ is installed as follows:
```text
$ pacman -S openethereum
```
For 64-bit Windows (MSYS2), Linux and macOS systems, ‘ethkey’ can be found in
the zip archives distributed with [this release][oz].
@ -155,7 +148,8 @@ $ cd vanitygen-plusplus
$ git checkout -b vanitygen-plus e7858035d092 # rewind to fork commit
```
Edit the Makefile, changing `-lpcre` to `-lpcre2-posix` on the second line.
Optional: On some systems, you may need to edit the Makefile, changing `-lpcre`
to `-lpcre2-posix` on the second line.
```text
$ make keyconv # ‘mingw32-make.exe keyconv’ for MSYS2
@ -166,8 +160,12 @@ $ cd ..
#### Install Zcash-Mini
Skip the go installation step if go is already installed (check by invoking
`go version`)
```text
$ sudo apt-get install golang # skip this if Go is already installed
$ sudo apt-get install golang # Debian, Ubuntu
$ sudo pacman -S go # Arch Linux
$ git clone https://github.com/FiloSottile/zcash-mini
$ cd zcash-mini
$ sed -e "s@github.com/FiloSottile/@@" -i main.go

@ -1,7 +1,9 @@
```text
MMGEN-ADDRGEN: Generate a range or list of addresses from an MMGen wallet,
mnemonic, seed or brainwallet
USAGE: mmgen-addrgen [opts] [seed source] <index list or range(s)>
USAGE: mmgen-addrgen [opts] [seed source] <index list or range(s)>
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -78,12 +80,14 @@
subwallets from a single parent. This leaves each user with a total of two
million subwallets, which should be enough for most practical purposes.
PASSPHRASE NOTE:
For passphrases all combinations of whitespace are equal, and leading and
trailing space are ignored. This permits reading passphrase or brainwallet
data from a multi-line file with free spacing and indentation.
BRAINWALLET NOTE:
To thwart dictionary attacks, it’s recommended to use a strong hash preset
@ -121,5 +125,5 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
MMGEN-WALLET 16.0.0 September 2025 MMGEN-ADDRGEN(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-ADDRGEN(1)
```

@ -1,11 +1,17 @@
### [BTC](#a_btc) | [ETH](#a_eth) | [XMR](#a_xmr)
### <a id="a_btc">mmgen-addrimport --coin=btc --help</a>
```text
MMGEN-ADDRIMPORT: Import addresses into an MMGen tracking wallet
USAGE: mmgen-addrimport [opts] [MMGen address file]
USAGE: mmgen-addrimport [opts] [MMGen address file]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
-a, --address a Import the single coin address 'a'
-b, --batch Import all addresses in one RPC call
-A, --address ADDR Import the single coin address ADDR
-b, --batch Import all addresses in one RPC call (where applicable)
-l, --addrlist Address source is a flat list of non-MMGen coin addresses
-k, --keyaddr-file Address source is a key-address file
-q, --quiet Suppress warnings
@ -13,23 +19,85 @@
blockchain for unspent outputs that include the imported
address(es). Required if any of the imported addresses
are already in the blockchain and have a balance.
-t, --token-addr A Import addresses for ERC20 token with address 'A'
This command can also be used to update the comment fields or balances of
addresses already in the tracking wallet.
Rescanning now uses the ‘scantxoutset’ RPC call and a selective scan of
blocks containing the relevant UTXOs for much faster performance than the
previous implementation. The rescan operation typically takes around two
minutes total, independent of the number of addresses imported.
It’s recommended to use ‘--rpc-backend=aio’ with ‘--rescan’.
Bear in mind that the UTXO scan will not find historical transactions: to add
them to the tracking wallet, you must perform a full or partial rescan of the
blockchain with the ‘mmgen-tool rescan_blockchain’ utility. A full rescan of
the blockchain may take up to several hours.
It’s recommended to use ‘--rpc-backend=aio’ with ‘--rescan’.
A full rescan is required if you plan to use ‘mmgen-tool txhist’ or the
automatic change address functionality of ‘mmgen-txcreate’, or wish to see
which addresses in your tracking wallet are used. Without it, all addresses
without balances will be displayed as new.
MMGEN-WALLET 16.0.0 September 2025 MMGEN-ADDRIMPORT(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-ADDRIMPORT(1)
```
<br>
### <a id="a_eth">mmgen-addrimport --coin=eth --help</a>
```text
MMGEN-ADDRIMPORT: Import addresses into an MMGen tracking wallet
USAGE: mmgen-addrimport --coin=eth [opts] [MMGen address file]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
-A, --address ADDR Import the single coin address ADDR
-b, --batch Import all addresses in one RPC call (where applicable)
-l, --addrlist Address source is a flat list of non-MMGen coin addresses
-k, --keyaddr-file Address source is a key-address file
-q, --quiet Suppress warnings
-t, --token-addr ADDR Import addresses for ERC20 token with address ADDR
MMGEN-WALLET 16.1.0 May 2026 MMGEN-ADDRIMPORT(1)
```
<br>
### <a id="a_xmr">mmgen-addrimport --coin=xmr --help</a>
```text
MMGEN-ADDRIMPORT: Import addresses into an MMGen tracking wallet
USAGE: mmgen-addrimport --coin=xmr [opts]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
-a, --autosign Import addresses from pre-created key-address file on the
removable device. The removable device is mounted and
unmounted automatically. See notes below.
-q, --quiet Suppress warnings
For Monero, --autosign is required, and a key-address file on the removable
device is used instead of a user-specified address file as with other coins.
When ‘mmgen-autosign setup’ (or ‘xmr_setup’) is run with the --xmrwallets
option, an ephemeral Monero wallet is created for each wallet number listed,
to be used for transaction signing. In addition, a key-address file is created
on the removable device, with an address and viewkey matching the base address
of each signing wallet.
This script uses that file to create an online view-only Monero wallet to
match each offline signing wallet. The set of view-only wallets currently
configured via --xmrwallets comprises the user’s tracking wallet.
If a view-only wallet for a given index already exists, it’s left untouched
and no action is performed. To add view-only wallets to your tracking wallet,
just specify additional wallet indexes via --xmrwallets during the offline
setup process.
MMGEN-WALLET 16.1.0 May 2026 MMGEN-ADDRIMPORT(1)
```

@ -1,6 +1,8 @@
```text
MMGEN-AUTOSIGN: Auto-sign MMGen transactions, message files and XMR wallet output files
USAGE: mmgen-autosign [opts] [operation]
USAGE: mmgen-autosign [opts] [operation]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -12,7 +14,8 @@
the file in volatile memory for use during the signing
session, thus permitting the deletion of the original
file for increased security.
-l, --seed-len N Specify wallet seed length of ‘N’ bits (for setup only)
-l, --seed-len N Specify wallet seed length of ‘N’ bits (for setup with
mnemonic seed phrase only)
-L, --led Use status LED to signal standby, busy and error
-m, --mountpoint M Specify an alternate mountpoint 'M'
(default: '/mnt/mmgen_autosign')
@ -35,10 +38,11 @@
(default: '/dev/shm/autosign')
-W, --allow-non-wallet-swap Allow signing of swap transactions that send funds
to non-wallet addresses
-x, --xmrwallets L Range or list of wallets to be used for XMR autosigning
-x, --xmrwallets L Range or list of wallet numbers to be used for XMR
autosigning (see XMR SIGNING SESSION SETUP below)
OPERATIONS
OPERATIONS
clean - clean the removable device of unneeded files, removing only non-
essential data
@ -63,42 +67,107 @@
signing transactions or stealing the user’s seed impossible.
The operation is intended as a ‘kill switch’ and thus performed
without prompting
list_led - list boards with tested LED signaling support
test_led - test the current board for LED signaling support
USAGE NOTES
DESCRIPTION
If no operation is specified, this program mounts a removable device
(typically a USB flash drive) containing unsigned MMGen transactions, message
files, and/or XMR wallet output files, signs them, unmounts the removable
device and exits.
This program is intended to be run on an offline signing computer, preferably
air-gapped and with no or disabled RF devices (e.g. wi-fi and bluetooth).
Memory, storage and CPU requirements for signing operations are modest, so an
old laptop is suitable for the job, or better yet, a Raspberry Pi or Pi clone
from among the list of supported devices (see LED SIGNALING SUPPORT below).
OS support is currently limited to Linux and macOS.
If invoked with ‘wait’, the program waits in a loop, mounting the removable
device, performing signing operations and unmounting the device every time it
is inserted.
Before using the program, a removable device (typically a USB flash drive)
must first be prepared and the current signing session set up, both as
described below.
On supported platforms (currently Orange Pi, Rock Pi and Raspberry Pi boards),
the status LED indicates whether the program is busy or in standby mode, i.e.
ready for device insertion or removal.
If run with no arguments, the program mounts the removable device, signs any
unsigned MMGen signables (transactions, message files, and/or XMR wallet
output files) on the device, unmounts the device and exits.
The removable device must have a partition with a filesystem labeled MMGEN_TX
and a user-writable root directory. For interoperability between OS-es, it’s
recommended to use the exFAT file system.
If invoked with ‘wait’, the program waits in a loop: mounting, signing and
unmounting every time the removable device is inserted. Wait mode permits
“hands-free” operation, i.e. repeated signing of signables with no keyboard
input, by simply inserting the removable device and then removing it when the
program indicates that signing is complete (see LED SIGNALING SUPPORT below).
On both the signing and online machines the mountpoint ‘/mnt/mmgen_autosign’
(as currently configured) must exist. Linux (not macOS) machines must have
an ‘/etc/fstab’ with the following entry:
Signing is performed with a temporary session wallet written in volatile
memory in the directory ‘/dev/shm/autosign’ (as currently configured). The
wallet is encrypted with a random password saved in the file ‘autosign.key’
on the removable device.
By default, the session wallet is created from the user’s default MMGen
wallet, if it exists. However, the user may optionally generate the session
wallet by interactively entering a seed phrase during session setup. Thus it
is possible to perform signing and other wallet operations with no seed data
ever written to disk, even in encrypted form (“wallet-less” operation).
Depending on the coin, signing is performed either internally by MMGen Wallet
or using an external backend, according to the table below. Thus you must
install the corresponding backend executable, if any, for each coin you wish
to transact and start it with the listed command, if any, at the beginning of
each signing session. It’s recommended to install the executables into
‘/usr/local/bin’.
Coin Backend Executable Command
---- ------- ---------- -------
BTC Bitcoin Core bitcoind bitcoind --listen=0 --daemon
LTC Litecoin Core litecoind litecoind --listen=0 --daemon
BCH Bitcoin Cash Node bitcoind-bchn* bitcoind-bchn --daemon --listen=0 --rpcport=8432 --datadir=$HOME/.bitcoin-bchn
XMR Monero CLI Wallet monero-wallet-rpc -
ETH,ETC,ERC20 none - -
RUNE none - -
* Executable must be renamed from the default ‘bitcoind’
LED SIGNALING SUPPORT
On supported platforms (selected Orange Pi, Rock Pi, Banana Pi, Nano Pi and
Raspberry Pi boards), a flashing LED indicates whether signing is in progress
or the program is in standby mode, i.e. ready for device insertion or removal.
In the absence of LED support, the user must observe the signing progress
on-screen and wait for the “safe to extract” message to appear.
The operation ‘test_led’ tests the current installation for LED support, while
‘list_led’ displays a list of supported board/OS combinations. Note that this
list is not exhaustive: signaling may work with other boards, especially those
produced by the listed manufacturers. If ‘test_led’ reports that your board is
not supported, please submit an issue to the mmgen-wallet repository on Github
or via e-mail, including the board model, OS version and output of the
following shell command:
ls -RH /sys/class/leds/{*status*,*led*}
PREPARING THE REMOVABLE DEVICE
Create a partition on the removable device with a filesystem labeled ‘MMGEN_TX’
and a user-writable root directory. For interoperability between different
operating systems, it’s recommended to use the exFAT filesystem.
On both the offline and online machines, create the mountpoint ‘/mnt/mmgen_autosign’
(as currently configured) and, for Linux, the following entry in ‘/etc/fstab’:
LABEL=MMGEN_TX /mnt/mmgen_autosign auto noauto,user 0 0
Signing is performed with a temporary wallet created in volatile memory in
the directory ‘/dev/shm/autosign’ (as currently configured). The wallet is
encrypted with a 32-byte password saved in the file ‘autosign.key’ in the
root of the removable device’s filesystem.
If your Linux distribution mounts volumes automatically, it’s advisable to
disable that functionality.
The password and temporary wallet may be created in one operation by invoking
‘mmgen-autosign setup’ with the removable device inserted. In this case, the
temporary wallet is created from the user’s default wallet, if it exists and
the user so desires. If not, the user is prompted to enter a seed phrase.
SETTING UP A SIGNING SESSION
Invoke ‘mmgen-autosign setup’ with the removable device inserted. This will
create the temporary session wallet from the user’s default MMGen wallet (if
it exists) or, optionally, a seed phrase. In addition, the session wallet
password is created and written to the removable device. Additional options
may be required. See OPTIONS above and EXAMPLES below.
ALTERNATIVE (MANUAL) SESSION SETUP
Alternatively, the password and temporary wallet may be created separately by
first invoking ‘mmgen-autosign gen_key’ and then creating and encrypting the
@ -108,30 +177,97 @@
Note that the hash preset must be ‘1’. To use a wallet file as the source
instead of an MMGen seed phrase, omit the ‘-i’ option and add the wallet
file path to the end of the command line. Multiple temporary wallets may
be created in this way and used for signing (note, however, that for XMR
operations only one wallet is supported).
file path to the end of the command line. Multiple session wallets may
be created in this way (note, however, that for XMR operations only one
session wallet is supported).
Autosigning is currently supported on Linux and macOS only.
XMR SIGNING SESSION SETUP
To set up an XMR signing session, run ‘setup’ with the --xmrwallets option,
supplying an integer, range, or comma-separated list of integers as the
option’s parameter. Each integer in the list or range represents a wallet
number. For each wallet number, the program generates a Monero address and
creates a temporary session Monero signing wallet in volatile memory under
‘/dev/shm/autosign’ with this number and base address. In addition, data is
written to the removable device which will allow the online installation to
create a watch-only wallet matching the session signing wallet when the user
runs ‘mmgen-addrimport --coin=xmr’ on the online machine with the removable
device inserted (type ‘mmgen-addrimport --coin=xmr --help’ for details).
The use of multiple Monero wallets can help protect against certain known
deanonymization attacks such as the Janus attack. However, since wallet
creation and online syncing of multiple wallets, as well as switching among
them during the signing process, are all time-consuming, it’s recommended to
limit the number of wallets created. First-time users are thus advised to
begin with ‘--xmrwallets=1’. More wallets may be added in later signing
sessions if necessary. See EXAMPLES below.
SECURITY NOTE
By placing wallet and password on separate devices, this program creates
a two-factor authentication setup whereby an attacker must gain physical
control of both the removable device and signing machine in order to sign
transactions. It’s therefore recommended to always keep the removable device
secure, separated from the signing machine and hidden (in your pocket, for
example) when not transacting. In addition, since login access on the
signing machine is required to steal the user’s seed, it’s good practice
to lock the signing machine’s screen once the setup process is complete.
By placing the session wallet and password on separate devices, this program
creates a two-factor authentication setup whereby an attacker must gain
physical control of both the removable device and signing machine in order to
sign transactions or steal the user’s seed. It’s therefore recommended to
always keep the removable device secure, separated from the signing machine
and hidden (in your pocket, for example) when not transacting. In addition,
it’s good practice to lock the signing machine’s screen when unattended.
For Monero, passwords for the watch-only wallets are also stored on the
removable device, meaning that a local attacker must gain access to the latter
not only to sign transactions but also to observe the user’s XMR balances and
transaction history (a remote attacker could possibly observe these, but
extracting the removable device when it’s not in use makes such an attack
less feasible).
As a last resort, cutting power to the signing machine will destroy the
volatile memory where the temporary wallet resides and foil any attack,
even if you’ve lost control of the removable device.
volatile memory where the session wallets reside and prevent a signing or
seed-stealing attack, even if the attacker has gained control of the removable
device.
Always remember to power off the signing machine when your signing session
is over.
MMGEN-WALLET 16.0.0 September 2025 MMGEN-AUTOSIGN(1)
After each signing operation, this program displays a summary showing each
transaction’s non-wallet destination address(es) and amount(s). As an extra
security measure, it’s a good idea to compare these with the address(es) and
amount(s) displayed by your online installation. A discrepancy would indicate
that your online setup has been compromised.
EXAMPLES
Set up a signing session:
$ mmgen-autosign setup
Start the Bitcoin Core daemon:
$ bitcoind --daemon --listen=0
Start the signing loop (BTC-only signing):
$ mmgen-autosign wait # exit loop with Ctrl-C
Set up a signing session with one XMR wallet:
$ mmgen-autosign --xmrwallets=1 setup
In a later signing session, add two more XMR wallets:
$ mmgen-autosign --xmrwallets=1-3 setup
Start the Litecoin Core daemon:
$ litecoind --daemon --listen=0
Start the signing loop (BTC, LTC and XMR signing):
$ mmgen-autosign --coins=btc,ltc,xmr wait
Set up a signing session with 3 XMR wallets, prompting for a 12-word BIP39 seed phrase:
$ mmgen-autosign --xmrwallets=2,5,8 --mnemonic-fmt=bip39 --seed-len=128 setup
Start the signing loop in stealth LED mode with full TX summary (LTC, RUNE and XMR signing):
$ mmgen-autosign --coins=ltc,rune,xmr --stealth-led --full-summary wait
Generate a list of 10 LTC Bech32 addresses using your session wallet:
$ mount /mnt/mmgen_autosign
$ mmgen-addrgen -P /mnt/mmgen_autosign/autosign.key --coin=ltc --type=B /dev/shm/autosign/*.mmdat 1-10
MMGEN-WALLET 16.1.0 May 2026 MMGEN-AUTOSIGN(1)
```

@ -1,6 +1,8 @@
```text
MMGEN-CLI: Communicate with a coin daemon via its JSON-RPC interface
USAGE: mmgen-cli [opts] <command> <command args>
USAGE: mmgen-cli [opts] <command> <command args>
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -31,5 +33,5 @@
'[{"txid":"832f5aa9af55dc453314e26869c8f96db1f2a9acac9f23ae18d396903971e0c6","vout":0}]' \
'[{"1111111111111111111114oLvT2":0.001}]'
MMGEN-WALLET 16.0.0 September 2025 MMGEN-CLI(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-CLI(1)
```

@ -1,7 +1,9 @@
```text
MMGEN-KEYGEN: Generate a range or list of secret keys from an MMGen wallet,
mnemonic, seed or brainwallet
USAGE: mmgen-keygen [opts] [seed source] <index list or range(s)>
USAGE: mmgen-keygen [opts] [seed source] <index list or range(s)>
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -83,12 +85,14 @@
subwallets from a single parent. This leaves each user with a total of two
million subwallets, which should be enough for most practical purposes.
PASSPHRASE NOTE:
For passphrases all combinations of whitespace are equal, and leading and
trailing space are ignored. This permits reading passphrase or brainwallet
data from a multi-line file with free spacing and indentation.
BRAINWALLET NOTE:
To thwart dictionary attacks, it’s recommended to use a strong hash preset
@ -126,5 +130,5 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
MMGEN-WALLET 16.0.0 September 2025 MMGEN-KEYGEN(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-KEYGEN(1)
```

@ -1,10 +1,13 @@
```text
MMGEN-MSG: Perform message signing operations for MMGen addresses
USAGE: mmgen-msg [opts] create MESSAGE_TEXT ADDRESS_SPEC [...]
mmgen-msg [opts] sign MESSAGE_FILE [WALLET_FILE ...]
mmgen-msg [opts] verify MESSAGE_FILE [MMGen ID]
mmgen-msg [opts] verify <exported JSON dump file> [address]
mmgen-msg [opts] export MESSAGE_FILE [MMGen ID]
USAGE:
mmgen-msg [opts] create MESSAGE_TEXT ADDRESS_SPEC [...]
mmgen-msg [opts] sign MESSAGE_FILE [WALLET_FILE ...]
mmgen-msg [opts] verify MESSAGE_FILE [MMGen ID]
mmgen-msg [opts] verify <exported JSON dump file> [address]
mmgen-msg [opts] export MESSAGE_FILE [MMGen ID]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -107,5 +110,5 @@
Verify and display the exported JSON signature data:
$ mmgen-msg verify signatures.json
MMGEN-WALLET 16.0.0 September 2025 MMGEN-MSG(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-MSG(1)
```

@ -1,6 +1,8 @@
```text
MMGEN-PASSCHG: Change the passphrase, hash preset or label of the default or specified MMGen wallet
USAGE: mmgen-passchg [opts] [infile]
USAGE: mmgen-passchg [opts] [infile]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -53,5 +55,5 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
MMGEN-WALLET 16.0.0 September 2025 MMGEN-PASSCHG(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-PASSCHG(1)
```

@ -1,7 +1,9 @@
```text
MMGEN-PASSGEN: Generate a range or list of passwords from an MMGen wallet,
mnemonic, seed or brainwallet for the given ID string
USAGE: mmgen-passgen [opts] [seed source] <ID string> <index list or range(s)>
USAGE: mmgen-passgen [opts] [seed source] <ID string> <index list or range(s)>
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -41,6 +43,7 @@
Changing either the password format (base32,base58) or length alters the seed
and thus generates a completely new set of passwords.
PASSWORD FORMATS:
Code Description Min Len Max Len Default Len
@ -50,6 +53,7 @@
xmrseed - Monero new-style mnemonic 25 25 25
hex - hexadecimal password 32 64 64
EXAMPLES:
Generate ten base58 passwords of length 20 for Alice's email account:
@ -78,6 +82,7 @@
trailing space are ignored. This permits reading passphrase or brainwallet
data from a multi-line file with free spacing and indentation.
BRAINWALLET NOTE:
To thwart dictionary attacks, it’s recommended to use a strong hash preset
@ -101,5 +106,5 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
MMGEN-WALLET 16.0.0 September 2025 MMGEN-PASSGEN(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-PASSGEN(1)
```

@ -1,6 +1,8 @@
```text
MMGEN-REGTEST: Coin daemon regression test mode setup and operations for the MMGen suite
USAGE: mmgen-regtest [opts] <command>
USAGE: mmgen-regtest [opts] <command>
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -25,5 +27,5 @@
wallet_cli - execute a wallet RPC call with supplied arguments (wallet
is first argument)
MMGEN-WALLET 16.0.0 September 2025 MMGEN-REGTEST(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-REGTEST(1)
```

@ -1,7 +1,9 @@
```text
MMGEN-SEEDJOIN: Regenerate an MMGen deterministic wallet from seed shares
created by 'mmgen-seedsplit'
USAGE: mmgen-seedjoin [options] share1 share2 [...shareN]
USAGE: mmgen-seedjoin [options] share1 share2 [...shareN]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -39,6 +41,7 @@
For usage examples, see the help screen for the 'mmgen-seedsplit' command.
PASSPHRASE NOTE:
For passphrases all combinations of whitespace are equal, and leading and
@ -62,5 +65,5 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
MMGEN-WALLET 16.0.0 September 2025 MMGEN-SEEDJOIN(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-SEEDJOIN(1)
```

@ -1,6 +1,8 @@
```text
MMGEN-SEEDSPLIT: Generate a seed share from the default or specified MMGen wallet
USAGE: mmgen-seedsplit [opts] [infile] [<Split ID String>:]<index>:<share count>
USAGE: mmgen-seedsplit [opts] [infile] [<Split ID String>:]<index>:<share count>
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -115,12 +117,14 @@
$ mmgen-seedsplit -M4 -o bip39 2:2 # Step N (share B)
$ mmgen-seedjoin -M4 -H my.hincog,1325 <output_of_step_N>
PASSPHRASE NOTE:
For passphrases all combinations of whitespace are equal, and leading and
trailing space are ignored. This permits reading passphrase or brainwallet
data from a multi-line file with free spacing and indentation.
BRAINWALLET NOTE:
To thwart dictionary attacks, it’s recommended to use a strong hash preset
@ -144,5 +148,5 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
MMGEN-WALLET 16.0.0 September 2025 MMGEN-SEEDSPLIT(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-SEEDSPLIT(1)
```

@ -1,6 +1,8 @@
```text
MMGEN-SUBWALLETGEN: Generate a subwallet from the default or specified MMGen wallet
USAGE: mmgen-subwalletgen [opts] [infile] <Subseed Index>
USAGE: mmgen-subwalletgen [opts] [infile] <Subseed Index>
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -68,12 +70,14 @@
subwallets from a single parent. This leaves each user with a total of two
million subwallets, which should be enough for most practical purposes.
PASSPHRASE NOTE:
For passphrases all combinations of whitespace are equal, and leading and
trailing space are ignored. This permits reading passphrase or brainwallet
data from a multi-line file with free spacing and indentation.
BRAINWALLET NOTE:
To thwart dictionary attacks, it’s recommended to use a strong hash preset
@ -97,5 +101,5 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
MMGEN-WALLET 16.0.0 September 2025 MMGEN-SUBWALLETGEN(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-SUBWALLETGEN(1)
```

@ -1,6 +1,8 @@
```text
MMGEN-SWAPTXCREATE: Create a DEX swap transaction from one MMGen tracking wallet to another
USAGE: mmgen-swaptxcreate [opts] COIN1 [AMT CHG_ADDR] COIN2 [ADDR] [addr file ...]
USAGE: mmgen-swaptxcreate [opts] COIN1 [AMT CHG_ADDR] COIN2 [ADDR]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -254,5 +256,5 @@
$ https_proxy=http://gw1:4444 mmgen-swaptxcreate --proxy=env RUNE 1000 BTC
MMGEN-WALLET 16.0.0 September 2025 MMGEN-SWAPTXCREATE(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-SWAPTXCREATE(1)
```

@ -1,6 +1,8 @@
```text
MMGEN-SWAPTXDO: Create, sign and send a DEX swap transaction from one MMGen tracking wallet to another
USAGE: mmgen-swaptxdo [opts] COIN1 [AMT CHG_ADDR] COIN2 [ADDR] [addr file ...] [seed source ...]
USAGE: mmgen-swaptxdo [opts] COIN1 [AMT CHG_ADDR] COIN2 [ADDR] [addr file ...] [seed source ...]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -215,7 +217,6 @@
Seed source files must have the canonical extensions listed in the 'FileExt'
column below:
FMT CODES:
Format FileExt Valid codes
@ -316,5 +317,5 @@
$ https_proxy=http://gw1:4444 mmgen-swaptxdo --proxy=env RUNE 1000 BTC
MMGEN-WALLET 16.0.0 September 2025 MMGEN-SWAPTXDO(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-SWAPTXDO(1)
```

@ -1083,7 +1083,7 @@ Optional KEYWORD ARGS (type and default value shown in square brackets):
mmgen_addrs [str=''] Hyphenated range or comma-separated list of addresses
showcoinaddrs [bool=True] Display coin addresses in addition to MMGen IDs
showempty [bool=True] Show addresses with no balances
showused [int=1] Show used addresses (tristate: 0=no, 1=yes, 2=all)
showused [int=1] Show used addresses (tristate: 0=no, 1=yes, 2=only)
all_labels [bool=False] Show all addresses with labels
```
@ -1252,5 +1252,5 @@ Optional KEYWORD ARGS (type and default value shown in square brackets):
```
```text
MMGEN-WALLET 16.0.0 September 2025 MMGEN-TOOL(DETAIL)(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-TOOL(DETAIL)(1)
```

@ -188,5 +188,5 @@ EXAMPLES:
Same as above, but supply input via STDIN:
$ echo "deadbeefcafe" | mmgen-tool hexreverse -
MMGEN-WALLET 16.0.0 September 2025 MMGEN-TOOL(USAGE)(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-TOOL(USAGE)(1)
```

@ -1,10 +1,13 @@
```text
MMGEN-TOOL: Perform various MMGen- and cryptocoin-related operations
USAGE: mmgen-tool [opts] <command> <command args>
USAGE: mmgen-tool [opts] <command> <command args>
OPTIONS:
-d, --outdir d Specify an alternate directory 'd' for output
-h, --help Print this help message
--longhelp Print help message for long (global) options
-a, --autosign Operate on an autosigned transaction
-e, --echo-passphrase Echo passphrase or mnemonic to screen upon entry
-k, --use-internal-keccak-module Force use of the internal keccak module
-K, --keygen-backend n Use backend 'n' for public key generation. Options
@ -16,6 +19,8 @@
-q, --quiet Produce quieter output
-r, --usr-randchars n Get 'n' characters of additional randomness from
user (min=10, max=80)
-s, --scroll Use the curses-like scrolling interface for tracking
wallet views
-t, --type t Specify address type (valid choices: 'legacy',
'compressed', 'segwit', 'bech32', 'zcash_z')
-v, --verbose Produce more verbose output
@ -202,5 +207,5 @@
Type ‘mmgen-tool help <command>’ for help on a particular command
MMGEN-WALLET 16.0.0 September 2025 MMGEN-TOOL(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-TOOL(1)
```

@ -1,8 +1,13 @@
```text
MMGEN-TXBUMP: Create, and optionally send and sign, a replacement transaction
on supporting networks
USAGE: mmgen-txbump [opts] [MMGen TX file] [seed source] ...
mmgen-txbump [opts] [ADDR,AMT ... | DATA_SPEC] ADDR [MMGen TX file] [seed source] ...
on supported networks
USAGE:
mmgen-txbump [opts] [MMGen TX file] [seed source] ...
mmgen-txbump [opts] [ADDR,AMT ... | DATA_SPEC] ADDR [addr file ...] [MMGen TX file] [seed source] ...
mmgen-txbump --autosign [opts] [index]
mmgen-txbump --autosign [opts] [index] [ADDR,AMT ... | DATA_SPEC] ADDR [addr file ...]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -56,8 +61,12 @@
-z, --show-hash-presets Show information on available hash presets
With --autosign, the TX file argument is omitted, and the last submitted TX
file on the removable device will be used.
With --autosign, the TX file argument is omitted, and the last submitted
transaction on the removable device will be used. Or, if the first non-option
argument is a non-negative integer, it specifies an index into the list of
submitted transactions, in reverse chronological order, and that transaction
will be bumped. ‘0’ (the default) signifies the last sent transaction, ‘1’
the next-to-last, and so on.
If no outputs are specified, the original outputs will be used for the
replacement transaction, otherwise a new transaction will be created with the
@ -103,7 +112,6 @@
Seed source files must have the canonical extensions listed in the 'FileExt'
column below:
FMT CODES:
Format FileExt Valid codes
@ -120,5 +128,5 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
MMGEN-WALLET 16.0.0 September 2025 MMGEN-TXBUMP(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-TXBUMP(1)
```

@ -1,6 +1,12 @@
### [BTC](#a_btc) | [ETH](#a_eth) | [XMR](#a_xmr)
### <a id="a_btc">mmgen-txcreate --coin=btc --help</a>
```text
MMGEN-TXCREATE: Create a transaction with outputs to specified coin or MMGen addresses
USAGE: mmgen-txcreate [opts] [ADDR,AMT ... | DATA_SPEC] ADDR [addr file ...]
USAGE: mmgen-txcreate [opts] [ADDR,AMT ... | DATA_SPEC] ADDR [addr file ...]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -62,7 +68,7 @@
or "hexdata":DATA. In the first form, DATA is a string in your system’s native
encoding, typically UTF-8. In the second, DATA is a hexadecimal string (with
the leading ‘0x’ omitted) encoding the binary data to be embedded. In both
cases, the resulting byte string must not exceed 80 bytes in length.
cases, the resulting byte string must not exceed 4096 bytes in length.
If the transaction fee is not specified on the command line (see FEE
SPECIFICATION below), it will be calculated dynamically using network fee
@ -124,5 +130,142 @@
$ mmgen-txcreate B
MMGEN-WALLET 16.0.0 September 2025 MMGEN-TXCREATE(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-TXCREATE(1)
```
<br>
### <a id="a_eth">mmgen-txcreate --coin=eth --help</a>
```text
MMGEN-TXCREATE: Create a transaction with outputs to specified coin or MMGen addresses
USAGE: mmgen-txcreate --coin=eth [opts] ADDR,AMT [addr file ...]
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 account info
-c, --comment-file f Source the transaction's comment from file 'f'
-d, --outdir d Specify an alternate directory 'd' for output
-D, --contract-data D Path to file containing hex-encoded contract data
-f, --fee f Transaction fee, as a decimal ETH amount or as
gas price (an integer followed by ‘w’,‘K’,‘M’,‘G’,‘s’ or ‘f’).
See FEE SPECIFICATION below. If omitted, fee will be
calculated using network fee estimation.
-g, --gas N Set the gas limit (see GAS LIMIT below)
-i, --info Display account info 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.
-m, --minconf n Minimum number of confirmations required to spend
outputs (default: 1)
-q, --quiet Suppress warnings; overwrite files without prompting
-v, --verbose Produce more verbose output
-y, --yes Answer 'yes' to prompts, suppress non-essential output
-X, --cached-balances Use cached balances
The transaction’s outputs are listed on the command line, while its inputs
are chosen from a list of the wallet’s unspent outputs via an interactive
menu. Alternatively, inputs may be specified using the --inputs option.
Addresses on the command line can be either native coin addresses or MMGen
IDs in the form SEED_ID:ADDRTYPE_CODE:INDEX.
The transaction output is specified in the form ADDRESS,AMOUNT.
If the transaction fee is not specified on the command line (see FEE
SPECIFICATION below), it will be calculated dynamically using network fee
estimation for the default (or user-specified) number of confirmations.
If network fee estimation fails, the user will be prompted for a fee.
Network-estimated fees will be multiplied by the value of --fee-adjust, if
specified.
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 gas price, using an integer followed by ‘w’,‘K’,‘M’,‘G’,‘s’ or ‘f’, for
wei, Kwei, Mwei, Gwei, szabo and finney, respectively.
EXAMPLES:
Send 0.123 ETH to an external Ethereum address:
$ mmgen-txcreate --coin=eth 22610767a64ed579ed9382e8df2d92c68d3ab0e6,0.123
Send 0.123 ETH to another account in wallet 01ABCDEF:
$ mmgen-txcreate --coin=eth 01ABCDEF:E:7,0.123
MMGEN-WALLET 16.1.0 May 2026 MMGEN-TXCREATE(1)
```
<br>
### <a id="a_xmr">mmgen-txcreate --coin=xmr --help</a>
```text
MMGEN-TXCREATE: Create a transaction with outputs to specified coin or MMGen addresses
USAGE: mmgen-txcreate --coin=xmr [opts] [ADDR,AMT]
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
-B, --no-blank Don't blank screen before displaying account info
-c, --comment-file f Source the transaction's comment from file 'f'
-d, --outdir d Specify an alternate directory 'd' for output
-i, --info Display account info and exit
-m, --minconf n Minimum number of confirmations required to spend
outputs (default: 1)
-p, --priority N Specify an integer priority ‘N’ for inclusion of trans-
action in blockchain (higher number means higher fee).
Valid parameters: 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
-v, --verbose Produce more verbose output
-y, --yes Answer 'yes' to prompts, suppress non-essential output
The transaction’s output is listed on the command line, while its input
is chosen via an interactive menu.
The transaction output is specified in the form ADDRESS,AMOUNT.
EXAMPLES:
Send 0.123 XMR to an external Monero address:
$ mmgen-txcreate --coin=xmr 42ZNVTWwDcyXkKDQgvatxJZvTYvHCJGLh5NQCbrCrFSHVYaCANXYznaaKgL4qZEPKMP6WRxaB5TGAXCQnNTVzKSp4w4BQcx,0.123
Create a sweep transaction:
$ mmgen-txcreate --coin=xmr
MMGEN-WALLET 16.1.0 May 2026 MMGEN-TXCREATE(1)
```

@ -1,6 +1,8 @@
```text
MMGEN-TXDO: Create, sign and send an MMGen transaction
USAGE: mmgen-txdo [opts] [ADDR,AMT ... | DATA_SPEC] ADDR [addr file ...] [seed source ...]
USAGE: mmgen-txdo [opts] [ADDR,AMT ... | DATA_SPEC] ADDR [addr file ...] [addr file ...] [seed source ...]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -85,7 +87,7 @@
or "hexdata":DATA. In the first form, DATA is a string in your system’s native
encoding, typically UTF-8. In the second, DATA is a hexadecimal string (with
the leading ‘0x’ omitted) encoding the binary data to be embedded. In both
cases, the resulting byte string must not exceed 80 bytes in length.
cases, the resulting byte string must not exceed 4096 bytes in length.
If the transaction fee is not specified on the command line (see FEE
SPECIFICATION below), it will be calculated dynamically using network fee
@ -142,7 +144,6 @@
Seed source files must have the canonical extensions listed in the 'FileExt'
column below:
FMT CODES:
Format FileExt Valid codes
@ -190,5 +191,5 @@
$ mmgen-txdo B
MMGEN-WALLET 16.0.0 September 2025 MMGEN-TXDO(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-TXDO(1)
```

@ -1,6 +1,11 @@
```text
MMGEN-TXSEND: Send a signed MMGen cryptocoin transaction
USAGE: mmgen-txsend [opts] [signed transaction file]
USAGE:
mmgen-txsend [opts] <signed transaction file>
mmgen-txsend [opts] --autosign
mmgen-txsend [opts] --autosign (--status | --receipt) [index or range]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -34,5 +39,14 @@
instead.
-y, --yes Answer 'yes' to prompts, suppress non-essential output
MMGEN-WALLET 16.0.0 September 2025 MMGEN-TXSEND(1)
With --autosign, combined with --status or --receipt, the optional index or
range arg represents an index or range into the list of sent transaction files
on the removable device, in reverse chronological order. ‘0’ (the default)
specifies the last sent transaction, ‘1’ the next-to-last, and so on. Hyphen-
separated ranges are also supported. For example, specifying a range ‘0-3’
would output data for the last four sent transactions, beginning with the most
recent.
MMGEN-WALLET 16.1.0 May 2026 MMGEN-TXSEND(1)
```

@ -1,6 +1,8 @@
```text
MMGEN-TXSIGN: Sign cryptocoin transactions generated by mmgen-txcreate
USAGE: mmgen-txsign [opts] <transaction file>... [seed source]...
USAGE: mmgen-txsign [opts] <transaction file>... [seed source]...
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -67,7 +69,6 @@
Seed source files must have the canonical extensions listed in the 'FileExt'
column below:
FMT CODES:
Format FileExt Valid codes
@ -84,5 +85,5 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
MMGEN-WALLET 16.0.0 September 2025 MMGEN-TXSIGN(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-TXSIGN(1)
```

@ -1,6 +1,8 @@
```text
MMGEN-WALLETCHK: Check validity of the default or specified MMGen wallet
USAGE: mmgen-walletchk [opts] [infile]
USAGE: mmgen-walletchk [opts] [infile]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -28,6 +30,7 @@
trailing space are ignored. This permits reading passphrase or brainwallet
data from a multi-line file with free spacing and indentation.
BRAINWALLET NOTE:
To thwart dictionary attacks, it’s recommended to use a strong hash preset
@ -51,5 +54,5 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
MMGEN-WALLET 16.0.0 September 2025 MMGEN-WALLETCHK(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-WALLETCHK(1)
```

@ -1,6 +1,8 @@
```text
MMGEN-WALLETCONV: Convert the default or specified MMGen wallet from one format to another
USAGE: mmgen-walletconv [opts] [infile]
USAGE: mmgen-walletconv [opts] [infile]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -39,6 +41,7 @@
trailing space are ignored. This permits reading passphrase or brainwallet
data from a multi-line file with free spacing and indentation.
BRAINWALLET NOTE:
To thwart dictionary attacks, it’s recommended to use a strong hash preset
@ -62,5 +65,5 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
MMGEN-WALLET 16.0.0 September 2025 MMGEN-WALLETCONV(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-WALLETCONV(1)
```

@ -1,6 +1,8 @@
```text
MMGEN-WALLETGEN: Generate an MMGen wallet from a random seed
USAGE: mmgen-walletgen [opts]
USAGE: mmgen-walletgen [opts]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -31,6 +33,7 @@
trailing space are ignored. This permits reading passphrase or brainwallet
data from a multi-line file with free spacing and indentation.
BRAINWALLET NOTE:
To thwart dictionary attacks, it’s recommended to use a strong hash preset
@ -54,5 +57,5 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
MMGEN-WALLET 16.0.0 September 2025 MMGEN-WALLETGEN(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-WALLETGEN(1)
```

@ -1,16 +1,19 @@
```text
MMGEN-XMRWALLET: Perform various Monero wallet and transacting operations for
addresses in an MMGen XMR key-address file
USAGE: mmgen-xmrwallet [opts] create | sync | list | view | listview | dump | restore [xmr_keyaddrfile] [wallets]
mmgen-xmrwallet [opts] label [xmr_keyaddrfile] LABEL_SPEC
mmgen-xmrwallet [opts] new [xmr_keyaddrfile] NEW_ADDRESS_SPEC
mmgen-xmrwallet [opts] transfer [xmr_keyaddrfile] TRANSFER_SPEC
mmgen-xmrwallet [opts] sweep | sweep_all [xmr_keyaddrfile] SWEEP_SPEC
mmgen-xmrwallet [opts] submit [TX_file]
mmgen-xmrwallet [opts] relay <TX_file>
mmgen-xmrwallet [opts] resubmit | abort (for use with --autosign only)
mmgen-xmrwallet [opts] txview | txlist [TX_file] ...
mmgen-xmrwallet [opts] export-outputs | export-outputs-sign | import-key-images [wallets]
USAGE:
mmgen-xmrwallet --coin=xmr [opts] create | sync | list | view | listview | dump-json | dump | restore [xmr_keyaddrfile] [wallets]
mmgen-xmrwallet --coin=xmr [opts] label [xmr_keyaddrfile] LABEL_SPEC
mmgen-xmrwallet --coin=xmr [opts] new [xmr_keyaddrfile] NEW_ADDRESS_SPEC
mmgen-xmrwallet --coin=xmr [opts] transfer [xmr_keyaddrfile] TRANSFER_SPEC
mmgen-xmrwallet --coin=xmr [opts] sweep | sweep_all [xmr_keyaddrfile] SWEEP_SPEC
mmgen-xmrwallet --coin=xmr [opts] submit [TX_file]
mmgen-xmrwallet --coin=xmr [opts] relay <TX_file>
mmgen-xmrwallet --coin=xmr [opts] resubmit | abort (for use with --autosign only)
mmgen-xmrwallet --coin=xmr [opts] txview | txlist [TX_file] ...
mmgen-xmrwallet --coin=xmr [opts] export-outputs | export-outputs-sign | import-key-images [wallets]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long (global) options
@ -19,6 +22,10 @@
When this option is in effect, filename argu-
ments must be omitted, as files are located
automatically.
-c, --compat Adjust configuration for compatibility with
the mmgen-tx{create,sign,send} family of
commands. Currently equivalent to
‘-w /home/vbr/.mmgen/altcoins/xmr/tracking-wallets’
-f, --priority N Specify an integer priority ‘N’ for inclusion
of a transaction in the blockchain (higher
number means higher fee). Valid parameters:
@ -88,7 +95,7 @@
specified address
sweep - sweep funds in specified wallet:account to new address in same
account, or new or specified account in another wallet
sweep_all - same as above, but sweep balances of all addresses in the account
sweep-all - same as above, but sweep balances of all addresses in the account
relay - relay a transaction from a transaction file created using ‘sweep’
or ‘transfer’ with the --no-relay option
submit - submit an autosigned transaction to a wallet and the network
@ -98,8 +105,11 @@
transaction may be signed or unsigned
txview - display detailed information about a transaction file or files
txlist - same as above, but display terse information in tabular format
dump - produce JSON dumps of wallet metadata (accounts, addresses and
labels) for a list or range of wallets
dump-json - dump wallet metadata (accounts, addresses, labels), plus address
balances, for a list or range of wallets, to standard output in
JSON format
dump - same as above, but dump metadata only and save the dumps to
separate files for each wallet
restore - same as ‘create’, but additionally restore wallet metadata from
the corresponding JSON dump files created with ‘dump’
export-outputs - export outputs of watch-only wallets for import into
@ -499,5 +509,5 @@
to delete your old hot wallets, make sure to do so securely using ‘shred’,
‘wipe’ or some other secure deletion utility.
MMGEN-WALLET 16.0.0 September 2025 MMGEN-XMRWALLET(1)
MMGEN-WALLET 16.1.0 May 2026 MMGEN-XMRWALLET(1)
```