modified: Getting-Started-with-MMGen.md

modified:   MMGen-command-help.md
	modified:   Recovering-Keys-Without-MMGen.md
	modified:   (manpages)
philemon 2017-09-29 14:51:21 +03:00
commit 893b11a923
Signed by untrusted user who does not match committer: mmgen
GPG key ID: 62DBE9E5212F05BE
17 changed files with 589 additions and 393 deletions

@ -287,10 +287,9 @@ Import your ten addresses into the new tracking wallet with the command:
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 the inclusion of addresses with
empty balances, and `showbtcaddrs` causes Bitcoin addresses to be displayed
also).
empty balances).
$ mmgen-tool listaddresses showempty=1 showbtcaddrs=1
$ mmgen-tool listaddresses showempty=1
MMGenID ADDRESS COMMENT BALANCE
89ABCDEF:L:1 16bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE Donations 0
89ABCDEF:L:2 1AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc Storage 1 0

@ -3,11 +3,13 @@
* [mmgen-keygen](man-keygen)
* [mmgen-passchg](man-passchg)
* [mmgen-passgen](man-passgen)
* [mmgen-regtest](man-regtest)
* [mmgen-tool](man-tool)
* [mmgen-txbump](man-txbump)
* [mmgen-txcreate](man-txcreate)
* [mmgen-txdo](man-txdo)
* [mmgen-txsend](man-txsend)
* [mmgen-txsign](man-txsign)
* [mmgen-txdo](man-txdo)
* [mmgen-walletchk](man-walletchk)
* [mmgen-walletconv](man-walletconv)
* [mmgen-walletgen](man-walletgen)

@ -1,3 +1,15 @@
## Table of Contents
* <a href='#a_i'>Introduction</a>
* <a href='#a_rs'>Obtaining the binary seed</a>
* <a href='#a_ss'>Convert the seed to binary (legacy addresses)</a>
* <a href='#a_cs'>Cook the seed and save to binary (Segwit and compressed addresses)</a>
* <a href='#a_gk'>Generating the keys</a>
* <a href='#a_hw'>Hex to WIF by hand</a>
* <a href='#a_mh'>Converting an MMGen mnemonic to hexadecimal format</a>
#### <a name='a_i'>Introduction</a>
If you're considering using MMGen and are a Bitcoiner with a normal, healthy
degree of paranoia, then the following question will probably come to mind:
“What if I have funds in an MMGen wallet and I lose the software? How do I
@ -9,60 +21,103 @@ backup copies of the software, MMGen's project page has disappeared from Github
Internet. The following tutorial will show you how to recover your keys in the
event this unlikely combination of circumstances ever occurs.
#### Obtaining the raw seed
#### <a name='a_rs'>Obtaining the binary seed</a>
To keep things simple, we'll assume you have a copy of your seed in hexadecimal
(mmhex) format. If your only backup's in Base-58 (mmseed) or mnemonic format,
an additional base-conversion step will be required. If your only backup is an
MMGen wallet, it will need to be decrypted. Both of these cases will be covered
in a future tutorial.
(mmhex) format. If your backup's in mnemonic format, skip to the section
'Converting an MMGen mnemonic to hexadecimal format' below and return here when you've
finished. If your backup is an MMGen wallet, it will need to be decrypted.
That case will be covered in a future tutorial.
Okay, so let's say we have a 128-bit seed with Seed ID FE3C6545, and funds in
the first five addresses of this seed. Here are the addresses:
Okay, so let's say you have a 128-bit seed with Seed ID FE3C6545 and funds in
the first three legacy uncompressed ('L') addresses of this seed. Here are the
addresses:
FE3C6545 {
1 1JVi3qcNcjMM7cTR7y9ihKUG1yDLpKRJfL
2 15EfKymfe3v7mqCaL174hTWSgBLFAHvtaR
3 1CUDd6nPHdP5pT7nN8k2AA5WdKRaKPjmea
4 1Kw2cPuBwY44iWJrzUk7bb2qfpaH6yZuyR
5 1BNApVR8REhT1BzWP2CvAHKt6ZRxjpubew
}
And here's the seed in hex format, which we've stored in some safe place (on
Since you might have your funds in Segwit ('S') addresses, we'll consider that
case too:
FE3C6545 SEGWIT {
1 3LpkKqtGkcCukRrgEFWyCajSApioiEWeTw
2 3FYZQyWqBJcCjaSjCV9ZVj3gKyB9u8AYCX
3 37wM8hwt69qwH7hZHAMn6RVdc8vMuM1CwJ
}
Keys for MMGen's compressed ('C') addresses are generated in a similar way as
Segwit ones, as you'll see below, so we won't consider that case separately.
Here's the seed itself in mmhex format, which you've stored in some safe place (on
paper in a safe-deposit box, for example):
afc3fe 456d 7f5f 1c4b fe3b c916 b875 60ae 6a3e
Now our task is to generate keys for the five addresses so we can spend our
coins. This task is divided into two parts: 1) generating the keys in
hexadecimal format, and 2) converting the hex keys to wallet interchange
(WIF) format so they can be imported into Bitcoin Core or some other wallet.
Now your task is to generate keys for the addresses so you can spend your coins.
This task is divided into two parts:
1. generating the keys and converting them to hexadecimal format; and
2. converting the hex keys to wallet interchange (WIF) format for importation
into Bitcoin Core or some other wallet.
We'll solve this task using standard command-line utilities available on any
Linux or other Unix-like system.
The first thing we must do is convert the seed to binary form and store it in a
file. For that we use 'xxd', a handy tool for converting binary to hex and vice
versa:
> #### <a name='a_ss'>Convert the seed to binary (legacy addresses)</a>
$ echo 456d 7f5f 1c4b fe3b c916 b875 60ae 6a3e | xxd -r -p > myseed.bin
> For the legacy addresses, we begin by converting the seed to binary form and
> storing it in a file. For that we use 'xxd', a handy tool for converting binary
> to hex and vice versa. Don't forget to omit the checksum from the seed and
> remove the spaces:
Note that we've omitted the seed's checksum.
$ echo 456d7f5f1c4bfe3bc916b87560ae6a3e | xxd -r -p > myseed.bin
#### Generating the keys
> #### <a name='a_cs'>Cook the seed and save to binary (Segwit and compressed addresses)</a>
> For the other address types, we first “cook” the seed with an identifier
> string using the HMAC-SHA256 algorithm, add ten rounds of SHA256, and save the
> result in binary form. This can be done with the 'openssl' utility, also
> included by default on Unix-based systems:
$ echo -n segwit | openssl dgst -r -sha256 -mac hmac -macopt hexkey:456d7f5f1c4bfe3bc916b87560ae6a3e | xxd -r -p > cooked-seed.bin
> If your addresses are of the compressed ('C') type, just use string 'compressed'
> instead of 'segwit' as the 'echo' command's argument.
> Now add the ten rounds of sha256:
$ openssl dgst -sha256 -binary cooked-seed.bin > cooked-round1.bin
$ openssl dgst -sha256 -binary cooked-round1.bin > cooked-round2.bin
$ openssl dgst -sha256 -binary cooked-round2.bin > cooked-round3.bin
$ openssl dgst -sha256 -binary cooked-round3.bin > cooked-round4.bin
$ openssl dgst -sha256 -binary cooked-round4.bin > cooked-round5.bin
$ openssl dgst -sha256 -binary cooked-round5.bin > cooked-round6.bin
$ openssl dgst -sha256 -binary cooked-round6.bin > cooked-round7.bin
$ openssl dgst -sha256 -binary cooked-round7.bin > cooked-round8.bin
$ openssl dgst -sha256 -binary cooked-round8.bin > cooked-round9.bin
$ openssl dgst -sha256 -binary cooked-round9.bin > myseed.bin
#### <a name='a_gk'>Generating the keys</a>
The MMGen key-generating algorithm uses a chain of SHA-512 hashes with double
SHA-256 branches to generate the keys from which each address is derived. To
obtain the chain's first link, we take a single SHA-512 hash of the seed, which
we save in binary form:
obtain the chain's first link, we make a single SHA-512 hash of the seed and
save it in binary form:
$ sha512sum myseed.bin | xxd -r -p > link1.bin
A double SHA-256 hash of the link gives us the key of our first address:
A double SHA-256 hash of the first link gives us the key of our first address:
$ sha256sum link1.bin | xxd -r -p | sha256sum
05d7219524b983290138a60ada101370007f59a625c43a46f0f8d92950955e36 -
Or, in the Segwit case:
b8e58ded53e9ba5a9f4e279a956c061a7da5487bde6a95f1ede0722d287881a0 -
With 'mmgen-tool', we can easily generate the WIF key and address from this
hexadecimal key and see that it's correct:
@ -70,14 +125,22 @@ hexadecimal key and see that it's correct:
5HrrmMdQbELyW7iCns5kvSbN9GCPTqEfG7iP1PZiYk49yDDivTi
$ mmgen-tool wif2addr 5HrrmMdQbELyW7iCns5kvSbN9GCPTqEfG7iP1PZiYk49yDDivTi
1JVi3qcNcjMM7cTR7y9ihKUG1yDLpKRJfL # matches FE3C6545:1 above
1JVi3qcNcjMM7cTR7y9ihKUG1yDLpKRJfL # matches FE3C6545:L:1 above
But since we've lost the MMGen software, we must do the hex-to-WIF conversion
some other way. We could use one of many key-manipulation tools available on
the Internet, such as [this one][01], or [this one][02] (bear in mind that MMGen
currently uses uncompressed public keys, and this must be specified when
converting the hex key to WIF format). Or we could do it ourselves: that will
be covered in the next section.
Or, in the Segwit case:
$ mmgen-tool hex2wif b8e58ded53e9ba5a9f4e279a956c061a7da5487bde6a95f1ede0722d287881a0 compressed=1
L3R8Fn21PsY3PWgT8BMggFwXswA2EZntwEGFS5mfDJpSiLq29a9F
# for a compressed ('C') address, leave out the 'segwit=1' argument
$ mmgen-tool wif2addr L3R8Fn21PsY3PWgT8BMggFwXswA2EZntwEGFS5mfDJpSiLq29a9F segwit=1
3LpkKqtGkcCukRrgEFWyCajSApioiEWeTw # matches FE3C6545:S:1 above
But since we're trying to do this without the MMGen software, we need to find
some other way to convert our hex key to a WIF key. We could use one of many
key-manipulation tools available on the Internet, such as [this one][01], or
[this one][02]. Or we can do it ourselves: that will be covered in the next
section.
Meanwhile, let's finish generating hex keys for the rest of our addresses. To
get the next key, we generate the next link in the chain from the first link and
@ -85,33 +148,46 @@ take its double SHA-256 hash, just as we did for the first one:
$ sha512sum link1.bin | xxd -r -p > link2.bin
$ sha256sum link2.bin | xxd -r -p | sha256sum
5db8fe3c8b52ccc98deab5afae780b6fbe56629e7ee1c6ed826fc2d6a81fb144 -
5db8fe3c8b52ccc98deab5afae780b6fbe56629e7ee1c6ed826fc2d6a81fb144 - (uncompressed example)
42f1b998f0f9b7b27b5d0b92ffa8c1c6b96d7202789c41b6e6a6a402e318a04d - (Segwit example)
And so on and so forth, until we've generated all five keys.
And so on and so forth, until we've generated all the keys we need: three, in our case.
#### Hex to WIF the hard way
#### <a name='a_hw'>Hex to WIF by hand</a>
If we've chosen to convert our hex keys to WIF format manually, then we have a
bit of work ahead of us. Let's use our just-generated key #1 as an example:
Since we've chosen to convert our hex keys to WIF format manually, we have a bit
of work ahead of us. Let's begin with our just-generated key #1 from seed
FE3C6545:
05d7219524b983290138a60ada101370007f59a625c43a46f0f8d92950955e36
05d7219524b983290138a60ada101370007f59a625c43a46f0f8d92950955e36 (uncompressed example)
b8e58ded53e9ba5a9f4e279a956c061a7da5487bde6a95f1ede0722d287881a0 (Segwit example)
WIF format prepends hex '80' to the beginning of the key. If the key is
associated with a compressed public key, it also appends '01'. Since MMGen uses
uncompressed public keys, we just prepend the '80':
associated with a compressed public key, it also appends '01':
# uncompressed example:
8005d7219524b983290138a60ada101370007f59a625c43a46f0f8d92950955e36
# Segwit example (Segwit uses compressed public keys):
80b8e58ded53e9ba5a9f4e279a956c061a7da5487bde6a95f1ede0722d287881a001
The Base58Check format invented by Satoshi for Bitcoin addresses and keys
contains a checksum, which we now generate by taking the first four bytes (eight
characters) of the double SHA-256 of the above result:
# uncompressed example:
$ echo 8005d7219524b983290138a60ada101370007f59a625c43a46f0f8d92950955e36 | xxd -r -p | sha256sum | xxd -r -p | sha256sum | cut -c 1-8
7b818629
# Segwit example:
$ echo 80b8e58ded53e9ba5a9f4e279a956c061a7da5487bde6a95f1ede0722d287881a001 | xxd -r -p | sha256sum | xxd -r -p | sha256sum | cut -c 1-8
89bba812
The checksum gets appended to the end, giving us the following final result:
8005d7219524b983290138a60ada101370007f59a625c43a46f0f8d92950955e367b818629
8005d7219524b983290138a60ada101370007f59a625c43a46f0f8d92950955e367b818629 (uncompressed example)
80b8e58ded53e9ba5a9f4e279a956c061a7da5487bde6a95f1ede0722d287881a00189bba812 (Segwit example)
The last step is to convert all this into Base 58. Satoshi created Base-58
encoding for convenient and error-free writing down and dictating of Bitcoin
@ -134,21 +210,28 @@ Now all that remains is to convert our hexadecimal key to decimal and then to
Base 58 using this alphabet. This can be done in just four lines of code you can
try out at the Python prompt:
# uncompressed example:
$ python
>>> b58a = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
>>> num = int('8005d7219524b983290138a60ada101370007f59a625c43a46f0f8d92950955e367b818629',16)
>>> result = [b58a[num / 58**e % 58] for e in range(60)]
>>> print ''.join(reversed(result)).lstrip('1')
5HrrmMdQbELyW7iCns5kvSbN9GCPTqEfG7iP1PZiYk49yDDivTi
5HrrmMdQbELyW7iCns5kvSbN9GCPTqEfG7iP1PZiYk49yDDivTi # matches key for FE3C6545:L:1 above
The variable 'b58a' holds the Base 58 alphabet, 'num' holds the key converted
from hexidecimal to decimal using Python's `int()` function, the third line is
the base conversion routine proper, and the last line formats the result by
reversing it, converting it to a string and stripping off the leading zeroes
('1's). As you can see, the output matches the WIF key we generated above.
# Segwit example has the following differences:
...
>>> num = int('80b8e58ded53e9ba5a9f4e279a956c061a7da5487bde6a95f1ede0722d287881a00189bba812',16)
...
L3R8Fn21PsY3PWgT8BMggFwXswA2EZntwEGFS5mfDJpSiLq29a9F # matches key for FE3C6545:S:1 above
Those who know a bit of programming but are unfamiliar with Python might find
the following base conversion code clearer:
Explanation: the variable 'b58a' holds the Base 58 alphabet; 'num' holds the key
converted from hexidecimal to decimal using Python's `int()` function; the third
line is the base conversion routine proper; and the last line formats the result
by reversing it, converting it to a string and stripping off the leading zeroes
('1's).
Programmers unfamiliar with Python might find the following base conversion code
clearer:
def numtob58(n):
result = []
@ -159,8 +242,8 @@ the following base conversion code clearer:
result = numtob58(num)
Putting our code into a file gives us have a handy conversion utility we can use
by calling `hex2b58.py <hex key with chksum>`.
Adapting our code a bit and putting it in a file gives us have a handy
conversion utility we can use for any key:
$ cat hex2b58.py
#!/usr/bin/env python
@ -170,5 +253,110 @@ by calling `hex2b58.py <hex key with chksum>`.
result = [b58a[num / 58**e % 58] for e in range(60)]
print ''.join(reversed(result)).lstrip('1')
$ hex2b58.py 8005d7219524b983290138a60ada101370007f59a625c43a46f0f8d92950955e367b818629
5HrrmMdQbELyW7iCns5kvSbN9GCPTqEfG7iP1PZiYk49yDDivTi
$ hex2b58.py 80b8e58ded53e9ba5a9f4e279a956c061a7da5487bde6a95f1ede0722d287881a00189bba812
L3R8Fn21PsY3PWgT8BMggFwXswA2EZntwEGFS5mfDJpSiLq29a9F
#### <a name='a_mh'>Converting an MMGen mnemonic to hexadecimal format</a>
Our familiar base-10 system uses a series of ten symbols known as digits to
represent numbers from zero to nine:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
If a number has more than one digit, its value is the sum of its digits
multiplied by increasing powers of ten, beginning with the rightmost, least
significant digit (the “ones column”).
Thus the number 1234, for example, can be summed as follows:
4 x 1 +
3 x 10 +
2 x 100 +
1 x 1000
Or in exponential notation:
4 x 10^0 +
3 x 10^1 +
2 x 10^2 +
1 x 10^3
An MMGen seed mnemonic is a number too, only the “digits” it's made up come from
an alphabetically sorted series of 1626 words, the [Electrum wordlist][03],
which begins like this:
able (0), about (1), above (2), abuse (3), accept (4) ...
and ends like this:
yet (1621), young (1622), yours (1623), yourself (1624), youth (1625)
(Type `mmgen-tool mn_printlist` to see the full list)
The words of the Electrum wordlist thus comprise a base-1626 numbering system,
fully analogous to the digits of our familiar base-10 system.
Here's the mnemonic of our seed (FE3C6545):
dude foot desperate tie stood themselves trip descend cease suicide apple busy
To decode it, we begin by listing its words, from least to most significant,
along with the value of each word corresponding to its position in the wordlist:
busy - 200
apple - 59
suicide - 1384
cease - 221
descend - 379
trip - 1493
themselves - 1433
stood - 1348
tie - 1459
desperate - 386
foot - 562
dude - 439
All that remains is to multiply the values by increasing powers of 1626 and sum
the results:
200 x 1626^0 +
59 x 1626^1 +
1384 x 1626^2 +
221 x 1626^3 +
379 x 1626^4 +
1493 x 1626^5 +
1433 x 1626^6 +
1348 x 1626^7 +
1459 x 1626^8 +
386 x 1626^9 +
562 x 1626^10 +
439 x 1626^11
With a bit of Python code we can automate the process:
$ python
>>> sum = power = 0
>>> for word in 200,59,1384,221,379,1493,1433,1348,1459,386,562,439:
>>> sum += word * 1626 ** power
>>> power += 1
>>> print sum
92285275468192044354531703963345906238 # the value in decimal
>>> print '{:x}'.format(sum)
456d7f5f1c4bfe3bc916b87560ae6a3e # the value in hexadecimal: matches our original hex seed above
In case you're wondering why 1626 was chosen as the base: 1626 is just large
enough to allow a 128-bit seed to be represented by twelve words. This can also
be demonstrated at the Python prompt:
$ python
>>> 1626**12 >= 2**128
True
>>> 1625**12 >= 2**128
False
[01]: https://github.com/casascius/Bitcoin-Address-Utility
[02]: https://github.com/matja/bitcoin-tool
[03]: https://github.com/spesmilo/electrum/blob/1.9.5/lib/mnemonic.py

@ -2,31 +2,31 @@
mnemonic, seed or brainwallet
USAGE: mmgen-addrgen [opts] [seed source] <index list or range(s)>
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-c, --print-checksum Print address list checksum and exit
-d, --outdir d Output files to directory 'd' instead of working dir
-e, --echo-passphrase Echo passphrase or mnemonic to screen upon entry
-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
-K, --key-generator m Use method 'm' for public key generation
Options: 1:python-ecdsa 2:secp256k1 (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
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-z, --show-hash-presets Show information on available hash presets
-P, --passwd-file f Get wallet passphrase from file 'f'
-q, --quiet Produce quieter output; suppress some warnings
-r, --usr-randchars n Get 'n' characters of additional randomness from user
(min=10, max=80, default=30)
-S, --stdout Print addresses to stdout
-t, --type t Choose address type. Options: see ADDRESS TYPES below
(default: 'L' or 'legacy')
-v, --verbose Produce more verbose output
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-c, --print-checksum Print address list checksum and exit
-d, --outdir d Output files to directory 'd' instead of working dir
-e, --echo-passphrase Echo passphrase or mnemonic to screen upon entry
-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
-K, --key-generator m Use method 'm' for public key generation
Options: 1:python-ecdsa 2:secp256k1 (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
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-z, --show-hash-presets Show information on available hash presets
-P, --passwd-file f Get wallet passphrase from file 'f'
-q, --quiet Produce quieter output; suppress some warnings
-r, --usr-randchars n Get 'n' characters of additional randomness from user
(min=10, max=80, default=30)
-S, --stdout Print addresses to stdout
-t, --type t Choose address type. Options: see ADDRESS TYPES below
(default: 'L' or 'legacy')
-v, --verbose Produce more verbose output
NOTES FOR THIS COMMAND
@ -37,8 +37,10 @@
If available, the secp256k1 library will be used for address generation.
ADDRESS TYPES:
'S', 'segwit'
'L', 'legacy'
'C','compressed' - Compressed Bitcoin P2PKH address
'S','segwit' - Bitcoin Segwit P2SH-P2WPK address
'L','legacy' - Legacy uncompressed Bitcoin address
NOTES FOR ALL GENERATOR COMMANDS
@ -64,4 +66,4 @@
SeedFile .mmseed mmseed,seed,s
Wallet .mmdat wallet,w
MMGEN v0.9.2 July 2017 MMGEN-ADDRGEN(1)
MMGEN v0.9.3 August 2017 MMGEN-ADDRGEN(1)

@ -2,20 +2,20 @@
tracking wallet
USAGE: mmgen-addrimport [opts] [mmgen address file]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-a, --address a Import the single Bitcoin address 'a'
-b, --batch Import all addresses in one RPC call.
-l, --addrlist Address source is a flat list of (non-MMGen) Bitcoin addresses
-k, --keyaddr-file Address source is a key-address file
-q, --quiet Suppress warnings
-r, --rescan Rescan the blockchain. Required if address to import is
on the blockchain and has a balance. Rescanning is slow.
-t, --test Simulate operation; don't actually import addresses
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-a, --address a Import the single Bitcoin address 'a'
-b, --batch Import all addresses in one RPC call.
-l, --addrlist Address source is a flat list of (non-MMGen) Bitcoin addresses
-k, --keyaddr-file Address source is a key-address file
-q, --quiet Suppress warnings
-r, --rescan Rescan the blockchain. Required if address to import is
on the blockchain and has a balance. Rescanning is slow.
-t, --test Simulate operation; don't actually import addresses
This command can also be used to update the comment fields of addresses already
in the tracking wallet.
The --batch and --rescan options cannot be used together.
MMGEN v0.9.2 July 2017 MMGEN-ADDRIMPORT(1)
MMGEN v0.9.3 August 2017 MMGEN-ADDRIMPORT(1)

@ -2,33 +2,33 @@
mnemonic, seed or brainwallet
USAGE: mmgen-keygen [opts] [seed source] <index list or range(s)>
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-A, --no-addresses Print only secret keys, no addresses
-c, --print-checksum Print address list checksum and exit
-d, --outdir d Output files to directory 'd' instead of working dir
-e, --echo-passphrase Echo passphrase or mnemonic to screen upon entry
-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
-K, --key-generator m Use method 'm' for public key generation
Options: 1:python-ecdsa 2:secp256k1 (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
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-z, --show-hash-presets Show information on available hash presets
-P, --passwd-file f Get wallet passphrase from file 'f'
-q, --quiet Produce quieter output; suppress some warnings
-r, --usr-randchars n Get 'n' characters of additional randomness from user
(min=10, max=80, default=30)
-S, --stdout Print keys to stdout
-t, --type t Choose address type. Options: see ADDRESS TYPES below
(default: 'L' or 'legacy')
-v, --verbose Produce more verbose output
-x, --b16 Print secret keys in hexadecimal too
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-A, --no-addresses Print only secret keys, no addresses
-c, --print-checksum Print address list checksum and exit
-d, --outdir d Output files to directory 'd' instead of working dir
-e, --echo-passphrase Echo passphrase or mnemonic to screen upon entry
-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
-K, --key-generator m Use method 'm' for public key generation
Options: 1:python-ecdsa 2:secp256k1 (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
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-z, --show-hash-presets Show information on available hash presets
-P, --passwd-file f Get wallet passphrase from file 'f'
-q, --quiet Produce quieter output; suppress some warnings
-r, --usr-randchars n Get 'n' characters of additional randomness from user
(min=10, max=80, default=30)
-S, --stdout Print keys to stdout
-t, --type t Choose address type. Options: see ADDRESS TYPES below
(default: 'L' or 'legacy')
-v, --verbose Produce more verbose output
-x, --b16 Print secret keys in hexadecimal too
NOTES FOR THIS COMMAND
@ -41,8 +41,10 @@
If available, the secp256k1 library will be used for address generation.
ADDRESS TYPES:
'S', 'segwit'
'L', 'legacy'
'C','compressed' - Compressed Bitcoin P2PKH address
'S','segwit' - Bitcoin Segwit P2SH-P2WPK address
'L','legacy' - Legacy uncompressed Bitcoin address
NOTES FOR ALL GENERATOR COMMANDS
@ -68,4 +70,4 @@
SeedFile .mmseed mmseed,seed,s
Wallet .mmdat wallet,w
MMGEN v0.9.2 July 2017 MMGEN-KEYGEN(1)
MMGEN v0.9.3 August 2017 MMGEN-KEYGEN(1)

@ -1,31 +1,31 @@
MMGEN-PASSCHG: Change the passphrase, hash preset or label of an MMGen wallet
USAGE: mmgen-passchg [opts] [infile]
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
-f, --force-update Force update of wallet even if nothing has changed
-i, --in-fmt f Input 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
-k, --keep-passphrase Reuse passphrase of input wallet for output wallet
-K, --keep-hash-preset Reuse hash preset of input wallet for output wallet
-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.
-L, --label l Specify a label 'l' for output wallet
-m, --keep-label Reuse label of input wallet for output wallet
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-z, --show-hash-presets Show information on available hash presets
-P, --passwd-file f Get wallet passphrase from file 'f'
-q, --quiet Produce quieter output; suppress some warnings
-r, --usr-randchars n Get 'n' characters of additional randomness from user
(min=10, max=80, default=30)
-S, --stdout Write wallet data to stdout instead of file
-v, --verbose Produce more verbose output
-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
-f, --force-update Force update of wallet even if nothing has changed
-i, --in-fmt f Input 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
-k, --keep-passphrase Reuse passphrase of input wallet for output wallet
-K, --keep-hash-preset Reuse hash preset of input wallet for output wallet
-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.
-L, --label l Specify a label 'l' for output wallet
-m, --keep-label Reuse label of input wallet for output wallet
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-z, --show-hash-presets Show information on available hash presets
-P, --passwd-file f Get wallet passphrase from file 'f'
-q, --quiet Produce quieter output; suppress some warnings
-r, --usr-randchars n Get 'n' characters of additional randomness from user
(min=10, max=80, default=30)
-S, --stdout Write wallet data to stdout instead of file
-v, --verbose Produce more verbose output
For passphrases all combinations of whitespace are equal and leading and
trailing space is ignored. This permits reading passphrase or brainwallet
@ -43,4 +43,4 @@
SeedFile .mmseed mmseed,seed,s
Wallet .mmdat wallet,w
MMGEN v0.9.2 July 2017 MMGEN-PASSCHG(1)
MMGEN v0.9.3 August 2017 MMGEN-PASSCHG(1)

@ -2,31 +2,31 @@
mnemonic, seed or brainwallet for the given ID string
USAGE: mmgen-passgen [opts] [seed source] <ID string> <index list or range(s)>
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-b, --base32 Generate passwords in Base32 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
-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]).
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
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-z, --show-hash-presets Show information on available hash presets
-P, --passwd-file f Get wallet passphrase from file 'f'
-q, --quiet Produce quieter output; suppress some warnings
-r, --usr-randchars n Get 'n' characters of additional randomness from user
(min=10, max=80, default=30)
-S, --stdout Print passwords to stdout
-v, --verbose Produce more verbose output
-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
-d, --outdir d Output files to directory 'd' instead of working dir
-e, --echo-passphrase Echo passphrase or mnemonic to screen upon entry
-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]).
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
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-z, --show-hash-presets Show information on available hash presets
-P, --passwd-file f Get wallet passphrase from file 'f'
-q, --quiet Produce quieter output; suppress some warnings
-r, --usr-randchars n Get 'n' characters of additional randomness from user
(min=10, max=80, default=30)
-S, --stdout Print passwords to stdout
-v, --verbose Produce more verbose output
NOTES FOR THIS COMMAND
@ -78,4 +78,4 @@
SeedFile .mmseed mmseed,seed,s
Wallet .mmdat wallet,w
MMGEN v0.9.2 July 2017 MMGEN-PASSGEN(1)
MMGEN v0.9.3 August 2017 MMGEN-PASSGEN(1)

@ -1,14 +1,14 @@
MMGEN-TOOL: Perform various MMGen- and Bitcoin-related operations
USAGE: mmgen-tool [opts] <command> <command args>
OPTIONS:
-d, --outdir d Specify an alternate directory 'd' for output
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-P, --passwd-file f Get passphrase from file 'f'.
-q, --quiet Produce quieter output
-r, --usr-randchars n Get 'n' characters of additional randomness from
user (min=10, max=80)
-v, --verbose Produce more verbose output
-d, --outdir d Specify an alternate directory 'd' for output
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-P, --passwd-file f Get passphrase from file 'f'.
-q, --quiet Produce quieter output
-r, --usr-randchars n Get 'n' characters of additional randomness from
user (min=10, max=80)
-v, --verbose Produce more verbose output
COMMANDS
@ -91,4 +91,4 @@
Type 'mmgen-tool help <command> for help on a particular command
MMGEN v0.9.2 July 2017 MMGEN-TOOL(1)
MMGEN v0.9.3 August 2017 MMGEN-TOOL(1)

@ -1,46 +1,46 @@
MMGEN-TXBUMP: Increase the fee on a replaceable (RBF) MMGen transaction, creating a new transaction, and optionally sign and send the new transaction
USAGE: mmgen-txbump [opts] <MMGen TX file> [seed source] ...
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-b, --brain-params l,p Use seed length 'l' and hash preset 'p' for
brainwallet input
-c, --comment-file f Source the transaction's comment from file 'f'
-d, --outdir d Specify an alternate directory 'd' for output
-e, --echo-passphrase Print passphrase to screen when typing it
-f, --tx-fee f Transaction fee, as a decimal BTC amount or in
satoshis per byte (an integer followed by 's')
-H, --hidden-incog-input-params f,o Read hidden incognito data from file
'f' at offset 'o' (comma-separated)
-i, --in-fmt f Input is from wallet format 'f' (see FMT CODES below)
-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.
-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)
-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
key-address file is also used to verify MMGen-to-BTC
mappings, so the user should record its checksum.
-o, --output-to-reduce o Deduct the fee from output 'o' (an integer, or 'c'
for the transaction's change output, if present)
-O, --old-incog-fmt Specify old-format incognito input
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-P, --passwd-file f Get MMGen wallet or bitcoind passphrase from file 'f'
-q, --quiet Suppress warnings; overwrite files without prompting
-s, --send Sign and send the transaction (the default if seed
data is provided)
-v, --verbose Produce more verbose output
-y, --yes Answer 'yes' to prompts, suppress non-essential output
-z, --show-hash-presets Show information on available hash presets
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-b, --brain-params l,p Use seed length 'l' and hash preset 'p' for
brainwallet input
-c, --comment-file f Source the transaction's comment from file 'f'
-d, --outdir d Specify an alternate directory 'd' for output
-e, --echo-passphrase Print passphrase to screen when typing it
-f, --tx-fee f Transaction fee, as a decimal BTC amount or in
satoshis per byte (an integer followed by 's')
-H, --hidden-incog-input-params f,o Read hidden incognito data from file
'f' at offset 'o' (comma-separated)
-i, --in-fmt f Input is from wallet format 'f' (see FMT CODES below)
-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.
-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)
-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
key-address file is also used to verify MMGen-to-BTC
mappings, so the user should record its checksum.
-o, --output-to-reduce o Deduct the fee from output 'o' (an integer, or 'c'
for the transaction's change output, if present)
-O, --old-incog-fmt Specify old-format incognito input
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-P, --passwd-file f Get MMGen wallet or bitcoind passphrase from file 'f'
-q, --quiet Suppress warnings; overwrite files without prompting
-s, --send Sign and send the transaction (the default if seed
data is provided)
-v, --verbose Produce more verbose output
-y, --yes Answer 'yes' to prompts, suppress non-essential output
-z, --show-hash-presets Show information on available hash presets
FEE SPECIFICATION: Transaction fees, both on the command line and at the
interactive prompt, may be specified as either absolute BTC amounts, using a
plain decimal number, or as satoshis per byte, using an integer followed by
interactive prompt, may be specified as either absolute BTC amounts, using
a plain decimal number, or as satoshis per byte, using an integer followed by
the letter 's'.
Transactions may contain both MMGen or non-MMGen input addresses.
@ -77,4 +77,4 @@
SeedFile .mmseed mmseed,seed,s
Wallet .mmdat wallet,w
MMGEN v0.9.2 July 2017 MMGEN-TXBUMP(1)
MMGEN v0.9.3 August 2017 MMGEN-TXBUMP(1)

@ -1,23 +1,23 @@
MMGEN-TXCREATE: Create a transaction with outputs to specified Bitcoin or MMGen addresses
USAGE: mmgen-txcreate [opts] <addr,amt> ... [change addr] [addr file] ...
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-a, --tx-fee-adj f Adjust transaction fee by factor 'f' (see below)
-B, --no-blank Don't blank screen before displaying unspent outputs
-c, --comment-file f Source the transaction's comment from file 'f'
-C, --tx-confs c Desired number of confirmations (default: 3)
-d, --outdir d Specify an alternate directory 'd' for output
-f, --tx-fee f Transaction fee, as a decimal BTC amount or in satoshis
per byte (an integer followed by 's'). If omitted, fee
will be calculated using bitcoind's 'estimatefee' call
-i, --info Display unspent outputs and exit
-m, --minconf n Minimum number of confirmations required to spend
outputs (default: 1)
-q, --quiet Suppress warnings; overwrite files without prompting
-r, --rbf Make transaction BIP 125 replaceable (replace-by-fee)
-v, --verbose Produce more verbose output
-y, --yes Answer 'yes' to prompts, suppress non-essential output
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-a, --tx-fee-adj f Adjust transaction fee by factor 'f' (see below)
-B, --no-blank Don't blank screen before displaying unspent outputs
-c, --comment-file f Source the transaction's comment from file 'f'
-C, --tx-confs c Desired number of confirmations (default: 3)
-d, --outdir d Specify an alternate directory 'd' for output
-f, --tx-fee f Transaction fee, as a decimal BTC amount or in satoshis
per byte (an integer followed by 's'). If omitted, fee
will be calculated using bitcoind's 'estimatefee' call
-i, --info Display unspent outputs and exit
-m, --minconf n Minimum number of confirmations required to spend
outputs (default: 1)
-q, --quiet Suppress warnings; overwrite files without prompting
-r, --rbf Make transaction BIP 125 replaceable (replace-by-fee)
-v, --verbose Produce more verbose output
-y, --yes Answer 'yes' to prompts, suppress non-essential output
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.
@ -40,8 +40,8 @@
one address with no amount on the command line.
FEE SPECIFICATION: Transaction fees, both on the command line and at the
interactive prompt, may be specified as either absolute BTC amounts, using a
plain decimal number, or as satoshis per byte, using an integer followed by
interactive prompt, may be specified as either absolute BTC amounts, using
a plain decimal number, or as satoshis per byte, using an integer followed by
the letter 's'.
MMGEN v0.9.2 July 2017 MMGEN-TXCREATE(1)
MMGEN v0.9.3 August 2017 MMGEN-TXCREATE(1)

@ -1,46 +1,47 @@
MMGEN-TXDO: Create, sign and send an MMGen transaction
USAGE: mmgen-txdo [opts] <addr,amt> ... [change addr] [addr file] ... [seed source] ...
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-a, --tx-fee-adj f Adjust transaction fee by factor 'f' (see below)
-b, --brain-params l,p Use seed length 'l' and hash preset 'p' for
brainwallet input
-B, --no-blank Don't blank screen before displaying unspent outputs
-c, --comment-file f Source the transaction's comment from file 'f'
-C, --tx-confs c Desired number of confirmations (default: 3)
-d, --outdir d Specify an alternate directory 'd' for output
-e, --echo-passphrase Print passphrase to screen when typing it
-f, --tx-fee f Transaction fee, as a decimal BTC amount or in
satoshis per byte (an integer followed by 's').
If omitted, bitcoind's 'estimatefee' will be used
to calculate the fee.
-H, --hidden-incog-input-params f,o Read hidden incognito data from file
'f' at offset 'o' (comma-separated)
-i, --in-fmt f Input is from wallet format 'f' (see FMT CODES below)
-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.
-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)
-m, --minconf n Minimum number of confirmations required to spend
outputs (default: 1)
-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
key-address file is also used to verify MMGen-to-BTC
mappings, so the user should record its checksum.
-O, --old-incog-fmt Specify old-format incognito input
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-P, --passwd-file f Get MMGen wallet passphrase from file 'f'
-r, --rbf Make transaction BIP 125 (replace-by-fee) replaceable
-q, --quiet Suppress warnings; overwrite files without prompting
-v, --verbose Produce more verbose output
-y, --yes Answer 'yes' to prompts, suppress non-essential output
-z, --show-hash-presets Show information on available hash presets
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-A, --aug1hf Sign transaction for the Aug. 1 2017 UAHF chain
-a, --tx-fee-adj f Adjust transaction fee by factor 'f' (see below)
-b, --brain-params l,p Use seed length 'l' and hash preset 'p' for
brainwallet input
-B, --no-blank Don't blank screen before displaying unspent outputs
-c, --comment-file f Source the transaction's comment from file 'f'
-C, --tx-confs c Desired number of confirmations (default: 3)
-d, --outdir d Specify an alternate directory 'd' for output
-e, --echo-passphrase Print passphrase to screen when typing it
-f, --tx-fee f Transaction fee, as a decimal BTC amount or in
satoshis per byte (an integer followed by 's').
If omitted, bitcoind's 'estimatefee' will be used
to calculate the fee.
-H, --hidden-incog-input-params f,o Read hidden incognito data from file
'f' at offset 'o' (comma-separated)
-i, --in-fmt f Input is from wallet format 'f' (see FMT CODES below)
-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.
-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)
-m, --minconf n Minimum number of confirmations required to spend
outputs (default: 1)
-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
key-address file is also used to verify MMGen-to-BTC
mappings, so the user should record its checksum.
-O, --old-incog-fmt Specify old-format incognito input
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-P, --passwd-file f Get MMGen wallet passphrase from file 'f'
-r, --rbf Make transaction BIP 125 (replace-by-fee) replaceable
-q, --quiet Suppress warnings; overwrite files without prompting
-v, --verbose Produce more verbose output
-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.
@ -63,8 +64,8 @@
one address with no amount on the command line.
FEE SPECIFICATION: Transaction fees, both on the command line and at the
interactive prompt, may be specified as either absolute BTC amounts, using a
plain decimal number, or as satoshis per byte, using an integer followed by
interactive prompt, may be specified as either absolute BTC amounts, using
a plain decimal number, or as satoshis per byte, using an integer followed by
the letter 's'.
Transactions may contain both MMGen or non-MMGen input addresses.
@ -101,4 +102,4 @@
SeedFile .mmseed mmseed,seed,s
Wallet .mmdat wallet,w
MMGEN v0.9.2 July 2017 MMGEN-TXDO(1)
MMGEN v0.9.3 August 2017 MMGEN-TXDO(1)

@ -1,10 +1,11 @@
MMGEN-TXSEND: Send a Bitcoin transaction signed by mmgen-txsign
USAGE: mmgen-txsend [opts] <signed transaction file>
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-d, --outdir d Specify an alternate directory 'd' for output
-q, --quiet Suppress warnings; overwrite files without prompting
-y, --yes Answer 'yes' to prompts, suppress non-essential output
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-d, --outdir d Specify an alternate directory 'd' for output
-q, --quiet Suppress warnings; overwrite files without prompting
-s, --status Get status of a sent transaction
-y, --yes Answer 'yes' to prompts, suppress non-essential output
MMGEN v0.9.2 July 2017 MMGEN-TXSEND(1)
MMGEN v0.9.3 August 2017 MMGEN-TXSEND(1)

@ -1,37 +1,38 @@
MMGEN-TXSIGN: Sign Bitcoin transactions generated by mmgen-txcreate
USAGE: mmgen-txsign [opts] <transaction file>... [seed source]...
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-b, --brain-params l,p Use seed length 'l' and hash preset 'p' for
brainwallet input
-d, --outdir d Specify an alternate directory 'd' for output
-D, --tx-id Display transaction ID and exit
-e, --echo-passphrase Print passphrase to screen when typing it
-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, --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.
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-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)
-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
key-address file is also used to verify MMGen-to-BTC
mappings, so the user should record its checksum.
-P, --passwd-file f Get MMGen wallet or bitcoind passphrase from file 'f'
-q, --quiet Suppress warnings; overwrite files without prompting
-I, --info Display information about the transaction and exit
-t, --terse-info Like '--info', but produce more concise output
-v, --verbose Produce more verbose output
-y, --yes Answer 'yes' to prompts, suppress non-essential output
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-A, --aug1hf Sign transaction for the Aug. 1 2017 UAHF chain
-b, --brain-params l,p Use seed length 'l' and hash preset 'p' for
brainwallet input
-d, --outdir d Specify an alternate directory 'd' for output
-D, --tx-id Display transaction ID and exit
-e, --echo-passphrase Print passphrase to screen when typing it
-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, --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.
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-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)
-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
key-address file is also used to verify MMGen-to-BTC
mappings, so the user should record its checksum.
-P, --passwd-file f Get MMGen wallet or bitcoind passphrase from file 'f'
-q, --quiet Suppress warnings; overwrite files without prompting
-I, --info Display information about the transaction and exit
-t, --terse-info Like '--info', but produce more concise output
-v, --verbose Produce more verbose output
-y, --yes Answer 'yes' to prompts, suppress non-essential output
Transactions may contain both MMGen or non-MMGen input addresses.
@ -67,4 +68,4 @@
SeedFile .mmseed mmseed,seed,s
Wallet .mmdat wallet,w
MMGEN v0.9.2 July 2017 MMGEN-TXSIGN(1)
MMGEN v0.9.3 August 2017 MMGEN-TXSIGN(1)

@ -1,24 +1,24 @@
MMGEN-WALLETCHK: Check validity of an MMGen wallet
USAGE: mmgen-walletchk [opts] [infile]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-e, --echo-passphrase Echo passphrases and other user input to screen
-i, --in-fmt f Input 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, --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.
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-z, --show-hash-presets Show information on available hash presets
-P, --passwd-file f Get wallet passphrase from file 'f'
-q, --quiet Produce quieter output; suppress some warnings
-r, --usr-randchars n Get 'n' characters of additional randomness from user
(min=10, max=80, default=30)
-v, --verbose Produce more verbose output
-h, --help Print this help message
--longhelp Print help message for long options (common options)
-e, --echo-passphrase Echo passphrases and other user input to screen
-i, --in-fmt f Input 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, --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.
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-z, --show-hash-presets Show information on available hash presets
-P, --passwd-file f Get wallet passphrase from file 'f'
-q, --quiet Produce quieter output; suppress some warnings
-r, --usr-randchars n Get 'n' characters of additional randomness from user
(min=10, max=80, default=30)
-v, --verbose Produce more verbose output
For passphrases all combinations of whitespace are equal and leading and
trailing space is ignored. This permits reading passphrase or brainwallet
@ -42,4 +42,4 @@
SeedFile .mmseed mmseed,seed,s
Wallet .mmdat wallet,w
MMGEN v0.9.2 July 2017 MMGEN-WALLETCHK(1)
MMGEN v0.9.3 August 2017 MMGEN-WALLETCHK(1)

@ -1,34 +1,34 @@
MMGEN-WALLETCONV: Convert an MMGen wallet from one format to another
USAGE: mmgen-walletconv [opts] [infile]
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)
-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
'f' at offset 'o' (comma-separated). File 'f' will be
created if necessary and filled with random data.
-O, --old-incog-fmt Specify old-format incognito input
-k, --keep-passphrase Reuse passphrase of input wallet for output wallet
-K, --keep-hash-preset Reuse hash preset of input wallet for output wallet
-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.
-L, --label l Specify a label 'l' for output wallet
-m, --keep-label Reuse label of input wallet for output wallet
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-z, --show-hash-presets Show information on available hash presets
-P, --passwd-file f Get wallet passphrase from file 'f'
-q, --quiet Produce quieter output; suppress some warnings
-r, --usr-randchars n Get 'n' characters of additional randomness from user
(min=10, max=80, default=30)
-S, --stdout Write wallet data to stdout instead of file
-v, --verbose Produce more verbose output
-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)
-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
'f' at offset 'o' (comma-separated). File 'f' will be
created if necessary and filled with random data.
-O, --old-incog-fmt Specify old-format incognito input
-k, --keep-passphrase Reuse passphrase of input wallet for output wallet
-K, --keep-hash-preset Reuse hash preset of input wallet for output wallet
-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.
-L, --label l Specify a label 'l' for output wallet
-m, --keep-label Reuse label of input wallet for output wallet
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-z, --show-hash-presets Show information on available hash presets
-P, --passwd-file f Get wallet passphrase from file 'f'
-q, --quiet Produce quieter output; suppress some warnings
-r, --usr-randchars n Get 'n' characters of additional randomness from user
(min=10, max=80, default=30)
-S, --stdout Write wallet data to stdout instead of file
-v, --verbose Produce more verbose output
For passphrases all combinations of whitespace are equal and leading and
trailing space is ignored. This permits reading passphrase or brainwallet
@ -52,4 +52,4 @@
SeedFile .mmseed mmseed,seed,s
Wallet .mmdat wallet,w
MMGEN v0.9.2 July 2017 MMGEN-WALLETCONV(1)
MMGEN v0.9.3 August 2017 MMGEN-WALLETCONV(1)

@ -1,27 +1,27 @@
MMGEN-WALLETGEN: Generate an MMGen wallet from a random seed
USAGE: mmgen-walletgen [opts]
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
-o, --out-fmt f Output to wallet format 'f' (see FMT CODES below)
-J, --hidden-incog-output-params f,o Write hidden incognito data to file
'f' at offset 'o' (comma-separated). File 'f' will be
created if necessary and filled with random data.
-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.
-L, --label l Specify a label 'l' for output wallet
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-z, --show-hash-presets Show information on available hash presets
-P, --passwd-file f Get wallet passphrase from file 'f'
-q, --quiet Produce quieter output; suppress some warnings
-r, --usr-randchars n Get 'n' characters of additional randomness from user
(min=10, max=80, default=30)
-S, --stdout Write wallet data to stdout instead of file
-v, --verbose Produce more verbose output
-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
-o, --out-fmt f Output to wallet format 'f' (see FMT CODES below)
-J, --hidden-incog-output-params f,o Write hidden incognito data to file
'f' at offset 'o' (comma-separated). File 'f' will be
created if necessary and filled with random data.
-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.
-L, --label l Specify a label 'l' for output wallet
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-z, --show-hash-presets Show information on available hash presets
-P, --passwd-file f Get wallet passphrase from file 'f'
-q, --quiet Produce quieter output; suppress some warnings
-r, --usr-randchars n Get 'n' characters of additional randomness from user
(min=10, max=80, default=30)
-S, --stdout Write wallet data to stdout instead of file
-v, --verbose Produce more verbose output
For passphrases all combinations of whitespace are equal and leading and
trailing space is ignored. This permits reading passphrase or brainwallet
@ -45,4 +45,4 @@
SeedFile .mmseed mmseed,seed,s
Wallet .mmdat wallet,w
MMGEN v0.9.2 July 2017 MMGEN-WALLETGEN(1)
MMGEN v0.9.3 August 2017 MMGEN-WALLETGEN(1)