Update documentation for v0.12.0

The MMGen Project 2020-02-25 19:10:01 +00:00
commit 2565d0e7e5
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
28 changed files with 328 additions and 142 deletions

@ -38,6 +38,11 @@ To transact Ethereum Classic, use `--chain=classic --jsonrpc-port=8555`
To run the daemon offline, use `--mode=offline`, otherwise `--mode=active`.
MMGen can also be used with Parity’s light client mode, which queries other
nodes on the Ethereum network for blockchain data. Add the `--light` option to
the Parity command line and read the applicable note in the [Transacting](#a_tx)
section below.
You may require other options as well. Consult `parity --help` for the full
list.
@ -69,6 +74,12 @@ Basic operations with ETH, ETC and ERC20 tokens work as described in the
* Addresses and other hexadecimal values are given without the leading `0x`.
* Fees are expressed in Gas price, e.g. `12G` for 12 Gwei or `1000M` for 1000
Mwei. This works at both the command line and interactive prompt.
* When using Parity in light client mode, the `--cached-balances` option
will greatly speed up operations of the `mmgen-txcreate`, `mmgen-txdo` and
`mmgen-tool twview` commands by reducing network queries to a minimum. If
your account balances have changed, they may be refreshed interactively within
the TRACKED ACCOUNTS menu. Cached balances are stored persistently in your
tracking wallet.
##### Transacting example:
@ -223,7 +234,7 @@ To generate Zcash t-addresses, just omit the `--type` argument:
### <a name='a_xmr'>Key/address generation and wallet creation/syncing for Monero (XMR)</a>
Generate ten Monero address pairs from your default wallet:
Generate ten Monero key/address pairs from your default wallet:
$ mmgen-keygen --coin=xmr 1-10

@ -17,6 +17,9 @@
#### [Additional Features](#a_af)
* [Using the mnemonic, seed and hexseed formats](#a_ms)
* [Mnemonics, seeds and hexseeds: additional information](#a_ai)
* [Die roll wallet generation](#a_dr)
* [BIP39 mnemonic support](#a_39)
* [Monero mnemonic support](#a_mm)
* [Incognito wallets](#a_ic)
* [Hidden incognito wallets](#a_hi)
@ -555,6 +558,54 @@ using the `--outdir` or `-d` option. For example, on a Linux system you can use
ensuring that no trace of your secret data remains once your computer’s been
powered down.
#### <a name='a_dr'>Die roll wallet generation</a>
Interactive dieroll wallet generation works just like the interactive mnemonic
input described in the preceding section. To generate a new dieroll wallet,
type:
$ mmgen-walletconv -i dieroll
To save the wallet in a format of your choice, use the `-o` option:
$ mmgen-walletconv -i dieroll -o bip39
50, 75 and 100 rolls of the die are required to create 128, 192 and 256-bit
seeds, respectively.
#### <a name='a_39'>BIP39 support</a>
BIP39 mnemonic support and usage is identical to that for native MMGen mnemonics
described above. Just use the `bip39` format specifier and extension instead of
`words`.
Convert an MMGen native mnemonic wallet to BIP39:
$ mmgen-walletconv -o bip39 mywallet.words
Restore an MMGen wallet from a BIP39 seed phrase in a file:
$ mmgen-walletconv seed.bip39
#### <a name='a_mm'>Monero mnemonic support</a>
MMGen has limited support for Monero new-style mnemonics. While they can’t be
used as wallets, they’re supported as a password format by the `mmgen-passgen`
command and can be converted to and from hex data by the `mmgen-tool` mnemonic
commands. The format specifier and extension is `xmrseed`. Only 25-word
mnemonics (256-bit keys) are supported. Key data is reduced in accordance with
the Monero protocol before conversion, so the resulting mnemonics are guaranteed
to be canonical.
Generate a random Monero seed phrase:
$ mmgen-tool mn_rand256 fmt=xmrseed
Generate a list of passwords in Monero mnemonic format with ID 'foo' from your
default wallet:
$ mmgen-passgen -f xmrseed 'foo' 1-10
#### <a name='a_ic'>Incognito wallets</a>
An incognito format wallet is indistinguishable from random data, allowing you

@ -28,4 +28,10 @@ are performed via the `/` key.
> #### [Subwallets](Subwallets)
> #### [XOR Seed Splitting](https://github.com/mmgen/mmgen/wiki/XOR-Seed-Splitting:-Theory-and-Practice)
> #### [Test Suite](Test-Suite)
> #### [Tool API](Tool-API)
[cn]: https://github.com/mmgen/mmgen/commits/master

@ -24,10 +24,18 @@ Install MMGen:
$ git clone https://github.com/mmgen/mmgen.git
$ cd mmgen
$ git checkout stable_linux
$ git checkout stable_linux # see 'Note' below
$ sudo ./setup.py install
$ cd ..
**Note:** if you want to use features that have appeared since the latest
`stable_linux` release, then you can omit the `git checkout` step and remain on
the `master` branch. But though the tip of `master` is always tested on Linux
before being pushed to the public repository, please be aware that security
vulnerabilities are more likely to be present in new code than in a stable
release. In addition, new code may require dependencies or installation steps
not yet covered in the documentation.
Install your coin daemon(s). To install prebuilt binaries, go [here][01]. To
install from source, go [here][02].

@ -165,7 +165,10 @@ specifically required by MMGen.
Install the packages and their dependencies:
$ pacman -S tar git nano vim \
$ pacman -S tar git nano vim autoconf automake-wrapper autogen \
mingw64/mingw-w64-x86_64-libtool \
mingw64/mingw-w64-x86_64-pcre \
mingw64/mingw-w64-x86_64-make \
mingw64/mingw-w64-x86_64-python3-cryptography \
mingw64/mingw-w64-x86_64-python3-six \
mingw64/mingw-w64-x86_64-python3-pexpect \
@ -249,7 +252,31 @@ Save the file and exit the editor. Now build and install:
$ python3 setup.py build --compiler=mingw32
$ python3 setup.py install
### 8. Install MMGen
### 8. Install the secp256k1 library
On your online machine, clone the repository:
$ git clone https://github.com/bitcoin-core/secp256k1.git
If you’re doing an offline install, copy the cloned secp256k1 directory
to your offline machine.
Enter the directory, configure, build and install:
$ cd secp256k1
$ libtoolize
$ ./autogen.sh
$ ./configure
$ mingw32-make.exe install MAKE=mingw32-make LIBTOOL=$(which libtool)
### 9. Install the sdelete utility (required for secure wallet deletion)
Grab the latest SDelete [zip archive][sd], and unzip and copy `sdelete.exe` to
`/usr/local/bin`. You must run the program once manually to accept the license
agreement. Failing to do this will cause some scripts to hang, so you should do
it now.
### 10. Install MMGen
Now you’re ready to install MMGen itself. On your online machine, clone the
repository:
@ -263,10 +290,19 @@ to your offline machine.
Enter the directory and install:
$ cd mmgen
$ git checkout stable_msys2
$ git checkout stable_msys2 # See 'Note' below
$ ./setup.py install
### 9. Install and launch your coin daemons
**Note:** if you want to use features that have appeared since the latest
`stable_msys2` release, then you can omit the `git checkout` step and remain on
the `master` branch. But please be aware that security vulnerabilities are more
likely to be present in new code than in a stable release. In addition, while
the tip of `master` is always tested on Linux before being pushed to the public
repository, it’s not guaranteed to install or run on MSYS2. Installation or
runtime issues may also arise due to missing dependencies or installation steps
not yet covered in the documentation.
### 11. Install and launch your coin daemons
At this point your MMGen installation will be able to generate wallets, along
with keys and addresses for all supported coins. However, if you intend to do
@ -291,42 +327,25 @@ Typically you’ll wish to launch Parity as follows:
More information on Parity’s command-line options can be found [here][pl].
### 10. You’re done!
### 12. You’re done!
Congratulations, your installation is now complete, and you can proceed to
[**Getting Started with MMGen**][gs]. Before doing so, however, you might want
to acquaint yourself with some caveats regarding running MMGen on
Microsoft Windows:
+ [Autosigning][X] is not supported on Windows and is not likely to be in the
future.
+ [Monero wallet creation/syncing][M] support is also lacking due to password
file descriptor issues with `monero-wallet-cli`.
+ Due to unpredictable behavior of MSYS2's Python `getpass()` implementation,
passwords containing non-ASCII characters should be entered using the
`--echo-passphrase` option or via a password file. Otherwise, these
symbols might end up being silently ignored.
If you have an all-ASCII wallet password and wish to silence the annoying
warning you’re getting before every password prompt, set `mswin_pw_warning`
to `false` in `mmgen.cfg`.
If you *really* don't want to have your passwords echoed, you may test whether
`getpass()` is reading your non-ASCII input correctly by running the script
`test/misc/password_entry.py`. If the script reads back the characters
exactly as you entered them, then you’re probably safe and can go ahead and
disable the warning.
+ Though MSYS2 support is well tested and considered stable, it’s a new feature
and other glitches might remain. If you think you've found a bug, don't
hesistate to file an issue at <https://github.com/mmgen/mmgen/issues>.
[**Getting Started with MMGen**][gs]. Note that all features supported by
MMGen on Linux, except for [autosigning][ax], are now supported on MSYS2 too.
Please be aware of the following, however:
+ Non-ASCII filenames cannot be used with the Monero wallet syncing tool. This
appears to be an issue with the Monero wallet RPC daemon rather than MMGen.
[mh]: https://www.msys2.org
[mp]: https://sourceforge.net/projects/msys2
[mw]: https://github.com/msys2/msys2/wiki
[ov]: https://github.com/mmgen/mmgen/releases/tag/v0.9.8
[sd]: https://download.sysinternals.com/files/SDelete.zip
[pg]: https://github.com/paritytech/parity-ethereum/releases
[di]: Deprecated-MSWin-Installation
[ib]: Install-Bitcoind
[gs]: Getting-Started-with-MMGen
[pg]: https://github.com/paritytech/parity-ethereum/releases
[pl]: Altcoin-and-Forkcoin-Support#a_par
[X]: autosign-[MMGen-command-help]
[M]: Altcoin-and-Forkcoin-Support#a_xmr
[ax]: autosign-[MMGen-command-help]
[mc]: Altcoin-and-Forkcoin-Support#a_xmr

@ -5,6 +5,8 @@
* [mmgen-passchg](passchg-[MMGen-command-help])
* [mmgen-passgen](passgen-[MMGen-command-help])
* [mmgen-regtest](regtest-[MMGen-command-help])
* [mmgen-seedjoin](seedjoin-[MMGen-command-help])
* [mmgen-seedsplit](seedsplit-[MMGen-command-help])
* [mmgen-split](split-[MMGen-command-help])
* [mmgen-subwalletgen](subwalletgen-[MMGen-command-help])
* [mmgen-tool](tool-[MMGen-command-help])

@ -13,6 +13,9 @@
* [Recovering your keys without the MMGen software][6]
* [Altcoin and Forkcoin support (ETH, ETC, XMR, ZEC, LTC, BCH and 144 Bitcoin-derived alts)][7]
* [Subwallets][8]
* [XOR Seed Splitting][9]
* [Test Suite][10]
* [Tool API][11]
[1]: Install-MMGen-on-Microsoft-Windows
[2]: Install-MMGen-on-Debian-or-Ubuntu-Linux
@ -22,3 +25,6 @@
[6]: Recovering-Your-Keys-Without-the-MMGen-Software
[7]: Altcoin-and-Forkcoin-Support
[8]: Subwallets
[9]: https://github.com/mmgen/mmgen/wiki/XOR-Seed-Splitting:-Theory-and-Practice
[10]: Test-Suite
[11]: Tool-API

@ -15,7 +15,7 @@
-O, --old-incog-fmt Specify old-format incognito input
-k, --use-internal-keccak-module Force use of the internal keccak module
-K, --key-generator m Use method 'm' for public key generation
Options: 1:python-ecdsa 2:secp256k1 (default: 2)
Options: 1:python-ecdsa 2:libsecp256k1 (default: 2)
-l, --seed-len l Specify wallet seed length of 'l' bits. This option
is required only for brainwallet and incognito inputs
with non-standard (< 256-bit) seed lengths
@ -39,7 +39,7 @@
Address indexes are given as a comma-separated list and/or hyphen-separated
range(s).
If available, the secp256k1 library will be used for address generation.
If available, the libsecp256k1 library will be used for address generation.
ADDRESS TYPES:
'L','legacy' - Legacy uncompressed address
@ -104,13 +104,16 @@
Format FileExt Valid codes
------ ------- -----------
BIP39Mnemonic .bip39 bip39
Brainwallet .mmbrain mmbrain,brainwallet,brain,bw,b
HexSeedFile .mmhex seedhex,hexseed,hex,mmhex
DieRollSeedFile .b6d b6d,die,dieroll
IncogWallet .mmincog mmincog,incog,icg,i
IncogWalletHex .mmincox mmincox,incox,incog_hex,xincog,ix,xi
IncogWalletHidden None incog_hidden,hincog,ih,hi
Mnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
SeedFile .mmseed mmseed,seed,s
MMGenHexSeedFile .mmhex seedhex,hexseed,mmhex
MMGenMnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
MMGenSeedFile .mmseed mmseed,seed,s
PlainHexSeedFile .hex hex,rawhex,plainhex
Wallet .mmdat wallet,w
MMGEN v0.11.0 May 2019 MMGEN-ADDRGEN(1)
MMGEN v0.12.0 February 2020 MMGEN-ADDRGEN(1)

@ -17,4 +17,4 @@
The --batch and --rescan options cannot be used together.
MMGEN v0.11.0 May 2019 MMGEN-ADDRIMPORT(1)
MMGEN v0.12.0 February 2020 MMGEN-ADDRIMPORT(1)

@ -65,4 +65,4 @@
This command is currently available only on Linux-based platforms.
MMGEN v0.11.0 May 2019 MMGEN-AUTOSIGN(1)
MMGEN v0.12.0 February 2020 MMGEN-AUTOSIGN(1)

@ -16,7 +16,7 @@
-O, --old-incog-fmt Specify old-format incognito input
-k, --use-internal-keccak-module Force use of the internal keccak module
-K, --key-generator m Use method 'm' for public key generation
Options: 1:python-ecdsa 2:secp256k1 (default: 2)
Options: 1:python-ecdsa 2:libsecp256k1 (default: 2)
-l, --seed-len l Specify wallet seed length of 'l' bits. This option
is required only for brainwallet and incognito inputs
with non-standard (< 256-bit) seed lengths
@ -43,7 +43,7 @@
By default, both addresses and secret keys are generated.
If available, the secp256k1 library will be used for address generation.
If available, the libsecp256k1 library will be used for address generation.
ADDRESS TYPES:
'L','legacy' - Legacy uncompressed address
@ -108,13 +108,16 @@
Format FileExt Valid codes
------ ------- -----------
BIP39Mnemonic .bip39 bip39
Brainwallet .mmbrain mmbrain,brainwallet,brain,bw,b
HexSeedFile .mmhex seedhex,hexseed,hex,mmhex
DieRollSeedFile .b6d b6d,die,dieroll
IncogWallet .mmincog mmincog,incog,icg,i
IncogWalletHex .mmincox mmincox,incox,incog_hex,xincog,ix,xi
IncogWalletHidden None incog_hidden,hincog,ih,hi
Mnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
SeedFile .mmseed mmseed,seed,s
MMGenHexSeedFile .mmhex seedhex,hexseed,mmhex
MMGenMnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
MMGenSeedFile .mmseed mmseed,seed,s
PlainHexSeedFile .hex hex,rawhex,plainhex
Wallet .mmdat wallet,w
MMGEN v0.11.0 May 2019 MMGEN-KEYGEN(1)
MMGEN v0.12.0 February 2020 MMGEN-KEYGEN(1)

@ -1,4 +1,4 @@
MMGEN-PASSCHG: Change the passphrase, hash preset or label of an MMGen wallet
MMGEN-PASSCHG: Change the passphrase, hash preset or label of the default or specified MMGen wallet
USAGE: mmgen-passchg [opts] [infile]
OPTIONS:
-h, --help Print this help message
@ -38,13 +38,16 @@
Format FileExt Valid codes
------ ------- -----------
BIP39Mnemonic .bip39 bip39
Brainwallet .mmbrain mmbrain,brainwallet,brain,bw,b
HexSeedFile .mmhex seedhex,hexseed,hex,mmhex
DieRollSeedFile .b6d b6d,die,dieroll
IncogWallet .mmincog mmincog,incog,icg,i
IncogWalletHex .mmincox mmincox,incox,incog_hex,xincog,ix,xi
IncogWalletHidden None incog_hidden,hincog,ih,hi
Mnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
SeedFile .mmseed mmseed,seed,s
MMGenHexSeedFile .mmhex seedhex,hexseed,mmhex
MMGenMnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
MMGenSeedFile .mmseed mmseed,seed,s
PlainHexSeedFile .hex hex,rawhex,plainhex
Wallet .mmdat wallet,w
MMGEN v0.11.0 May 2019 MMGEN-PASSCHG(1)
MMGEN v0.12.0 February 2020 MMGEN-PASSCHG(1)

@ -4,18 +4,17 @@
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-b, --base32 Generate passwords in Base32 format instead of Base58
-x, --hex Generate passwords in raw hex format instead of Base58
-d, --outdir d Output files to directory 'd' instead of working dir
-e, --echo-passphrase Echo passphrase or mnemonic to screen upon entry
-f, --passwd-fmt f Generate passwords of format 'f'. Default: b58.
See PASSWORD FORMATS below
-i, --in-fmt f Input is from wallet format 'f' (see FMT CODES below)
-H, --hidden-incog-input-params f,o Read hidden incognito data from file
'f' at offset 'o' (comma-separated)
-O, --old-incog-fmt Specify old-format incognito input
-L, --passwd-len l Specify length of generated passwords
(default: 20 chars [base58], 24 chars [base32],
64 chars [hex]). An argument of 'h' will generate
passwords of half the default length.
-L, --passwd-len l Specify length of generated passwords. For defaults,
see PASSWORD FORMATS below. An argument of 'h' will
generate passwords of half the default length.
-l, --seed-len l Specify wallet seed length of 'l' bits. This option
is required only for brainwallet and incognito inputs
with non-standard (< 256-bit) seed lengths
@ -41,19 +40,33 @@
Changing either the password format (base32,base58) or length alters the seed
and thus generates a completely new set of passwords.
EXAMPLE:
PASSWORD FORMATS:
Code Description Min Len Max Len Default Len
b32 - base32 password 10 42 24
b58 - base58 password 8 36 20
bip39 - BIP39 mnemonic 12 24 24
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:
mmgen-passgen alice@nowhere.com 1-10
Generate ten base58 passwords of length 16 for Alice's email account:
mmgen-passgen -L16 alice@nowhere.com 1-10
mmgen-passgen --passwd-len=16 alice@nowhere.com 1-10
Generate ten base32 passwords of length 24 for Alice's email account:
mmgen-passgen -b alice@nowhere.com 1-10
mmgen-passgen --passwd-fmt=b32 alice@nowhere.com 1-10
The three sets of passwords are completely unrelated to each other, so
Alice doesn't need to worry about password reuse.
Generate three BIP39 mnemonic seed phrases of length 24 for Alice's
Trezor device:
mmgen-passgen --passwd-fmt=bip39 mytrezor 1-3
All passwords are cryptographically unlinkable with each other, including
passwords with the same format but different length, so Alice needn't worry
about inadvertent reuse of private data.
NOTES FOR ALL GENERATOR COMMANDS
@ -74,13 +87,16 @@
Format FileExt Valid codes
------ ------- -----------
BIP39Mnemonic .bip39 bip39
Brainwallet .mmbrain mmbrain,brainwallet,brain,bw,b
HexSeedFile .mmhex seedhex,hexseed,hex,mmhex
DieRollSeedFile .b6d b6d,die,dieroll
IncogWallet .mmincog mmincog,incog,icg,i
IncogWalletHex .mmincox mmincox,incox,incog_hex,xincog,ix,xi
IncogWalletHidden None incog_hidden,hincog,ih,hi
Mnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
SeedFile .mmseed mmseed,seed,s
MMGenHexSeedFile .mmhex seedhex,hexseed,mmhex
MMGenMnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
MMGenSeedFile .mmseed mmseed,seed,s
PlainHexSeedFile .hex hex,rawhex,plainhex
Wallet .mmdat wallet,w
MMGEN v0.11.0 May 2019 MMGEN-PASSGEN(1)
MMGEN v0.12.0 February 2020 MMGEN-PASSGEN(1)

@ -11,17 +11,17 @@
AVAILABLE COMMANDS
setup - set up system for regtest operation with MMGen
fork COIN - create a fork of coin COIN
setup - set up Bob and Alice regtest mode
stop - stop the regtest coin daemon
bob - switch to Bob's wallet, starting daemon if necessary
alice - switch to Alice's wallet, starting daemon if necessary
miner - switch to Miner's wallet, starting daemon if necessary
user - show current user
generate N - mine n blocks (defaults to 1)
generate N - mine N blocks (defaults to 1)
send ADDR AMT - send amount AMT of miner funds to address ADDR
test_daemon - test whether daemon is running
get_balances - get balances of Bob and Alice
show_mempool - show transaction IDs in mempool
cli [arguments] - execute an RPC call with arguments
state - show current state of daemon (ready, busy, or stopped)
balances - get Bob and Alice's balances
mempool - show transaction IDs in mempool
cli - execute an RPC call with supplied arguments
MMGEN v0.11.0 May 2019 MMGEN-REGTEST(1)
MMGEN v0.12.0 February 2020 MMGEN-REGTEST(1)

@ -60,4 +60,4 @@
PlainHexSeedFile .hex hex,rawhex,plainhex
Wallet .mmdat wallet,w
MMGEN v0.11.099 December 2019 MMGEN-SEEDJOIN(1)
MMGEN v0.12.0 February 2020 MMGEN-SEEDJOIN(1)

@ -141,4 +141,4 @@
PlainHexSeedFile .hex hex,rawhex,plainhex
Wallet .mmdat wallet,w
MMGEN v0.11.099 February 2020 MMGEN-SEEDSPLIT(1)
MMGEN v0.12.0 February 2020 MMGEN-SEEDSPLIT(1)

@ -45,4 +45,4 @@
behind the timelock, protection is contingent on getting the non-timelocked
transaction reconfirmed before the timelock expires. Use at your own risk.
MMGEN v0.11.0 May 2019 MMGEN-SPLIT(1)
MMGEN v0.12.0 February 2020 MMGEN-SPLIT(1)

@ -1,12 +1,12 @@
MMGEN-SUBWALLETGEN: Generate a subwallet from an MMGen wallet
MMGEN-SUBWALLETGEN: Generate a subwallet from the default or specified MMGen wallet
USAGE: mmgen-subwalletgen [opts] [infile] <Subseed Index>
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-d, --outdir d Output files to directory 'd' instead of working dir
-e, --echo-passphrase Echo passphrases and other user input to screen
-i, --in-fmt f Convert from wallet format 'f' (see FMT CODES below)
-o, --out-fmt f Convert to wallet format 'f' (see FMT CODES below)
-i, --in-fmt f Input from wallet format 'f' (see FMT CODES below)
-o, --out-fmt f Output to wallet format 'f' (see FMT CODES below)
-H, --hidden-incog-input-params f,o Read hidden incognito data from file
'f' at offset 'o' (comma-separated)
-J, --hidden-incog-output-params f,o Write hidden incognito data to file
@ -82,13 +82,16 @@
Format FileExt Valid codes
------ ------- -----------
BIP39Mnemonic .bip39 bip39
Brainwallet .mmbrain mmbrain,brainwallet,brain,bw,b
HexSeedFile .mmhex seedhex,hexseed,hex,mmhex
DieRollSeedFile .b6d b6d,die,dieroll
IncogWallet .mmincog mmincog,incog,icg,i
IncogWalletHex .mmincox mmincox,incox,incog_hex,xincog,ix,xi
IncogWalletHidden None incog_hidden,hincog,ih,hi
Mnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
SeedFile .mmseed mmseed,seed,s
MMGenHexSeedFile .mmhex seedhex,hexseed,mmhex
MMGenMnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
MMGenSeedFile .mmseed mmseed,seed,s
PlainHexSeedFile .hex hex,rawhex,plainhex
Wallet .mmdat wallet,w
MMGEN v0.11.0 May 2019 MMGEN-SUBWALLETGEN(1)
MMGEN v0.12.0 February 2020 MMGEN-SUBWALLETGEN(1)

@ -15,19 +15,21 @@
b58chktohex b58chk_num [str or STDIN]
b58tobytes b58num [str or STDIN] "pad" [int=0]
b58tohex b58num [str or STDIN] "pad" [int=0]
b6dtohex b6d_num [str or STDIN] "pad" [int=0]
bytespec dd_style_byte_specifier [str]
bytestob58 infile [str] "pad" [int=0]
hash160 hexstr [str or STDIN]
hash256 string_or_bytes [str] "file_input" [bool=False] "hex_input" [bool=False]
hexdump infile [str] "cols" [int=8] "line_nums" [bool=True]
hexdump infile [str] "cols" [int=8] "line_nums" [str='hex']
hexlify infile [str]
hexreverse hexstr [str or STDIN]
hextob32 hexstr [str or STDIN] "pad" [int=0]
hextob58 hexstr [str or STDIN] "pad" [int=0]
hextob58chk hexstr [str or STDIN]
hextob6d hexstr [str or STDIN] "pad" [int=0] "add_spaces" [bool=True]
id6 infile [str]
id8 infile [str]
randb58 "nbytes" [int=32] "pad" [bool=True]
randb58 "nbytes" [int=32] "pad" [int=0]
randhex "nbytes" [str='32']
str2id6 string [str or STDIN]
unhexdump infile [str]
@ -52,15 +54,15 @@
wif2redeem_script wifkey [str or STDIN]
wif2segwit_pair wifkey [str or STDIN]
Seed mnemonic utilities (wordlist: choose 'electrum' (default) or 'tirosh')
Seed phrase utilities (valid formats: 'mmgen' (default), 'bip39', 'xmrseed')
hex2mn hexstr [str or STDIN] "wordlist_id" [str='electrum']
mn2hex seed_mnemonic [str or STDIN] "wordlist" [str='electrum']
mn_printlist "wordlist" [str='electrum']
mn_rand128 "wordlist" [str='electrum']
mn_rand192 "wordlist" [str='electrum']
mn_rand256 "wordlist" [str='electrum']
mn_stats "wordlist" [str='electrum']
hex2mn hexstr [str or STDIN] "fmt" [str='mmgen' (valid options: 'mmgen', 'bip39', 'xmrseed')]
mn2hex seed_mnemonic [str or STDIN] "fmt" [str='mmgen' (valid options: 'mmgen', 'bip39', 'xmrseed')]
mn_printlist "fmt" [str='mmgen' (valid options: 'mmgen', 'bip39', 'xmrseed')] "enum" [bool=False] "pager" [bool=False]
mn_rand128 "fmt" [str='mmgen' (valid options: 'mmgen', 'bip39', 'xmrseed')]
mn_rand192 "fmt" [str='mmgen' (valid options: 'mmgen', 'bip39', 'xmrseed')]
mn_rand256 "fmt" [str='mmgen' (valid options: 'mmgen', 'bip39', 'xmrseed')]
mn_stats "fmt" [str='mmgen' (valid options: 'mmgen', 'bip39', 'xmrseed')]
Utilities for viewing/checking MMGen address and transaction files
@ -85,6 +87,7 @@
gen_key mmgen_addr [str] "wallet" [str='']
get_subseed subseed_idx [str] "wallet" [str='']
get_subseed_by_seed_id seed_id [str] "wallet" [str=''] "last_idx" [int=100]
list_shares share_count [int] "id_str" [str='default'] "master_share" [int=0 (min:1, max:1024, 0=no master share)] "wallet" [str='']
list_subseeds subseed_idx_range [str] "wallet" [str='']
Tracking wallet commands using the JSON-RPC interface
@ -110,6 +113,9 @@
Generate a random Bech32 public/private keypair for LTC:
$ mmgen-tool -r0 --coin=ltc --type=bech32 randpair
Generate a DASH compressed public key address from the supplied WIF key:
$ mmgen-tool --coin=dash --type=compressed wif2addr XJkVRC3eGKurc9Uzx1wfQoio3yqkmaXVqLMTa6y7s3M3jTBnmxfw
Generate a well-known burn address:
$ mmgen-tool hextob58chk 000000000000000000000000000000000000000000
@ -119,7 +125,7 @@
Same as above, but get additional entropy from user:
$ mmgen-tool mn_rand128
Convert a string to base 58:
Encode bytes from a file to base 58:
$ mmgen-tool bytestob58 /etc/timezone pad=20
Reverse a hex string:
@ -128,4 +134,4 @@
Same as above, but use a pipe:
$ echo "deadbeefcafe" | mmgen-tool hexreverse -
MMGEN v0.11.0 May 2019 MMGEN-TOOL(USAGE)(1)
MMGEN v0.12.0 February 2020 MMGEN-TOOL(USAGE)(1)

@ -14,6 +14,7 @@
-t, --type t Specify address type (valid options: 'legacy',
'compressed', 'segwit', 'bech32', 'zcash_z')
-v, --verbose Produce more verbose output
-X, --cached-balances Use cached balances (Ethereum only)
COMMANDS
@ -30,6 +31,7 @@
b58tobytes - convert a base 58 number to bytes (warning: outputs binary
data)
b58tohex - convert a base 58 number to hexadecimal
b6dtohex - convert a die roll base6 (base6d) number to hexadecimal
bytespec - convert a byte specifier such as '1GB' into an integer
bytestob58 - convert bytes to base 58 (supply data via STDIN)
hash160 - compute ripemd160(sha256(data)) (convert hex pubkey to hex
@ -41,6 +43,7 @@
hextob32 - convert a hexadecimal number to MMGen's flavor of base 32
hextob58 - convert a hexadecimal number to base 58
hextob58chk - convert a hexadecimal number to base58-check encoding
hextob6d - convert a hexadecimal number to die roll base6 (base6d)
id6 - generate 6-character MMGen ID for a file (use '-' for stdin)
id8 - generate 8-character MMGen ID for a file (use '-' for stdin)
randb58 - generate random data (default: 32 bytes) and convert it to
@ -63,7 +66,8 @@
addr2pubhash - convert coin address to public key hash
addr2scriptpubkey - convert coin address to scriptPubKey
hex2wif - convert a private key from hex to WIF format
privhex2addr - generate coin address from private key in hex format
privhex2addr - generate coin address from raw private key data in
hexadecimal format
privhex2pubhex - generate a hex public key from a hex private key
pubhash2addr - convert public key hash to address
pubhex2addr - convert a hex pubkey to an address
@ -81,17 +85,32 @@
wif2segwit_pair - generate both a Segwit P2SH-P2WPKH redeem script
and address from WIF
Seed mnemonic utilities (wordlist: choose 'electrum' (default) or 'tirosh'):
Seed phrase utilities (valid formats: 'mmgen' (default), 'bip39', 'xmrseed'):
IMPORTANT NOTE: Though MMGen mnemonics use the Electrum wordlist, they're
computed using a different algorithm and are NOT Electrum-compatible!
IMPORTANT NOTE: MMGen's default seed phrase format uses the Electrum
wordlist, however seed phrases are computed using a different algorithm
and are NOT Electrum-compatible!
hex2mn - convert a 16, 24 or 32-byte hexadecimal number to a mnemonic
mn2hex - convert a 12, 18 or 24-word mnemonic to a hexadecimal number
BIP39 support is fully compatible with the standard, allowing users to
import and export seed entropy from BIP39-compatible wallets. However,
users should be aware that BIP39 support does not imply BIP32 support!
MMGen uses its own key derivation scheme differing from the one described
by the BIP32 protocol.
For Monero ('xmrseed') seed phrases, input data is reduced to a spendkey
before conversion so that a canonical seed phrase is produced. This is
required because Monero seeds, unlike ordinary wallet seeds, are tied
to a concrete key/address pair. To manually generate a Monero spendkey,
use the 'hex2wif' command.
hex2mn - convert a 16, 24 or 32-byte hexadecimal number to a
mnemonic seed phrase
mn2hex - convert a 12, 18 or 24-word mnemonic seed phrase to a
hexadecimal number
mn_printlist - print mnemonic wordlist
mn_rand128 - generate random 128-bit mnemonic
mn_rand192 - generate random 192-bit mnemonic
mn_rand256 - generate random 256-bit mnemonic
mn_rand128 - generate random 128-bit mnemonic seed phrase
mn_rand192 - generate random 192-bit mnemonic seed phrase
mn_rand256 - generate random 256-bit mnemonic seed phrase
mn_stats - show stats for mnemonic wordlist
Utilities for viewing/checking MMGen address and transaction files:
@ -127,6 +146,8 @@
Index for default or specified wallet
get_subseed_by_seed_id - get the Subseed Index of a single subseed by Seed
ID for default or specified wallet
list_shares - list the Seed IDs of the shares resulting from a
split of default or specified wallet
list_subseeds - list a range of subseed Seed IDs for default or
specified wallet
@ -143,9 +164,13 @@
Monero wallet utilities:
keyaddrlist2monerowallets - create Monero wallets from key-address list
syncmonerowallets - sync Monero wallets from key-address list
Note that the use of these commands requires private data to be exposed on
A network-connected machine in order to unlock the Monero wallets. This is
A violation of MMGen's security policy.
keyaddrlist2monerowallets - create Monero wallets from a key-address list
syncmonerowallets - sync Monero wallets from a key-address list
Type 'mmgen-tool help <command>' for help on a particular command
MMGEN v0.11.0 May 2019 MMGEN-TOOL(1)
MMGEN v0.12.0 February 2020 MMGEN-TOOL(1)

@ -21,7 +21,7 @@
with non-standard (< 256-bit) seed lengths.
-k, --keys-from-file f Provide additional keys for non-MMGen addresses
-K, --key-generator m Use method 'm' for public key generation
Options: 1:python-ecdsa 2:secp256k1
Options: 1:python-ecdsa 2:libsecp256k1
(default: 2)
-M, --mmgen-keys-from-file f Provide keys for MMGen addresses in a key-
address file (output of 'mmgen-keygen'). Permits
@ -72,13 +72,16 @@
Format FileExt Valid codes
------ ------- -----------
BIP39Mnemonic .bip39 bip39
Brainwallet .mmbrain mmbrain,brainwallet,brain,bw,b
HexSeedFile .mmhex seedhex,hexseed,hex,mmhex
DieRollSeedFile .b6d b6d,die,dieroll
IncogWallet .mmincog mmincog,incog,icg,i
IncogWalletHex .mmincox mmincox,incox,incog_hex,xincog,ix,xi
IncogWalletHidden None incog_hidden,hincog,ih,hi
Mnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
SeedFile .mmseed mmseed,seed,s
MMGenHexSeedFile .mmhex seedhex,hexseed,mmhex
MMGenMnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
MMGenSeedFile .mmseed mmseed,seed,s
PlainHexSeedFile .hex hex,rawhex,plainhex
Wallet .mmdat wallet,w
MMGEN v0.11.0 May 2019 MMGEN-TXBUMP(1)
MMGEN v0.12.0 February 2020 MMGEN-TXBUMP(1)

@ -9,6 +9,8 @@
-C, --tx-confs c Desired number of confirmations (default: 3)
-d, --outdir d Specify an alternate directory 'd' for output
-D, --contract-data D Path to hex-encoded contract data (ETH only)
-E, --fee-estimate-mode M Specify the network fee estimate mode. Choices:
'conservative','economical'. Default: 'conservative'
-f, --tx-fee f Transaction fee, as a decimal BTC amount or as
satoshis per byte (an integer followed by s).
See FEE SPECIFICATION below. If omitted, fee will be
@ -26,10 +28,11 @@
-v, --verbose Produce more verbose output
-V, --vsize-adj f Adjust transaction's estimated vsize by factor 'f'
-y, --yes Answer 'yes' to prompts, suppress non-essential output
-X, --cached-balances Use cached balances (Ethereum only)
The transaction's outputs are specified on the command line, while its inputs
are chosen from a list of the user's unpent outputs via an interactive menu.
are chosen from a list of the user's unspent outputs via an interactive menu.
If the transaction fee is not specified on the command line (see FEE
SPECIFICATION below), it will be calculated dynamically using network fee
@ -53,4 +56,4 @@
a plain decimal number, or as satoshis per byte, using an integer followed by
's', for satoshi.
MMGEN v0.11.0 May 2019 MMGEN-TXCREATE(1)
MMGEN v0.12.0 February 2020 MMGEN-TXCREATE(1)

@ -12,6 +12,8 @@
-d, --outdir d Specify an alternate directory 'd' for output
-D, --contract-data D Path to hex-encoded contract data (ETH only)
-e, --echo-passphrase Print passphrase to screen when typing it
-E, --fee-estimate-mode M Specify the network fee estimate mode. Choices:
'conservative','economical'. Default: 'conservative'
-f, --tx-fee f Transaction fee, as a decimal BTC amount or as
satoshis per byte (an integer followed by s).
See FEE SPECIFICATION below. If omitted, fee will be
@ -28,7 +30,7 @@
with non-standard (< 256-bit) seed lengths.
-k, --keys-from-file f Provide additional keys for non-MMGen addresses
-K, --key-generator m Use method 'm' for public key generation
Options: 1:python-ecdsa 2:secp256k1
Options: 1:python-ecdsa 2:libsecp256k1
(default: 2)
-L, --locktime t Lock time (block height or unix seconds) (default: 0)
-m, --minconf n Minimum number of confirmations required to spend
@ -49,12 +51,13 @@
wallet is scanned for subseeds.
-v, --verbose Produce more verbose output
-V, --vsize-adj f Adjust transaction's estimated vsize by factor 'f'
-X, --cached-balances Use cached balances (Ethereum only)
-y, --yes Answer 'yes' to prompts, suppress non-essential output
-z, --show-hash-presets Show information on available hash presets
The transaction's outputs are specified on the command line, while its inputs
are chosen from a list of the user's unpent outputs via an interactive menu.
are chosen from a list of the user's unspent outputs via an interactive menu.
If the transaction fee is not specified on the command line (see FEE
SPECIFICATION below), it will be calculated dynamically using network fee
@ -103,13 +106,16 @@
Format FileExt Valid codes
------ ------- -----------
BIP39Mnemonic .bip39 bip39
Brainwallet .mmbrain mmbrain,brainwallet,brain,bw,b
HexSeedFile .mmhex seedhex,hexseed,hex,mmhex
DieRollSeedFile .b6d b6d,die,dieroll
IncogWallet .mmincog mmincog,incog,icg,i
IncogWalletHex .mmincox mmincox,incox,incog_hex,xincog,ix,xi
IncogWalletHidden None incog_hidden,hincog,ih,hi
Mnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
SeedFile .mmseed mmseed,seed,s
MMGenHexSeedFile .mmhex seedhex,hexseed,mmhex
MMGenMnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
MMGenSeedFile .mmseed mmseed,seed,s
PlainHexSeedFile .hex hex,rawhex,plainhex
Wallet .mmdat wallet,w
MMGEN v0.11.0 May 2019 MMGEN-TXDO(1)
MMGEN v0.12.0 February 2020 MMGEN-TXDO(1)

@ -8,4 +8,4 @@
-s, --status Get status of a sent transaction
-y, --yes Answer 'yes' to prompts, suppress non-essential output
MMGEN v0.11.0 May 2019 MMGEN-TXSEND(1)
MMGEN v0.12.0 February 2020 MMGEN-TXSEND(1)

@ -21,7 +21,7 @@
-z, --show-hash-presets Show information on available hash presets
-k, --keys-from-file f Provide additional keys for non-MMGen addresses
-K, --key-generator m Use method 'm' for public key generation
Options: 1:python-ecdsa 2:secp256k1 (default: 2)
Options: 1:python-ecdsa 2:libsecp256k1 (default: 2)
-M, --mmgen-keys-from-file f Provide keys for MMGen addresses in a key-
address file (output of 'mmgen-keygen'). Permits
online signing without an MMGen seed source. The
@ -64,13 +64,16 @@
Format FileExt Valid codes
------ ------- -----------
BIP39Mnemonic .bip39 bip39
Brainwallet .mmbrain mmbrain,brainwallet,brain,bw,b
HexSeedFile .mmhex seedhex,hexseed,hex,mmhex
DieRollSeedFile .b6d b6d,die,dieroll
IncogWallet .mmincog mmincog,incog,icg,i
IncogWalletHex .mmincox mmincox,incox,incog_hex,xincog,ix,xi
IncogWalletHidden None incog_hidden,hincog,ih,hi
Mnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
SeedFile .mmseed mmseed,seed,s
MMGenHexSeedFile .mmhex seedhex,hexseed,mmhex
MMGenMnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
MMGenSeedFile .mmseed mmseed,seed,s
PlainHexSeedFile .hex hex,rawhex,plainhex
Wallet .mmdat wallet,w
MMGEN v0.11.0 May 2019 MMGEN-TXSIGN(1)
MMGEN v0.12.0 February 2020 MMGEN-TXSIGN(1)

@ -1,4 +1,4 @@
MMGEN-WALLETCHK: Check validity of an MMGen wallet
MMGEN-WALLETCHK: Check validity of the default or specified MMGen wallet
USAGE: mmgen-walletchk [opts] [infile]
OPTIONS:
-h, --help Print this help message
@ -37,13 +37,16 @@
Format FileExt Valid codes
------ ------- -----------
BIP39Mnemonic .bip39 bip39
Brainwallet .mmbrain mmbrain,brainwallet,brain,bw,b
HexSeedFile .mmhex seedhex,hexseed,hex,mmhex
DieRollSeedFile .b6d b6d,die,dieroll
IncogWallet .mmincog mmincog,incog,icg,i
IncogWalletHex .mmincox mmincox,incox,incog_hex,xincog,ix,xi
IncogWalletHidden None incog_hidden,hincog,ih,hi
Mnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
SeedFile .mmseed mmseed,seed,s
MMGenHexSeedFile .mmhex seedhex,hexseed,mmhex
MMGenMnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
MMGenSeedFile .mmseed mmseed,seed,s
PlainHexSeedFile .hex hex,rawhex,plainhex
Wallet .mmdat wallet,w
MMGEN v0.11.0 May 2019 MMGEN-WALLETCHK(1)
MMGEN v0.12.0 February 2020 MMGEN-WALLETCHK(1)

@ -1,4 +1,4 @@
MMGEN-WALLETCONV: Convert an MMGen wallet from one format to another
MMGEN-WALLETCONV: Convert the default or specified MMGen wallet from one format to another
USAGE: mmgen-walletconv [opts] [infile]
OPTIONS:
-h, --help Print this help message
@ -47,13 +47,16 @@
Format FileExt Valid codes
------ ------- -----------
BIP39Mnemonic .bip39 bip39
Brainwallet .mmbrain mmbrain,brainwallet,brain,bw,b
HexSeedFile .mmhex seedhex,hexseed,hex,mmhex
DieRollSeedFile .b6d b6d,die,dieroll
IncogWallet .mmincog mmincog,incog,icg,i
IncogWalletHex .mmincox mmincox,incox,incog_hex,xincog,ix,xi
IncogWalletHidden None incog_hidden,hincog,ih,hi
Mnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
SeedFile .mmseed mmseed,seed,s
MMGenHexSeedFile .mmhex seedhex,hexseed,mmhex
MMGenMnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
MMGenSeedFile .mmseed mmseed,seed,s
PlainHexSeedFile .hex hex,rawhex,plainhex
Wallet .mmdat wallet,w
MMGEN v0.11.0 May 2019 MMGEN-WALLETCONV(1)
MMGEN v0.12.0 February 2020 MMGEN-WALLETCONV(1)

@ -40,13 +40,16 @@
Format FileExt Valid codes
------ ------- -----------
BIP39Mnemonic .bip39 bip39
Brainwallet .mmbrain mmbrain,brainwallet,brain,bw,b
HexSeedFile .mmhex seedhex,hexseed,hex,mmhex
DieRollSeedFile .b6d b6d,die,dieroll
IncogWallet .mmincog mmincog,incog,icg,i
IncogWalletHex .mmincox mmincox,incox,incog_hex,xincog,ix,xi
IncogWalletHidden None incog_hidden,hincog,ih,hi
Mnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
SeedFile .mmseed mmseed,seed,s
MMGenHexSeedFile .mmhex seedhex,hexseed,mmhex
MMGenMnemonic .mmwords mmwords,words,mnemonic,mnem,mn,m
MMGenSeedFile .mmseed mmseed,seed,s
PlainHexSeedFile .hex hex,rawhex,plainhex
Wallet .mmdat wallet,w
MMGEN v0.11.0 May 2019 MMGEN-WALLETGEN(1)
MMGEN v0.12.0 February 2020 MMGEN-WALLETGEN(1)