Browse Source

update wiki documentation

The MMGen Project 2 months ago
parent
commit
556c7df15c
32 changed files with 279 additions and 243 deletions
  1. 66 12
      doc/wiki/Altcoin-and-Forkcoin-Support.md
  2. 97 119
      doc/wiki/Getting-Started-with-MMGen-Wallet.md
  3. 4 1
      doc/wiki/Install-MMGen-Wallet-on-Linux-or-macOS.md
  4. 21 69
      doc/wiki/Install-MMGen-Wallet-on-Microsoft-Windows.md
  5. 37 10
      doc/wiki/Test-Suite.md
  6. 1 1
      doc/wiki/cmds/command-help-addrgen.md
  7. 1 1
      doc/wiki/cmds/command-help-addrimport.md
  8. 7 1
      doc/wiki/cmds/command-help-autosign.md
  9. 1 1
      doc/wiki/cmds/command-help-cli.md
  10. 1 1
      doc/wiki/cmds/command-help-keygen.md
  11. 1 1
      doc/wiki/cmds/command-help-msg.md
  12. 1 1
      doc/wiki/cmds/command-help-passchg.md
  13. 1 1
      doc/wiki/cmds/command-help-passgen.md
  14. 1 1
      doc/wiki/cmds/command-help-regtest.md
  15. 1 1
      doc/wiki/cmds/command-help-seedjoin.md
  16. 1 1
      doc/wiki/cmds/command-help-seedsplit.md
  17. 1 1
      doc/wiki/cmds/command-help-subwalletgen.md
  18. 1 1
      doc/wiki/cmds/command-help-swaptxcreate.md
  19. 1 1
      doc/wiki/cmds/command-help-swaptxdo.md
  20. 14 2
      doc/wiki/cmds/command-help-tool(detail).md
  21. 2 1
      doc/wiki/cmds/command-help-tool(usage).md
  22. 7 3
      doc/wiki/cmds/command-help-tool.md
  23. 1 1
      doc/wiki/cmds/command-help-txbump.md
  24. 1 1
      doc/wiki/cmds/command-help-txcreate.md
  25. 1 1
      doc/wiki/cmds/command-help-txdo.md
  26. 1 1
      doc/wiki/cmds/command-help-txsend.md
  27. 2 3
      doc/wiki/cmds/command-help-txsign.md
  28. 1 1
      doc/wiki/cmds/command-help-walletchk.md
  29. 1 1
      doc/wiki/cmds/command-help-walletconv.md
  30. 1 1
      doc/wiki/cmds/command-help-walletgen.md
  31. 1 1
      doc/wiki/cmds/command-help-xmrwallet.md
  32. 1 1
      mmgen/data/version

+ 66 - 12
doc/wiki/Altcoin-and-Forkcoin-Support.md

@@ -4,7 +4,7 @@
 
 
 #### [Ethereum (ETH), Ethereum Classic (ETC) and ERC20 Tokens](#a_eth)
 #### [Ethereum (ETH), Ethereum Classic (ETC) and ERC20 Tokens](#a_eth)
 * [Install the Ethereum dependencies](#a_ed)
 * [Install the Ethereum dependencies](#a_ed)
-* [Install and run Geth or Parity](#a_geth)
+* [Install and run Reth, Geth or Parity](#a_geth)
 * [Transacting and other basic operations](#a_tx)
 * [Transacting and other basic operations](#a_tx)
 * [Creating and deploying ERC20 tokens](#a_dt)
 * [Creating and deploying ERC20 tokens](#a_dt)
 
 
@@ -12,6 +12,10 @@
 
 
 #### [Monero (XMR)](#a_xmr)
 #### [Monero (XMR)](#a_xmr)
 
 
+#### [THORChain (RUNE)](#a_rune)
+
+#### [Asset swaps via THORChain](#a_tcswap)
+
 #### [Key/address generation for Zcash (ZEC)](#a_zec)
 #### [Key/address generation for Zcash (ZEC)](#a_zec)
 
 
 #### [Key/address generation for 144 Bitcoin-derived altcoins](#a_kg)
 #### [Key/address generation for 144 Bitcoin-derived altcoins](#a_kg)
@@ -35,20 +39,31 @@ From the MMGen Wallet repository root, type:
 
 
 ```text
 ```text
 $ python3 -m pip install -r alt-requirements.txt # skip this for MSYS2
 $ python3 -m pip install -r alt-requirements.txt # skip this for MSYS2
-$ python3 -m pip install --no-deps -r eth-requirements.txt
 ```
 ```
 
 
-#### <a id="a_geth">Install and run Geth or Parity</a>
+#### <a id="a_geth">Install and run Reth, Geth or Parity</a>
+
+MMGen Wallet uses Rust Ethereum (Reth) or Go-Ethereum (Geth) to communicate with
+the Ethereum network, with Reth now being preferred by the MMGen Project.
+
+Installation and usage instructions for Reth can be found [here][RE] and
+prebuilt binaries [here][rb].
 
 
-MMGen Wallet uses Go-Ethereum (Geth) to communicate with the Ethereum network.
-For information on installing Geth on your system, visit the the Geth [Github
-repo][ge].  On Arch Linux systems, Go-Ethereum is a package and may be installed
-with `pacman`.
+Information for Geth can be found at its [homepage][gh] or [Github repo][ge].
+On Arch Linux systems, Geth is a package and may be installed with `pacman`.  On
+RISC-V platforms, for which no prebuilt binaries are available, Geth must be
+built from source, preferably using the most recent version of [Go][gd].
 
 
 Note that the Ethereum daemon is not used for transaction signing, so you
 Note that the Ethereum daemon is not used for transaction signing, so you
 needn’t install it on your offline machine.
 needn’t install it on your offline machine.
 
 
-For Geth, the following command-line options are required:
+For Reth, the following command-line options are required, among others:
+
+```text
+--http --http.api=eth,rpc,web3,txpool
+```
+
+For Geth, the following command-line options are required, among others:
 
 
 ```text
 ```text
 --http --http.api=eth,web3,txpool --http.port=8745
 --http --http.api=eth,web3,txpool --http.port=8745
@@ -71,8 +86,8 @@ Parity’s light client mode, which queries other nodes on the network for
 blockchain data, is supported.  Add the `--light` option to the Parity command
 blockchain data, is supported.  Add the `--light` option to the Parity command
 line and read the applicable note in the [Transacting](#a_tx) section below.
 line and read the applicable note in the [Transacting](#a_tx) section below.
 
 
-You may require other options as well.  Invoke your daemon with the `--help`
-option for more complete information.
+Other command-line options will certainly be required.  Invoke your daemon with
+the `--help` option for more complete information.
 
 
 #### <a id="a_tx">Transacting and other basic operations</a>
 #### <a id="a_tx">Transacting and other basic operations</a>
 
 
@@ -80,7 +95,7 @@ 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**][bo] guide, with some differences.  Please note the
 following:
 following:
 
 
-* Don’t forget to invoke all commands with `--coin=eth` or `--coin=etc`.
+* Don’t forget to invoke relevant commands with `--coin=eth` or `--coin=etc`.
 * Use the `--token` option with the token symbol as parameter for all token
 * Use the `--token` option with the token symbol as parameter for all token
   operations.  When importing addresses for a new token into your tracking
   operations.  When importing addresses for a new token into your tracking
   wallet, use the `--token-addr` option with the token address instead.
   wallet, use the `--token-addr` option with the token address instead.
@@ -93,6 +108,14 @@ following:
   your account balances have changed, they may be refreshed interactively within
   your account balances have changed, they may be refreshed interactively within
   the TRACKED ACCOUNTS menu.  Cached balances are stored persistently in your
   the TRACKED ACCOUNTS menu.  Cached balances are stored persistently in your
   tracking wallet.
   tracking wallet.
+* Note that sending transactions with your Ethereum node can easily deanonymize
+  you by linking the transaction with your IP address (running a Reth node
+  over Tor or Tor+VPN is theoretically possible, but problematic in practice).
+  As a solution to this problem, MMGen Wallet supports broadcasting transactions
+  via the etherscan.io website with the `--tx-proxy` option.  Sending is done
+  using the site’s public web form, so no registration or API key is required.
+  For anonymity, the connection can be routed via Tor or I2P using the `--proxy`
+  option.  See `mmgen-txsend --help` for details.
 
 
 ##### Transacting example:
 ##### Transacting example:
 
 
@@ -205,11 +228,14 @@ To transact BCH or Litecoin, first make sure the Bitcoin Cash Node or Litecoin
 daemons are properly installed ([source][si])([binaries][bi]), [running][p8] and
 daemons are properly installed ([source][si])([binaries][bi]), [running][p8] and
 synced.
 synced.
 
 
+On RISC-V platforms, Bitcoin Cash Node must be compiled from source, as no
+precompiled binaries are available.
+
 MMGen Wallet requires that the bitcoin-bchn daemon be listening on non-standard
 MMGen Wallet requires that the bitcoin-bchn daemon be listening on non-standard
 [RPC port 8432][p8].  If your daemon version is >= 0.16.2, you must use the
 [RPC port 8432][p8].  If your daemon version is >= 0.16.2, you must use the
 `--usecashaddr=0` option.
 `--usecashaddr=0` option.
 
 
-Then just add the `--coin=bch` or `--coin=ltc` option to all your MMGen Wallet
+Then just add the `--coin=bch` or `--coin=ltc` option to applicable MMGen Wallet
 commands.  It’s that simple!
 commands.  It’s that simple!
 
 
 ### <a id="a_xmr">Monero (XMR)</a>
 ### <a id="a_xmr">Monero (XMR)</a>
@@ -274,6 +300,30 @@ have multiple wallets requiring long sync times.
 To learn how to transact using your wallets, continue on to the
 To learn how to transact using your wallets, continue on to the
 [`mmgen-xmrwallet`][mx] help screen.
 [`mmgen-xmrwallet`][mx] help screen.
 
 
+### <a id="a_rune">THORChain (RUNE)</a>
+
+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
+the `--coins` parameter.
+
+Note that MMGen Wallet’s RUNE support requires no locally running node; instead,
+balances are fetched and transactions sent via a public node at ninerealms.com.
+As this can compromise your privacy, it’s recommended to proxy all
+communications via Tor or I2P: refer to the helpscreens of `mmgen-txcreate`,
+`mmgen-swaptxcreate` and `mmgen-txsend` for more information.
+
+### <a id="a_tcswap">Asset swaps via THORChain</a>
+
+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
+coin daemons for both the send and receive assets must be running and synced
+before carrying out a swap.  Depending on your setup, communication with two
+daemons simultaneously may require the use of *coin-specific options* (see
+`mmgen-swaptxcreate --longhelp`).  For usage information, examples, and a list
+of supported assets, invoke `mmgen-swaptxcreate --help`.
+
 ### <a id="a_zec">Key/address generation for Zcash (ZEC)</a>
 ### <a id="a_zec">Key/address generation for Zcash (ZEC)</a>
 
 
 MMGen Wallet supports generation of Zcash **z-addresses.**
 MMGen Wallet supports generation of Zcash **z-addresses.**
@@ -353,7 +403,11 @@ the MMGen Project.
 [si]: Install-Bitcoind-from-Source-on-Linux.md
 [si]: Install-Bitcoind-from-Source-on-Linux.md
 [bi]: Install-Bitcoind.md#a_d
 [bi]: Install-Bitcoind.md#a_d
 [p8]: Install-Bitcoind.md#a_r
 [p8]: Install-Bitcoind.md#a_r
+[gh]: https://geth.ethereum.org
 [ge]: https://github.com/ethereum/go-ethereum
 [ge]: https://github.com/ethereum/go-ethereum
 [mx]: commands/command-help-xmrwallet.md
 [mx]: commands/command-help-xmrwallet.md
 [sb]: https://github.com/ethereum/solidity/releases
 [sb]: https://github.com/ethereum/solidity/releases
 [sd]: https://docs.soliditylang.org
 [sd]: https://docs.soliditylang.org
+[RE]: https://reth.rs/overview
+[rb]: https://github.com/paradigmxyz/reth/releases
+[gd]: https://go.dev

+ 97 - 119
doc/wiki/Getting-Started-with-MMGen-Wallet.md

@@ -38,31 +38,31 @@
 
 
 #### <a id="a_bb">Before you begin</a>
 #### <a id="a_bb">Before you begin</a>
 
 
-Before you begin, note that the filenames, seed IDs and Bitcoin addresses used
-in this primer are intentionally invalid and are for purposes of illustration
-only.  As you perform the exercises, you will substitute real ones in their
-place.
+Before you begin, please note that the filenames, seed IDs and Bitcoin addresses
+used in this primer are intentionally invalid and are for purposes of
+illustration only.  As you perform the exercises, you will substitute real ones
+in their place.
 
 
 The up arrow (for repeating commands) and tab key (or Ctrl-I) (for completing
 The up arrow (for repeating commands) and tab key (or Ctrl-I) (for completing
 commands and filenames) will speed up your work at the command line greatly.
 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
 The examples in this tutorial are geared towards Bitcoin, but with some
 modification they may be used with altcoins and forkcoins for which MMGen
 modification they may be used with altcoins and forkcoins for which MMGen
-Wallet supports transaction operations (BCH, LTC, ETH, ETC and XMR as of this
-writing).  See [Altcoin-and-Forkcoin-Support][09] for more details.
+Wallet supports transaction operations (BCH, LTC, ETH, ETC, RUNE and XMR as of
+this writing).  See [Altcoin-and-Forkcoin-Support][09] for more details.
 
 
 #### <a id="a_iv">Invocation</a>
 #### <a id="a_iv">Invocation</a>
 
 
-MMGen Wallet is not a single program but a suite of lightweight scripts run from
-the command line.  Commands all begin, not surprisingly, with `mmgen`, and thus
-you may view all available commands by typing `mmgen` followed by the TAB key.
-Every command has a help screen displaying detailed usage and options
-information.  To view it, type the command name followed by `--help`.  Note that
-most command options have long and short versions.  For example, the `--help`
-option may be abbreviated to `-h`.  Exceptions are the options listed by
-`--longhelp`, which have no short versions.
+MMGen Wallet is not a single program but a suite of scripts run from the command
+line.  Commands all begin, not surprisingly, with `mmgen`, and thus you may view
+all available commands by typing `mmgen` followed by the TAB key.  Every command
+has a help screen displaying detailed usage and options information, available
+by entering the command name followed by `--help`.  Note that most command
+options have long and short versions.  For example, the `--help` option may be
+abbreviated to `-h`.  Exceptions are the options listed by `--longhelp`, which
+have no short versions.
 
 
-MMGen Wallet’s commands are generally interactive, providing you with information
+MMGen Wallet’s scripts are generally interactive, providing you with information
 and prompting you for input.  The `--verbose` or `-v` option requests commands
 and prompting you for input.  The `--verbose` or `-v` option requests commands
 to be more wordy, while the `--quiet` or `-q` option suppresses all but the most
 to be more wordy, while the `--quiet` or `-q` option suppresses all but the most
 essential information.  These options are available for all MMGen Wallet
 essential information.  These options are available for all MMGen Wallet
@@ -80,31 +80,35 @@ Sample command invocations:
 
 
 ```text
 ```text
 $ mmgen-txcreate --help
 $ mmgen-txcreate --help
+$ mmgen-txcreate --coin=eth --help
 $ mmgen-addrgen --verbose 1-10
 $ mmgen-addrgen --verbose 1-10
 $ mmgen-walletgen
 $ mmgen-walletgen
 $ mmgen-walletgen --quiet --seed-len 128
 $ mmgen-walletgen --quiet --seed-len 128
 ```
 ```
 
 
+Note that the help screens are contextual, so the first two invocations will
+produce different output.
+
 #### <a id="a_cf">Configuration file</a>
 #### <a id="a_cf">Configuration file</a>
 
 
-Just like Bitcoin Core, MMGen Wallet has its own data directory and
-configuration file.  The data directory is `.mmgen` in the user’s home directory
-and the config file is `mmgen.cfg`.  The config file contains global settings
-which you may wish to edit at some point to customize your installation.  These
-settings include the maximum transaction fee; the user name, password and
-hostname used for communicating with your Bitcoin or altcoin daemon; and a
-number of others.
+Just like Bitcoin Core, MMGen Wallet has its own data directory, `.mmgen` in the
+user’s home directory, and configuration file, `mmgen.cfg`.  The config file
+contains global settings which you may wish to edit at some point to customize
+your installation.  These settings include the maximum transaction fee; the user
+name, password and hostname used for communicating with your Bitcoin or altcoin
+daemon; and many others.  For details, consult the configuration file itself,
+which is extensively commented.
 
 
 #### <a id="a_ts">Bob and Alice regtest mode</a>
 #### <a id="a_ts">Bob and Alice regtest mode</a>
 
 
 If you just want to quickly test using MMGen Wallet, it’s possible to perform
 If you just want to quickly test using MMGen Wallet, it’s possible to perform
 all wallet generation, wallet format conversion, address and key generation, and
 all wallet generation, wallet format conversion, address and key generation, and
-address import operations on an offline computer with no blockchain and no
-bitcoin balance.
+address import operations on an offline computer with no blockchain and no coin
+balance.
 
 
-If you want to practice creating, signing and sending transactions with real
-bitcoins, however, you’ll need a fully synced blockchain and some coins to play
-with.  This involves an expenditure of both time and money.
+However, if you want to practice creating, signing and sending transactions with
+real assets, you’ll need a fully synced blockchain and some coins to play with.
+This involves an expenditure of both time and money.
 
 
 Fortunately, there’s an alternative: MMGen Wallet’s **regtest mode** creates a
 Fortunately, there’s an alternative: MMGen Wallet’s **regtest mode** creates a
 virtual network of two users, Bob and Alice, who transact with each other on a
 virtual network of two users, Bob and Alice, who transact with each other on a
@@ -158,16 +162,16 @@ Since the wallet is a small, humanly readable ASCII file, it can easily be
 printed out on paper.
 printed out on paper.
 
 
 Another highly recommended way to back up your wallet is to generate a mnemonic
 Another highly recommended way to back up your wallet is to generate a mnemonic
-seed phrase or seed file [as described below](#a_ms) and write it down or
-memorize it.  If you have an average or better memory, you’ll find memorizing
-your seed phrase to be surprisingly easy. And the peace of mind that comes with
-knowing that your coins are recoverable **even if you lose all your physical
-backups** can’t be overestimated.
+seed phrase or seed file [as described below](#a_ms) and record or memorize it.
+If you have an average or better memory, you’ll find memorizing your seed phrase
+to be surprisingly easy. And the peace of mind that comes with knowing that your
+coins are recoverable **even if you lose all your physical backups** can’t be
+overestimated.
 
 
 ### <a id="a_tr">Transacting</a>
 ### <a id="a_tr">Transacting</a>
 
 
-*The following transacting information is applicable to BTC, BCH, LTC, ETH and
-ETC.  For transacting with Monero, consult [Altcoin-and-Forkcoin-Support][ax]
+*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.*
 and the [`mmgen-xmrwallet`][mx] help screen.*
 
 
 #### <a id="a_ga">Generate addresses (offline computer)</a>
 #### <a id="a_ga">Generate addresses (offline computer)</a>
@@ -249,77 +253,51 @@ $ cat '89ABCDEF-B[1-10].addrs'
 Note that for non-legacy address types the code letter is included in the
 Note that for non-legacy address types the code letter is included in the
 filename.
 filename.
 
 
-To fund your wallet, first import the addresses into your tracking wallet and
-then send some coins to any of them.  If you run out of addresses, generate
-more.  To generate a hundred addresses you’d specify an address range of
-`1-100`.
-
-Let’s say you’ve decided to spend some BTC into the first four addresses above.
-Begin by importing these addresses into the tracking wallet on your online
-machine so their balances will be visible.  For convenience of reference,
-provide the addresses with labels.  We’ll use the labels ‘Donations’, ‘Storage
-1’, ‘Storage 2’ and ‘Storage 3’.
-
-Make a copy of the address file
-
-```text
-$ cp '89ABCDEF-S[1-10].addrs' my.addrs
-```
-
-and edit it using the text editor of your choice,
-
-```text
-$ nano my.addrs
-```
-
-adding labels to the addresses you’ve chosen to spend to:
-
-```text
-# My first MMGen addresses
-89ABCDEF SEGWIT {
-  1    36bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE  Donations
-  2    3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc  Storage 1
-  3    3HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N  Storage 2
-  4    34Tu3z1tiexXDonNsFIkvzqutE5E3pTK8s  Storage 3
-  5    3PeI55vtp2bX2uKDkAAR2c6ekHNYe4Hcq7
-  6    3FEqfEsSILwXPfMvVvVuUovzTaaST62Mnf
-  7    3LTTzuhMqPLwQ4IGCwwugny6ZMtUQJSJ1
-  8    3F9495H8EJLb54wirgZkVgI47SP7M2RQWv
-  9    3JbrCyt7BdxRE9GX1N7GiEct8UnIjPmpYd
-  10   3H7vVTk4ejUbQXw45I6g5qvPBSe9bsjDqh
-}
-```
-
-Any line beginning with `#` is a comment.  Comments may be placed at the ends
-of lines as well.
-
-Save the file, copy it onto a USB stick and transfer it to your online computer.
-
 #### <a id="a_ia">Import addresses (online computer)</a>
 #### <a id="a_ia">Import addresses (online computer)</a>
 
 
+To fund your wallet, you must import the addresses you’ve generated into your
+tracking wallet.
+
 Start the coin daemon with the required options (see the [Install-Bitcoind][08]
 Start the coin daemon with the required options (see the [Install-Bitcoind][08]
 wiki page for more details on invoking the daemon for your coin and platform).
 wiki page for more details on invoking the daemon for your coin and platform).
 
 
 Upon startup, older daemons used to automatically generate a new default
 Upon startup, older daemons used to automatically generate a new default
 `wallet.dat`, which MMGen Wallet used as its tracking wallet.  With newer
 `wallet.dat`, which MMGen Wallet used as its tracking wallet.  With newer
-daemons (e.g. Core 0.21.0 and above), the tracking wallet will be a directory
-named `mmgen-tracking-wallet`, located by default under the `wallets`
-subdirectory in your daemon’s datadir.
+daemons (e.g. Core 0.21.0 and above), the tracking wallet is generated when
+first invoking `mmgen-addrimport` and will be a directory named
+`mmgen-tracking-wallet` located by default under the `wallets` subdirectory
+in your coin daemon’s datadir.
 
 
-Import the ten addresses into your new tracking wallet with the command:
+Create your tracking wallet and import the ten addresses generated above into
+it as follows:
 
 
 ```text
 ```text
-$ mmgen-addrimport --batch my.addrs
+$ mmgen-addrimport my.addrs
 ```
 ```
 
 
-These addresses will now be tracked: any BTC transferred to them will show up in
-your listing of address balances.  Balances can be viewed using `mmgen-tool
-listaddresses` (the `showempty` option requests addresses with empty balances
-to be displayed too).
+These addresses are now tracked: any BTC transferred to them will show up in
+your listing of address balances, and balances will be updated automatically
+as your node syncs with the blockchain.  Balances can be viewed using
+`mmgen-tool listaddresses`:
 
 
 ```text
 ```text
-$ mmgen-tool listaddresses showempty=1
-MMGenID       ADDRESS                             COMMENT    BALANCE
+$ mmgen-tool listaddresses
+MMGenID       Address                             Comment    Balance
+89ABCDEF:S:1  36bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE               0
+89ABCDEF:S:2  3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc               0
+89ABCDEF:S:3  3HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N               0
+89ABCDEF:S:4  34Tu3z1tiexXDonNsFIkvzqutE5E3pTK8s               0
+89ABCDEF:S:5  3PeI55vtp2bX2uKDkAAR2c6ekHNYe4Hcq7               0
+...
+TOTAL: 0 BTC
+```
+
+Invoke `mmgen-tool listaddresses interactive=1` and add some comments to your
+newly-imported addresses using the ‘l’ key.  Depending on your comments, your
+output will now look something like this:
+
+```text
+MMGenID       Address                             Comment    Balance
 89ABCDEF:S:1  36bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE  Donations    0
 89ABCDEF:S:1  36bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE  Donations    0
 89ABCDEF:S:2  3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc  Storage 1    0
 89ABCDEF:S:2  3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc  Storage 1    0
 89ABCDEF:S:3  3HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N  Storage 2    0
 89ABCDEF:S:3  3HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N  Storage 2    0
@@ -330,10 +308,11 @@ TOTAL: 0 BTC
 ```
 ```
 
 
 *While not covered in this introduction, note that it’s also possible to [import
 *While not covered in this introduction, note that it’s also possible to [import
-external coin addresses into your tracking wallet][01].  This allows MMGen
+non-MMGen coin addresses into your tracking wallet][01].  This allows MMGen
 Wallet to track and spend funds from another wallet without having to transfer
 Wallet to track and spend funds from another wallet without having to transfer
-the coins through the network.  To do this, you must save the keys corresponding
-to the given addresses in a separate file for use during transaction signing.*
+the coins via the blockchain.  To do this, you must save the private keys
+corresponding to the given addresses in a separate file for use during
+transaction signing.*
 
 
 Note that each address has a unique ID (the ‘MMGen ID’) consisting of a Seed ID,
 Note that each address has a unique ID (the ‘MMGen ID’) consisting of a Seed ID,
 address type code letter, and index.  Addresses of different types may be
 address type code letter, and index.  Addresses of different types may be
@@ -342,29 +321,27 @@ sub-seeds you needn’t worry about key reuse.  For example, the addresses
 `89ABCDEF:S:1` and `89ABCDEF:B:1` are cryptographically unrelated: no one but the
 `89ABCDEF:S:1` and `89ABCDEF:B:1` are cryptographically unrelated: no one but the
 wallet’s owner can see that they were generated from the same seed.
 wallet’s owner can see that they were generated from the same seed.
 
 
-Now that your addresses are being tracked, you may go ahead and send some BTC to
-them over the Bitcoin network.  If you send 0.1, 0.2, 0.3 and 0.4 BTC
-respectively, your address listing will look like this after the transactions
-have confirmed:
+Now that your addresses are being tracked, you may send some BTC to them over
+the Bitcoin network.  If you send 0.1, 0.2, 0.3 and 0.4 BTC respectively, your
+address listing will look like this after the transactions have confirmed:
 
 
 ```text
 ```text
 $ mmgen-tool listaddresses
 $ mmgen-tool listaddresses
-MMGenID       COMMENT    BALANCE
-89ABCDEF:S:1  Donations    0.1
-89ABCDEF:S:2  Storage 1    0.2
-89ABCDEF:S:3  Storage 2    0.3
-89ABCDEF:S:4  Storage 3    0.4
+MMGenID       Address                             Comment    Balance
+89ABCDEF:S:1  36bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE  Donations    0.1
+89ABCDEF:S:2  3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc  Storage 1    0.2
+89ABCDEF:S:3  3HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N  Storage 2    0.3
+89ABCDEF:S:4  34Tu3z1tiexXDonNsFIkvzqutE5E3pTK8s  Storage 3    0.4
 TOTAL: 1 BTC
 TOTAL: 1 BTC
 ```
 ```
 
 
 #### <a id="a_ct">Create a transaction (online computer)</a>
 #### <a id="a_ct">Create a transaction (online computer)</a>
 
 
-Now that you have some BTC under MMGen Wallets’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
+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
 with different combinations of inputs and outputs.  Of course, if you’re using
 with different combinations of inputs and outputs.  Of course, if you’re using
-testnet or regtest mode, then you risk nothing even when broadcasting
-transactions.
+testnet or regtest mode, you risk nothing even when broadcasting transactions.
 
 
 To send 0.1 BTC to the a third-party address
 To send 0.1 BTC to the a third-party address
 `3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc`, for example, and send the change back to
 `3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc`, for example, and send the change back to
@@ -426,8 +403,9 @@ amount of 0.1 BTC, plus the transaction fee (for more on fees, see ‘Transactio
 Fees’ under ‘Advanced Topics’ below).  Output #2 is worth 0.2 BTC, which is
 Fees’ under ‘Advanced Topics’ below).  Output #2 is worth 0.2 BTC, which is
 sufficient, so we’ll choose that and hit ENTER.  When prompted for a
 sufficient, so we’ll choose that and hit ENTER.  When prompted for a
 transaction fee, we’ll choose 0.0001 BTC (note that integer fees followed by
 transaction fee, we’ll choose 0.0001 BTC (note that integer fees followed by
-the letter ‘s’ for “satoshis per byte” are also permissible).  After a couple
-more prompts and confirmations, your transaction will be saved:
+the letter ‘s’ for “satoshis per byte” are also accepted, and this is actually
+the preferred way to indicate fees).  After a couple more prompts and
+confirmations, your transaction will be saved:
 
 
 ```text
 ```text
 Transaction written to file 'FEDCBA[0.1].rawtx'
 Transaction written to file 'FEDCBA[0.1].rawtx'
@@ -475,17 +453,17 @@ Once the transaction is broadcast to the network and confirmed, your address
 listing should look something like this:
 listing should look something like this:
 
 
 ```text
 ```text
-$ mmgen-tool listaddresses minconf=1
-MMGenID       COMMENT    BALANCE
-89ABCDEF:S:1  Donations    0.1
-89ABCDEF:S:3  Storage 2    0.3
-89ABCDEF:S:4  Storage 3    0.4
-89ABCDEF:S:5               0.0999
+$ mmgen-tool listaddresses
+MMGenID       Address                             Comment    Balance
+89ABCDEF:S:1  36bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE  Donations    0.1
+89ABCDEF:S:3  3HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N  Storage 2    0.3
+89ABCDEF:S:4  34Tu3z1tiexXDonNsFIkvzqutE5E3pTK8s  Storage 3    0.4
+89ABCDEF:S:5  3PeI55vtp2bX2uKDkAAR2c6ekHNYe4Hcq7               0.0999
 TOTAL: 0.8999 BTC
 TOTAL: 0.8999 BTC
 ```
 ```
 
 
-Alternatively, you may use `mmgen-tool twview` or `mmgen-txcreate -i` for more
-detailed and configurable output:
+Alternatively, you may use view your addresses with `mmgen-tool twview`, which
+lists only unspent outputs and provides some additional information:
 
 
 ```text
 ```text
 $ mmgen-tool twview
 $ mmgen-tool twview
@@ -1149,7 +1127,7 @@ $ python3 -m pip install user --upgrade dist/*.whl
 [07]: commands/command-help-autosign.md
 [07]: commands/command-help-autosign.md
 [08]: Install-Bitcoind.md
 [08]: Install-Bitcoind.md
 [09]: Altcoin-and-Forkcoin-Support.md
 [09]: Altcoin-and-Forkcoin-Support.md
-[ax]: Altcoin-and-Forkcoin-Support.md#a_xmr
+[x]:  Altcoin-and-Forkcoin-Support.md#a_xmr
 [cp]: ../../../../commits/master
 [cp]: ../../../../commits/master
 [mx]: commands/command-help-xmrwallet.md
 [mx]: commands/command-help-xmrwallet.md
 [li]: Install-MMGen-Wallet-on-Linux-or-macOS.md
 [li]: Install-MMGen-Wallet-on-Linux-or-macOS.md

+ 4 - 1
doc/wiki/Install-MMGen-Wallet-on-Linux-or-macOS.md

@@ -11,7 +11,7 @@ For computers with no Internet connection, see **Note for offline machines** bel
 #### Debian/Ubuntu:
 #### Debian/Ubuntu:
 
 
 ```text
 ```text
-$ sudo apt-get install curl git gcc libtool make autoconf libgmp-dev libssl-dev libpcre2-dev libmpfr-dev libmpc-dev python3-dev python3-pip libsecp256k1-dev
+$ sudo apt-get install curl git gcc libtool make autoconf e2fsprogs libgmp-dev libssl-dev libpcre2-dev libmpfr-dev libmpc-dev python3-dev python3-pip libsecp256k1-dev
 ```
 ```
 
 
 #### Arch Linux:
 #### Arch Linux:
@@ -26,6 +26,8 @@ $ sudo pacman -S curl git gcc libtool make autoconf automake autogen pcre python
 $ brew install python bash autoconf coreutils gcc libmpc libtool readline secp256k1
 $ brew install python bash autoconf coreutils gcc libmpc libtool readline secp256k1
 ```
 ```
 
 
+On RISC-V machines, you may additionally need to install the `libffi-dev` package and [Rust][rs]
+
 You may wish to use a [virtual environment][vv] to keep your MMGen Wallet
 You may wish to use a [virtual environment][vv] to keep your MMGen Wallet
 installation isolated from the rest of your Python packages.
 installation isolated from the rest of your Python packages.
 
 
@@ -110,3 +112,4 @@ Congratulations, your installation is now complete!  You can now proceed to
 [af]: Altcoin-and-Forkcoin-Support.md
 [af]: Altcoin-and-Forkcoin-Support.md
 [ec]: https://github.com/bitcoin-core/secp256k1.git
 [ec]: https://github.com/bitcoin-core/secp256k1.git
 [vv]: https://docs.python.org/3/library/venv.html
 [vv]: https://docs.python.org/3/library/venv.html
+[rs]: https://rustup.rs

+ 21 - 69
doc/wiki/Install-MMGen-Wallet-on-Microsoft-Windows.md

@@ -11,15 +11,13 @@
 	* [Offline install](#a_md1)
 	* [Offline install](#a_md1)
 * [4. Set up your shell environment](#a_ev)
 * [4. Set up your shell environment](#a_ev)
 * [5. Choose your Python environment](#a_pev)
 * [5. Choose your Python environment](#a_pev)
-* [6. Install the Python ECDSA library (offline install only)](#a_ec)
-* [7. Install the standalone scrypt package (required for strong password hashing)](#a_sc)
-* [8. Clone and copy the secp256k1 library (offline install only)](#a_se)
-* [9. Install MMGen Wallet](#a_mm)
+* [6. Install required Python packages](#a_pp)
+* [7. Clone and copy the secp256k1 library (offline install only)](#a_se)
+* [8. Install MMGen Wallet](#a_mm)
 	* [Stable version](#a_mms)
 	* [Stable version](#a_mms)
 	* [Development version](#a_mmd)
 	* [Development version](#a_mmd)
-* [10. Install Python Ethereum dependencies (if applicable)](#a_pe)
-* [11. Install and launch your coin daemons](#a_cd)
-* [12. You’re done!](#a_do)
+* [9. Install and launch your coin daemons](#a_cd)
+* [10. You’re done!](#a_do)
 
 
 #### [Keeping your installation up to date](#a_u)
 #### [Keeping your installation up to date](#a_u)
 * [Upgrading MSYS2](#a_us)
 * [Upgrading MSYS2](#a_us)
@@ -106,14 +104,12 @@ $ ls 'C:\\msys64\etc'  # the path as seen by Windows
 >
 >
 >> <https://mirror.msys2.org/msys/x86_64/msys.db>  
 >> <https://mirror.msys2.org/msys/x86_64/msys.db>  
 >> <https://mirror.msys2.org/msys/x86_64/msys.db.sig>  
 >> <https://mirror.msys2.org/msys/x86_64/msys.db.sig>  
->> <https://mirror.msys2.org/mingw/x86_64/mingw64.db>  
->> <https://mirror.msys2.org/mingw/x86_64/mingw64.db.sig>  
->> <https://mirror.msys2.org/mingw/i686/mingw32.db>  
->> <https://mirror.msys2.org/mingw/i686/mingw32.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>  
 >> <https://mirror.msys2.org/mingw/clang64/clang64.db.sig>  
 >> <https://mirror.msys2.org/mingw/clang64/clang64.db.sig>  
->> <https://mirror.msys2.org/mingw/clang32/clang32.db>  
->> <https://mirror.msys2.org/mingw/clang32/clang32.db.sig>  
 >> <https://mirror.msys2.org/mingw/clangarm64/clangarm64.db>  
 >> <https://mirror.msys2.org/mingw/clangarm64/clangarm64.db>  
 >> <https://mirror.msys2.org/mingw/clangarm64/clangarm64.db.sig>  
 >> <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>  
@@ -195,7 +191,8 @@ pacman -S tar git vim autoconf automake-wrapper autogen libtool cygrunsrv \
 	mingw-w64-ucrt-x86_64-python-pysocks \
 	mingw-w64-ucrt-x86_64-python-pysocks \
 	mingw-w64-ucrt-x86_64-python-requests \
 	mingw-w64-ucrt-x86_64-python-requests \
 	mingw-w64-ucrt-x86_64-python-aiohttp \
 	mingw-w64-ucrt-x86_64-python-aiohttp \
-	mingw-w64-ucrt-x86_64-python-pyreadline3
+	mingw-w64-ucrt-x86_64-python-pyreadline3 \
+	mingw-w64-ucrt-x86_64-python-lxml
 ```
 ```
 
 
 ### <a id="a_ev">4. Set up your shell environment</a>
 ### <a id="a_ev">4. Set up your shell environment</a>
@@ -236,46 +233,25 @@ If you choose not to use a virtual environment, then you should add `--user` to
 the command line every time you run `pip install` as directed below.  This will
 the command line every time you run `pip install` as directed below.  This will
 prevent pip from installing packages in the system directory.
 prevent pip from installing packages in the system directory.
 
 
-### <a id="a_ec">6. Install the Python ECDSA library (offline install only)</a>
+### <a id="a_pp">6. Install required Python packages</a>
 
 
 On your online machine:
 On your online machine:
 
 
 ```text
 ```text
 $ python3 -m pip download ecdsa
 $ python3 -m pip download ecdsa
-```
-
-Copy the downloaded file to your offline machine and install:
-
-```text
-$ python3 -m pip install ecdsa-*.whl
-```
-
-### <a id="a_sc">7. Install the standalone scrypt package (required for strong password hashing)</a>
-
-Due to a faulty implementation of the `scrypt` function included in Python’s
-`hashlib`, the standalone `scrypt` module is required for stronger-than-default
-password hashing (i.e. hash presets greater than `3`).  Installing the package is
-therefore highly advisable.
+$ python3 -m pip download --no-binary :all: scrypt==0.8.27 aiohttp==3.12.9
 
 
-On your online machine, clone the Py-Scrypt repository from Github:
-
-```text
-$ git clone https://github.com/holgern/py-scrypt.git
 ```
 ```
 
 
-Offline install:
-
-> Copy the cloned repo to your offline machine.
-
-Build and install:
+Copy the downloaded files to your offline machine (if applicable) and install:
 
 
 ```text
 ```text
-$ cd py-scrypt
-$ python3 -m build --no-isolation
-$ python3 -m pip install dist/*.whl
+$ 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">8. Clone and copy the secp256k1 library (offline install only)</a>
+### <a id="a_se">7. Clone and copy the secp256k1 library (offline install only)</a>
 
 
 On your online machine, clone the secp256k1 repository from Github:
 On your online machine, clone the secp256k1 repository from Github:
 
 
@@ -292,7 +268,7 @@ $ cp -a /path/to/secp256k1/repo/secp256k1 ~/.cache/mmgen
 $ ls ~/.cache/mmgen/secp256k1/autogen.sh # check that files were correctly copied
 $ ls ~/.cache/mmgen/secp256k1/autogen.sh # check that files were correctly copied
 ```
 ```
 
 
-### <a id="a_mm">9. Install MMGen Wallet</a>
+### <a id="a_mm">8. Install MMGen Wallet</a>
 
 
 Now you’re ready to install MMGen Wallet itself.
 Now you’re ready to install MMGen Wallet itself.
 
 
@@ -350,31 +326,7 @@ occasion.
 Note that MMGen Wallet has a test suite.  Refer to the [Test Suite][ts] wiki
 Note that MMGen Wallet has a test suite.  Refer to the [Test Suite][ts] wiki
 page for details.
 page for details.
 
 
-### <a id="a_pe">10. Install Python Ethereum dependencies (if applicable)</a>
-
-If you’ll be using MMGen Wallet with Ethereum, then you must install a few
-dependencies.  From the MMGen repository root, type the following:
-
-Online install:
-
-> ```text
-> $ python3 -m pip install --no-deps -r eth-requirements.txt
-> ```
-
-Offline install:
-
-> ```text
-> $ python3 -m pip download --no-deps -r eth-requirements.txt
-> ```
->
-> Transfer the downloaded files to your offline machine, `cd` to the directory
-> containing the files and install them:
->
-> ```text
-> $ python3 -m pip install --no-deps *.whl
-> ```
-
-### <a id="a_cd">11. Install and launch your coin daemons</a>
+### <a id="a_cd">9. Install and launch your coin daemons</a>
 
 
 At this point your installation will be able to generate wallets, along with
 At this point your installation will be able to generate wallets, along with
 keys and addresses for all supported coins.  However, if you intend to do any
 keys and addresses for all supported coins.  However, if you intend to do any
@@ -399,7 +351,7 @@ Please note that Ethereum daemons perform rather poorly under Windows due to
 threading limitations.  Unless you have very fast hardware, transacting and
 threading limitations.  Unless you have very fast hardware, transacting and
 syncing the blockchain will be painfully slow.
 syncing the blockchain will be painfully slow.
 
 
-### <a id="a_do">12. You’re done!</a>
+### <a id="a_do">10. You’re done!</a>
 
 
 Congratulations, your installation is now complete, and you can proceed to
 Congratulations, your installation is now complete, and you can proceed to
 [**Getting Started with MMGen Wallet**][gs].  Note that all features supported
 [**Getting Started with MMGen Wallet**][gs].  Note that all features supported

+ 37 - 10
doc/wiki/Test-Suite.md

@@ -38,6 +38,8 @@ Every time the container is started, you may need to create the files afresh:
 
 
 ### BTC-only testing
 ### BTC-only testing
 
 
+Install the Bitcoin Core daemon [(source)][sd] [(binaries)][bd].
+
 Install Pycoin:
 Install Pycoin:
 
 
 ```text
 ```text
@@ -49,7 +51,8 @@ $ python3 -m pip download pycoin # online
 $ python3 -m pip install --no-build-isolation pycoin-*.tar.gz # offline
 $ python3 -m pip install --no-build-isolation pycoin-*.tar.gz # offline
 ```
 ```
 
 
-CD to the MMGen Wallet repository root and build without installing:
+CD to the MMGen Wallet repository root and build the secp256k1 extension module
+in place:
 
 
 ```text
 ```text
 $ cd path/to/mmgen/repo
 $ cd path/to/mmgen/repo
@@ -62,7 +65,8 @@ Run the following if upgrading from a previous version of MMGen:
 $ test/cmdtest.py clean
 $ test/cmdtest.py clean
 ```
 ```
 
 
-Run the test suite in fast mode, skipping altcoin tests:
+Run the test suite in fast mode, skipping altcoin tests (fast mode skips
+non-essential tests and uses fewer rounds for repeated tests):
 
 
 ```text
 ```text
 $ test/test-release.sh -FA
 $ test/test-release.sh -FA
@@ -75,9 +79,10 @@ Complete the BTC-only installation steps above, without running the test.
 Make sure the [Bitcoin Cash Node][cnd], [Litecoin][ld] and [Monero][md]
 Make sure the [Bitcoin Cash Node][cnd], [Litecoin][ld] and [Monero][md]
 daemons are installed on your system.
 daemons are installed on your system.
 
 
-Install [Parity, Geth and the ETH Python requirements][oe], optionally the
+Install [Reth, Geth, Parity and the ETH Python requirements][rg], optionally the
 [Solidity compiler][sc], and [the XMR Python requirements][xr] as described on
 [Solidity compiler][sc], and [the XMR Python requirements][xr] as described on
-the Altcoin-and-Forkcoin-Support page.
+the Altcoin-and-Forkcoin-Support page.  For Ethereum testing in fast mode, Reth
+may be omitted.
 
 
 In addition, you must install the following helper programs and libraries (MSYS2
 In addition, you must install the following helper programs and libraries (MSYS2
 users can omit Zcash-Mini and leave out `sudo` in commands):
 users can omit Zcash-Mini and leave out `sudo` in commands):
@@ -112,32 +117,54 @@ may also be started and stopped manually at the DOS or MSYS2 prompt as follows
 # net stop msys2_sshd
 # net stop msys2_sshd
 ```
 ```
 
 
-#### Monero-Python
+#### Install Monero-Python
 
 
 ```text
 ```text
 $ python3 -m pip install pycryptodome ipaddress varint
 $ python3 -m pip install pycryptodome ipaddress varint
 $ python3 -m pip install --no-deps monero
 $ python3 -m pip install --no-deps monero
 ```
 ```
 
 
-#### Eth-Keys
+#### Install Eth-Keys (non-MSYS2 systems)
+
+This pulls in a lot of dependencies.  If you prefer, you may install the
+openethereum ‘ethkey’ utility instead, if it’s available on your platform.
 
 
 ```text
 ```text
 $ python3 -m pip install eth-keys
 $ python3 -m pip install eth-keys
 ```
 ```
 
 
-#### Vanitygen PlusPlus (forked from Vanitygen Plus)
+#### Install OpenEthereum Ethkey (alternative to 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].
+
+#### Install Vanitygen PlusPlus (a fork of Vanitygen Plus)
 
 
 ```text
 ```text
 $ git clone https://github.com/10gic/vanitygen-plusplus
 $ git clone https://github.com/10gic/vanitygen-plusplus
 $ cd vanitygen-plusplus
 $ cd vanitygen-plusplus
 $ git checkout -b vanitygen-plus e7858035d092  # rewind to fork commit
 $ git checkout -b vanitygen-plus e7858035d092  # rewind to fork commit
+```
+
+Edit the Makefile, changing `-lpcre` to `-lpcre2-posix` on the second line.
+
+```text
 $ make keyconv # ‘mingw32-make.exe keyconv’ for MSYS2
 $ make keyconv # ‘mingw32-make.exe keyconv’ for MSYS2
 $ sudo install --strip keyconv /usr/local/bin  # Linux, macOS
 $ sudo install --strip keyconv /usr/local/bin  # Linux, macOS
 $ install --strip keyconv.exe /usr/local/bin   # MSYS2
 $ install --strip keyconv.exe /usr/local/bin   # MSYS2
 $ cd ..
 $ cd ..
 ```
 ```
 
 
-#### Zcash-Mini
+#### Install Zcash-Mini
 
 
 ```text
 ```text
 $ sudo apt-get install golang  # skip this if Go is already installed
 $ sudo apt-get install golang  # skip this if Go is already installed
@@ -163,7 +190,7 @@ If you experience such a failure, just restart the test.
 
 
 ### Run the tests
 ### Run the tests
 
 
-Now you can run the test suite for all coins:
+Now you may run the test suite in fast mode for all coins:
 
 
 ```text
 ```text
 $ test/test-release.sh -F
 $ test/test-release.sh -F
@@ -205,7 +232,7 @@ display the commands’ output on the screen as they’re being run.
 [ad]: https://download.bitcoinabc.org/
 [ad]: https://download.bitcoinabc.org/
 [cnd]: https://bitcoincashnode.org/
 [cnd]: https://bitcoincashnode.org/
 [ld]: https://download.litecoin.org/litecoin-0.17.1/
 [ld]: https://download.litecoin.org/litecoin-0.17.1/
-[oe]: Altcoin-and-Forkcoin-Support.md#a_ed
+[rg]: Altcoin-and-Forkcoin-Support.md#a_geth
 [sc]: Altcoin-and-Forkcoin-Support.md#a_dt
 [sc]: Altcoin-and-Forkcoin-Support.md#a_dt
 [xr]: Altcoin-and-Forkcoin-Support.md#a_xmr_req
 [xr]: Altcoin-and-Forkcoin-Support.md#a_xmr_req
 [oz]: https://github.com/openethereum/openethereum/releases/tag/v3.1.0
 [oz]: https://github.com/openethereum/openethereum/releases/tag/v3.1.0

+ 1 - 1
doc/wiki/cmds/command-help-addrgen.md

@@ -121,5 +121,5 @@
     MMGenWallet        .mmdat    wallet,w
     MMGenWallet        .mmdat    wallet,w
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
 
 
-  MMGEN-WALLET 15.1.dev44        June 2025                    MMGEN-ADDRGEN(1)
+  MMGEN-WALLET 16.0.0            September 2025               MMGEN-ADDRGEN(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-addrimport.md

@@ -31,5 +31,5 @@
 
 
   It’s recommended to use ‘--rpc-backend=aio’ with ‘--rescan’.
   It’s recommended to use ‘--rpc-backend=aio’ with ‘--rescan’.
 
 
-  MMGEN v15.1.dev18              March 2025                MMGEN-ADDRIMPORT(1)
+  MMGEN-WALLET 16.0.0            September 2025            MMGEN-ADDRIMPORT(1)
 ```
 ```

+ 7 - 1
doc/wiki/cmds/command-help-autosign.md

@@ -6,6 +6,12 @@
       --longhelp        Print help message for long (global) options
       --longhelp        Print help message for long (global) options
   -c, --coins c         Coins to sign for (comma-separated list)
   -c, --coins c         Coins to sign for (comma-separated list)
   -I, --no-insert-check Don’t check for device insertion
   -I, --no-insert-check Don’t check for device insertion
+  -k, --keys-from-file F Use wif keys listed in file ‘F’ for signing non-MMGen
+                        inputs. The file may be MMGen encrypted if desired. The
+                        ‘setup’ operation creates a temporary encrypted copy of
+                        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 only)
   -L, --led             Use status LED to signal standby, busy and error
   -L, --led             Use status LED to signal standby, busy and error
   -m, --mountpoint M    Specify an alternate mountpoint 'M'
   -m, --mountpoint M    Specify an alternate mountpoint 'M'
@@ -127,5 +133,5 @@
   Always remember to power off the signing machine when your signing session
   Always remember to power off the signing machine when your signing session
   is over.
   is over.
 
 
-  MMGEN v15.1.dev18              March 2025                  MMGEN-AUTOSIGN(1)
+  MMGEN-WALLET 16.0.0            September 2025              MMGEN-AUTOSIGN(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-cli.md

@@ -31,5 +31,5 @@
       '[{"txid":"832f5aa9af55dc453314e26869c8f96db1f2a9acac9f23ae18d396903971e0c6","vout":0}]' \
       '[{"txid":"832f5aa9af55dc453314e26869c8f96db1f2a9acac9f23ae18d396903971e0c6","vout":0}]' \
       '[{"1111111111111111111114oLvT2":0.001}]'
       '[{"1111111111111111111114oLvT2":0.001}]'
 
 
-  MMGEN v15.1.dev19              March 2025                       MMGEN-CLI(1)
+  MMGEN-WALLET 16.0.0            September 2025                   MMGEN-CLI(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-keygen.md

@@ -126,5 +126,5 @@
     MMGenWallet        .mmdat    wallet,w
     MMGenWallet        .mmdat    wallet,w
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
 
 
-  MMGEN-WALLET 15.1.dev44        June 2025                     MMGEN-KEYGEN(1)
+  MMGEN-WALLET 16.0.0            September 2025                MMGEN-KEYGEN(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-msg.md

@@ -107,5 +107,5 @@
   Verify and display the exported JSON signature data:
   Verify and display the exported JSON signature data:
   $ mmgen-msg verify signatures.json
   $ mmgen-msg verify signatures.json
 
 
-  MMGEN-WALLET 15.1.dev44        June 2025                        MMGEN-MSG(1)
+  MMGEN-WALLET 16.0.0            September 2025                   MMGEN-MSG(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-passchg.md

@@ -53,5 +53,5 @@
     MMGenWallet        .mmdat    wallet,w
     MMGenWallet        .mmdat    wallet,w
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
 
 
-  MMGEN v15.1.dev18              March 2025                   MMGEN-PASSCHG(1)
+  MMGEN-WALLET 16.0.0            September 2025               MMGEN-PASSCHG(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-passgen.md

@@ -101,5 +101,5 @@
     MMGenWallet        .mmdat    wallet,w
     MMGenWallet        .mmdat    wallet,w
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
 
 
-  MMGEN v15.1.dev18              March 2025                   MMGEN-PASSGEN(1)
+  MMGEN-WALLET 16.0.0            September 2025               MMGEN-PASSGEN(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-regtest.md

@@ -25,5 +25,5 @@
     wallet_cli      - execute a wallet RPC call with supplied arguments (wallet
     wallet_cli      - execute a wallet RPC call with supplied arguments (wallet
                       is first argument)
                       is first argument)
 
 
-  MMGEN v15.1.dev18              March 2025                   MMGEN-REGTEST(1)
+  MMGEN-WALLET 16.0.0            September 2025               MMGEN-REGTEST(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-seedjoin.md

@@ -62,5 +62,5 @@
     MMGenWallet        .mmdat    wallet,w
     MMGenWallet        .mmdat    wallet,w
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
 
 
-  MMGEN v15.1.dev18              March 2025                  MMGEN-SEEDJOIN(1)
+  MMGEN-WALLET 16.0.0            September 2025              MMGEN-SEEDJOIN(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-seedsplit.md

@@ -144,5 +144,5 @@
     MMGenWallet        .mmdat    wallet,w
     MMGenWallet        .mmdat    wallet,w
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
 
 
-  MMGEN v15.1.dev18              March 2025                 MMGEN-SEEDSPLIT(1)
+  MMGEN-WALLET 16.0.0            September 2025             MMGEN-SEEDSPLIT(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-subwalletgen.md

@@ -97,5 +97,5 @@
     MMGenWallet        .mmdat    wallet,w
     MMGenWallet        .mmdat    wallet,w
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
 
 
-  MMGEN v15.1.dev18              March 2025               MMGEN-SUBWALLETGEN(1)
+  MMGEN-WALLET 16.0.0            September 2025           MMGEN-SUBWALLETGEN(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-swaptxcreate.md

@@ -254,5 +254,5 @@
 
 
       $ https_proxy=http://gw1:4444 mmgen-swaptxcreate --proxy=env RUNE 1000 BTC
       $ https_proxy=http://gw1:4444 mmgen-swaptxcreate --proxy=env RUNE 1000 BTC
 
 
-  MMGEN-WALLET 15.1.dev47        June 2025                MMGEN-SWAPTXCREATE(1)
+  MMGEN-WALLET 16.0.0            September 2025           MMGEN-SWAPTXCREATE(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-swaptxdo.md

@@ -316,5 +316,5 @@
 
 
       $ https_proxy=http://gw1:4444 mmgen-swaptxdo --proxy=env RUNE 1000 BTC
       $ https_proxy=http://gw1:4444 mmgen-swaptxdo --proxy=env RUNE 1000 BTC
 
 
-  MMGEN-WALLET 15.1.dev47        June 2025                   MMGEN-SWAPTXDO(1)
+  MMGEN-WALLET 16.0.0            September 2025              MMGEN-SWAPTXDO(1)
 ```
 ```

+ 14 - 2
doc/wiki/cmds/command-help-tool(detail).md

@@ -499,10 +499,22 @@ Required ARG (type shown in square brackets):
   pubkeyhex [str] (use '-' to read from STDIN)
   pubkeyhex [str] (use '-' to read from STDIN)
 ```
 ```
 
 
+### `mmgen-tool privhex2pair`
+
+```text
+Generate a wifkey/address pair from the provided hexadecimal key
+
+USAGE: mmgen-tool [OPTS] privhex2pair ARG
+
+Required ARG (type shown in square brackets):
+
+  privhex [str] (use '-' to read from STDIN)
+```
+
 ### `mmgen-tool randpair`
 ### `mmgen-tool randpair`
 
 
 ```text
 ```text
-Generate a random private key/address pair
+Generate a random wifkey/address pair
 
 
 USAGE: mmgen-tool [OPTS] randpair
 USAGE: mmgen-tool [OPTS] randpair
 ```
 ```
@@ -1240,5 +1252,5 @@ Optional KEYWORD ARGS (type and default value shown in square brackets):
 ```
 ```
 
 
 ```text
 ```text
-MMGEN v15.1.dev18              March 2025                 MMGEN-TOOL(DETAIL)(1)
+MMGEN-WALLET 16.0.0            September 2025             MMGEN-TOOL(DETAIL)(1)
 ```
 ```

+ 2 - 1
doc/wiki/cmds/command-help-tool(usage).md

@@ -61,6 +61,7 @@ GENERAL USAGE INFORMATION FOR MMGEN-TOOL COMMANDS
     pubhash2addr         pubhashhex [str or STDIN]
     pubhash2addr         pubhashhex [str or STDIN]
     pubhex2addr          pubkeyhex [str or STDIN]
     pubhex2addr          pubkeyhex [str or STDIN]
     pubhex2redeem_script pubkeyhex [str or STDIN]
     pubhex2redeem_script pubkeyhex [str or STDIN]
+    privhex2pair         privhex [str or STDIN]
     randpair
     randpair
     randwif
     randwif
     redeem_script2addr   redeem_script_hex [str or STDIN]
     redeem_script2addr   redeem_script_hex [str or STDIN]
@@ -187,5 +188,5 @@ EXAMPLES:
   Same as above, but supply input via STDIN:
   Same as above, but supply input via STDIN:
   $ echo "deadbeefcafe" | mmgen-tool hexreverse -
   $ echo "deadbeefcafe" | mmgen-tool hexreverse -
 
 
-  MMGEN v15.1.dev18              March 2025               MMGEN-TOOL(USAGE)(1)
+  MMGEN-WALLET 16.0.0            September 2025           MMGEN-TOOL(USAGE)(1)
 ```
 ```

+ 7 - 3
doc/wiki/cmds/command-help-tool.md

@@ -19,7 +19,9 @@
   -t, --type t           Specify address type (valid choices: 'legacy',
   -t, --type t           Specify address type (valid choices: 'legacy',
                          'compressed', 'segwit', 'bech32', 'zcash_z')
                          'compressed', 'segwit', 'bech32', 'zcash_z')
   -v, --verbose          Produce more verbose output
   -v, --verbose          Produce more verbose output
-  -X, --cached-balances  Use cached balances (Ethereum only)
+  -x, --proxy P          Proxy HTTP connections 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
   -y, --yes              Answer 'yes' to prompts, suppress non-essential output
 
 
 
 
@@ -84,7 +86,9 @@
     pubhex2addr          - convert a hexadecimal pubkey to an address
     pubhex2addr          - convert a hexadecimal pubkey to an address
     pubhex2redeem_script - convert a hexadecimal pubkey to a Segwit
     pubhex2redeem_script - convert a hexadecimal pubkey to a Segwit
                            P2SH-P2WPKH redeem script
                            P2SH-P2WPKH redeem script
-    randpair             - generate a random private key/address pair
+    privhex2pair         - generate a wifkey/address pair from the provided
+                           hexadecimal key
+    randpair             - generate a random wifkey/address pair
     randwif              - generate a random private key in WIF format
     randwif              - generate a random private key in WIF format
     redeem_script2addr   - convert a Segwit P2SH-P2WPKH redeem script to an
     redeem_script2addr   - convert a Segwit P2SH-P2WPKH redeem script to an
                            address
                            address
@@ -198,5 +202,5 @@
 
 
   Type ‘mmgen-tool help <command>’ for help on a particular command
   Type ‘mmgen-tool help <command>’ for help on a particular command
 
 
-  MMGEN v15.1.dev18              March 2025                      MMGEN-TOOL(1)
+  MMGEN-WALLET 16.0.0            September 2025                  MMGEN-TOOL(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-txbump.md

@@ -120,5 +120,5 @@
     MMGenWallet        .mmdat    wallet,w
     MMGenWallet        .mmdat    wallet,w
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
 
 
-  MMGEN-WALLET 15.1.dev44        June 2025                     MMGEN-TXBUMP(1)
+  MMGEN-WALLET 16.0.0            September 2025                MMGEN-TXBUMP(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-txcreate.md

@@ -124,5 +124,5 @@
 
 
       $ mmgen-txcreate B
       $ mmgen-txcreate B
 
 
-  MMGEN-WALLET 15.1.dev44        June 2025                   MMGEN-TXCREATE(1)
+  MMGEN-WALLET 16.0.0            September 2025              MMGEN-TXCREATE(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-txdo.md

@@ -190,5 +190,5 @@
 
 
       $ mmgen-txdo B
       $ mmgen-txdo B
 
 
-  MMGEN-WALLET 15.1.dev44        June 2025                       MMGEN-TXDO(1)
+  MMGEN-WALLET 16.0.0            September 2025                  MMGEN-TXDO(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-txsend.md

@@ -34,5 +34,5 @@
                    instead.
                    instead.
   -y, --yes        Answer 'yes' to prompts, suppress non-essential output
   -y, --yes        Answer 'yes' to prompts, suppress non-essential output
 
 
-  MMGEN-WALLET 15.1.dev37        May 2025                      MMGEN-TXSEND(1)
+  MMGEN-WALLET 16.0.0            September 2025                MMGEN-TXSEND(1)
 ```
 ```

+ 2 - 3
doc/wiki/cmds/command-help-txsign.md

@@ -5,8 +5,7 @@
   -h, --help            Print this help message
   -h, --help            Print this help message
       --longhelp        Print help message for long (global) options
       --longhelp        Print help message for long (global) options
   -a, --autosign        Sign a transaction created for offline autosigning (see
   -a, --autosign        Sign a transaction created for offline autosigning (see
-                        ‘mmgen-autosign’). The removable device is mounted and
-                        unmounted automatically
+                        ‘mmgen-autosign’)
   -b, --brain-params l,p Use seed length 'l' and hash preset 'p' for
   -b, --brain-params l,p Use seed length 'l' and hash preset 'p' for
                         brainwallet input
                         brainwallet input
   -d, --outdir       d  Specify an alternate directory 'd' for output
   -d, --outdir       d  Specify an alternate directory 'd' for output
@@ -85,5 +84,5 @@
     MMGenWallet        .mmdat    wallet,w
     MMGenWallet        .mmdat    wallet,w
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
 
 
-  MMGEN-WALLET 15.1.dev47        June 2025                     MMGEN-TXSIGN(1)
+  MMGEN-WALLET 16.0.0            September 2025                MMGEN-TXSIGN(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-walletchk.md

@@ -51,5 +51,5 @@
     MMGenWallet        .mmdat    wallet,w
     MMGenWallet        .mmdat    wallet,w
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
 
 
-  MMGEN v15.1.dev18              March 2025                 MMGEN-WALLETCHK(1)
+  MMGEN-WALLET 16.0.0            September 2025             MMGEN-WALLETCHK(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-walletconv.md

@@ -62,5 +62,5 @@
     MMGenWallet        .mmdat    wallet,w
     MMGenWallet        .mmdat    wallet,w
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
 
 
-  MMGEN v15.1.dev18              March 2025                MMGEN-WALLETCONV(1)
+  MMGEN-WALLET 16.0.0            September 2025            MMGEN-WALLETCONV(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-walletgen.md

@@ -54,5 +54,5 @@
     MMGenWallet        .mmdat    wallet,w
     MMGenWallet        .mmdat    wallet,w
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
     PlainHexSeedFile   .hex      hex,rawhex,plainhex
 
 
-  MMGEN v15.1.dev18              March 2025                 MMGEN-WALLETGEN(1)
+  MMGEN-WALLET 16.0.0            September 2025             MMGEN-WALLETGEN(1)
 ```
 ```

+ 1 - 1
doc/wiki/cmds/command-help-xmrwallet.md

@@ -499,5 +499,5 @@
   to delete your old hot wallets, make sure to do so securely using ‘shred’,
   to delete your old hot wallets, make sure to do so securely using ‘shred’,
   ‘wipe’ or some other secure deletion utility.
   ‘wipe’ or some other secure deletion utility.
 
 
-  MMGEN v15.1.dev18              March 2025                 MMGEN-XMRWALLET(1)
+  MMGEN-WALLET 16.0.0            September 2025             MMGEN-XMRWALLET(1)
 ```
 ```

+ 1 - 1
mmgen/data/version

@@ -1 +1 @@
-15.1.dev55
+15.1.dev56