diff --git a/MMGen-command-help.md b/MMGen-command-help.md
index c548493..1841779 100644
--- a/MMGen-command-help.md
+++ b/MMGen-command-help.md
@@ -11,6 +11,7 @@
* [mmgen-subwalletgen](subwalletgen-[MMGen-command-help])
* [mmgen-tool](tool-[MMGen-command-help])
* [mmgen-tool (usage)][u]
+* [mmgen-tool (detailed usage)][d]
* [mmgen-txbump](txbump-[MMGen-command-help])
* [mmgen-txcreate](txcreate-[MMGen-command-help])
* [mmgen-txdo](txdo-[MMGen-command-help])
@@ -22,3 +23,4 @@
* [mmgen-xmrwallet](xmrwallet-[MMGen-command-help])
[u]: tool(usage)-[MMGen-command-help]
+[d]: tool(detail)-[MMGen-command-help]
diff --git a/addrgen-[MMGen-command-help].md b/addrgen-[MMGen-command-help].md
index 8956b93..80b8811 100644
--- a/addrgen-[MMGen-command-help].md
+++ b/addrgen-[MMGen-command-help].md
@@ -114,4 +114,4 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
- MMGEN v13.1.0 May 2022 MMGEN-ADDRGEN(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-ADDRGEN(1)
diff --git a/addrimport-[MMGen-command-help].md b/addrimport-[MMGen-command-help].md
index 151d037..958779c 100644
--- a/addrimport-[MMGen-command-help].md
+++ b/addrimport-[MMGen-command-help].md
@@ -1,5 +1,5 @@
MMGEN-ADDRIMPORT: Import addresses into an MMGen tracking wallet
- USAGE: mmgen-addrimport [opts] [mmgen address file]
+ USAGE: mmgen-addrimport [opts] [MMGen address file]
OPTIONS:
-h, --help Print this help message
--longhelp Print help message for long options (common options)
@@ -8,14 +8,26 @@
-l, --addrlist Address source is a flat list of non-MMGen coin addresses
-k, --keyaddr-file Address source is a key-address file
-q, --quiet Suppress warnings
- -r, --rescan Rescan the blockchain. Required if address to import is
- in the blockchain and has a balance. Rescanning is slow.
+ -r, --rescan Update address balances by selectively rescanning the
+ blockchain for unspent outputs that include the imported
+ address(es). Required if any of the imported addresses
+ are already in the blockchain and have a balance.
-t, --token-addr A Import addresses for ERC20 token with address 'A'
- This command can also be used to update the comment fields of addresses
- already in the tracking wallet.
+ This command can also be used to update the comment fields or balances of
+ addresses already in the tracking wallet.
- The --batch and --rescan options cannot be used together.
+ Rescanning now uses the ‘scantxoutset’ RPC call and a selective scan of
+ blocks containing the relevant UTXOs for much faster performance than the
+ previous implementation. The rescan operation typically takes around two
+ minutes total, independent of the number of addresses imported.
- MMGEN v13.1.0 May 2022 MMGEN-ADDRIMPORT(1)
+ Bear in mind that the UTXO scan will not find historical transactions: to add
+ them to the tracking wallet, you must perform a full or partial rescan of the
+ blockchain with the ‘mmgen-tool rescan_blockchain’ utility. A full rescan of
+ the blockchain may take up to several hours.
+
+ It’s recommended to use ‘--rpc-backend=aio’ with ‘--rescan’.
+
+ MMGEN v13.2.dev13 August 2022 MMGEN-ADDRIMPORT(1)
diff --git a/autosign-[MMGen-command-help].md b/autosign-[MMGen-command-help].md
index ce72046..0988c58 100644
--- a/autosign-[MMGen-command-help].md
+++ b/autosign-[MMGen-command-help].md
@@ -71,4 +71,4 @@
This command is currently available only on Linux-based platforms.
- MMGEN v13.1.0 May 2022 MMGEN-AUTOSIGN(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-AUTOSIGN(1)
diff --git a/keygen-[MMGen-command-help].md b/keygen-[MMGen-command-help].md
index d7d8aca..4de38df 100644
--- a/keygen-[MMGen-command-help].md
+++ b/keygen-[MMGen-command-help].md
@@ -118,4 +118,4 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
- MMGEN v13.1.0 May 2022 MMGEN-KEYGEN(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-KEYGEN(1)
diff --git a/msg-[MMGen-command-help].md b/msg-[MMGen-command-help].md
index 86a1f62..8829042 100644
--- a/msg-[MMGen-command-help].md
+++ b/msg-[MMGen-command-help].md
@@ -103,4 +103,4 @@
Verify and display the exported JSON signature data:
$ mmgen-msg verify signatures.json
- MMGEN v13.1.0 May 2022 MMGEN-MSG(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-MSG(1)
diff --git a/passchg-[MMGen-command-help].md b/passchg-[MMGen-command-help].md
index 4c94741..ae0a0d2 100644
--- a/passchg-[MMGen-command-help].md
+++ b/passchg-[MMGen-command-help].md
@@ -50,4 +50,4 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
- MMGEN v13.1.0 May 2022 MMGEN-PASSCHG(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-PASSCHG(1)
diff --git a/passgen-[MMGen-command-help].md b/passgen-[MMGen-command-help].md
index 3777bcf..9245e7f 100644
--- a/passgen-[MMGen-command-help].md
+++ b/passgen-[MMGen-command-help].md
@@ -99,4 +99,4 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
- MMGEN v13.1.0 May 2022 MMGEN-PASSGEN(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-PASSGEN(1)
diff --git a/regtest-[MMGen-command-help].md b/regtest-[MMGen-command-help].md
index b142499..3d56b79 100644
--- a/regtest-[MMGen-command-help].md
+++ b/regtest-[MMGen-command-help].md
@@ -24,4 +24,4 @@
is first argument)
- MMGEN v13.1.0 May 2022 MMGEN-REGTEST(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-REGTEST(1)
diff --git a/seedjoin-[MMGen-command-help].md b/seedjoin-[MMGen-command-help].md
index dda729a..100a38d 100644
--- a/seedjoin-[MMGen-command-help].md
+++ b/seedjoin-[MMGen-command-help].md
@@ -60,4 +60,4 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
- MMGEN v13.1.0 May 2022 MMGEN-SEEDJOIN(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-SEEDJOIN(1)
diff --git a/seedsplit-[MMGen-command-help].md b/seedsplit-[MMGen-command-help].md
index 972bdb9..63d555e 100644
--- a/seedsplit-[MMGen-command-help].md
+++ b/seedsplit-[MMGen-command-help].md
@@ -141,4 +141,4 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
- MMGEN v13.1.0 May 2022 MMGEN-SEEDSPLIT(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-SEEDSPLIT(1)
diff --git a/subwalletgen-[MMGen-command-help].md b/subwalletgen-[MMGen-command-help].md
index ee6052e..2e882ca 100644
--- a/subwalletgen-[MMGen-command-help].md
+++ b/subwalletgen-[MMGen-command-help].md
@@ -94,4 +94,4 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
- MMGEN v13.1.0 May 2022 MMGEN-SUBWALLETGEN(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-SUBWALLETGEN(1)
diff --git a/tool(detail)-[MMGen-command-help].md b/tool(detail)-[MMGen-command-help].md
new file mode 100644
index 0000000..178e0c9
--- /dev/null
+++ b/tool(detail)-[MMGen-command-help].md
@@ -0,0 +1,1037 @@
+# Detailed usage information for `mmgen-tool` commands
+
+## Table of Contents
+* [General string conversion and hashing utilities](#a_1)
+* [Cryptocoin key/address utilities](#a_2)
+* [Seed phrase utilities](#a_3)
+* [Utilities for viewing/checking MMGen address and transaction files](#a_4)
+* [File encryption and decryption](#a_5)
+* [File utilities](#a_6)
+* [Key, address or subseed generation from an MMGen wallet](#a_7)
+* [Tracking-wallet commands using the JSON-RPC interface](#a_8)
+
+## General string conversion and hashing utilities:
+
+### `mmgen-tool b32tohex`
+
+ Convert an MMGen-flavor base 32 string to hexadecimal
+
+ USAGE: mmgen-tool [OPTS] b32tohex ARG [KEYWORD ARG]
+
+ Required ARG (type shown in square brackets):
+
+ b32_str [str] (use '-' to read from STDIN)
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ pad [int=0] Pad output to this width
+
+### `mmgen-tool b58chktohex`
+
+ Convert a base58-check encoded string to hexadecimal
+
+ USAGE: mmgen-tool [OPTS] b58chktohex ARG
+
+ Required ARG (type shown in square brackets):
+
+ b58chk_str [str] (use '-' to read from STDIN)
+
+### `mmgen-tool b58tobytes`
+
+ Convert a base 58 string to bytes (warning: outputs binary data)
+
+ USAGE: mmgen-tool [OPTS] b58tobytes ARG [KEYWORD ARG]
+
+ Required ARG (type shown in square brackets):
+
+ b58_str [str] (use '-' to read from STDIN)
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ pad [int=0] Pad output to this width
+
+### `mmgen-tool b58tohex`
+
+ Convert a base 58 string to hexadecimal
+
+ USAGE: mmgen-tool [OPTS] b58tohex ARG [KEYWORD ARG]
+
+ Required ARG (type shown in square brackets):
+
+ b58_str [str] (use '-' to read from STDIN)
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ pad [int=0] Pad output to this width
+
+### `mmgen-tool b6dtohex`
+
+ Convert a die roll base6 (base6d) string to hexadecimal
+
+ USAGE: mmgen-tool [OPTS] b6dtohex ARG [KEYWORD ARG]
+
+ Required ARG (type shown in square brackets):
+
+ b6d_str [str] (use '-' to read from STDIN)
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ pad [int=0] Pad output to this width
+
+### `mmgen-tool bytespec`
+
+ Convert a byte specifier such as ‘4GB’ into an integer
+
+ USAGE: mmgen-tool [OPTS] bytespec ARG
+
+ Required ARG (type shown in square brackets):
+
+ dd_style_byte_specifier [str]
+
+ Valid specifiers:
+
+ c = 1
+ w = 2
+ b = 512
+ kB = 1000
+ K = 1024
+ MB = 1000000
+ M = 1048576
+ GB = 1000000000
+ G = 1073741824
+ TB = 1000000000000
+ T = 1099511627776
+ PB = 1000000000000000
+ P = 1125899906842624
+ EB = 1000000000000000000
+ E = 1152921504606846976
+
+### `mmgen-tool bytestob58`
+
+ Convert bytes to base 58 (supply data via STDIN)
+
+ USAGE: mmgen-tool [OPTS] bytestob58 ARG [KEYWORD ARG]
+
+ Required ARG (type shown in square brackets):
+
+ infile [str]
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ pad [int=0] Pad output to this width
+
+### `mmgen-tool hash160`
+
+ Compute ripemd160(sha256(data)) (convert hex pubkey to hex addr)
+
+ USAGE: mmgen-tool [OPTS] hash160 ARG
+
+ Required ARG (type shown in square brackets):
+
+ hexstr [str] (use '-' to read from STDIN)
+
+### `mmgen-tool hash256`
+
+ Compute sha256(sha256(data)) (double sha256)
+
+ USAGE: mmgen-tool [OPTS] hash256 ARG [KEYWORD ARGS]
+
+ Required ARG (type shown in square brackets):
+
+ data [str]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ file_input [bool=False] First arg is the name of a file containing the data
+ hex_input [bool=False] First arg is a hexadecimal string
+
+### `mmgen-tool hexdump`
+
+ Create hexdump of data from file (use '-' for stdin)
+
+ USAGE: mmgen-tool [OPTS] hexdump ARG [KEYWORD ARGS]
+
+ Required ARG (type shown in square brackets):
+
+ infile [str]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ cols [int=8] Number of columns in output
+ line_nums [str='hex'] Format for line numbers (valid choices: 'hex','dec')
+
+### `mmgen-tool hexlify`
+
+ Convert bytes in file to hexadecimal (use '-' for stdin)
+
+ USAGE: mmgen-tool [OPTS] hexlify ARG
+
+ Required ARG (type shown in square brackets):
+
+ infile [str]
+
+### `mmgen-tool hexreverse`
+
+ Reverse bytes of a hexadecimal string
+
+ USAGE: mmgen-tool [OPTS] hexreverse ARG
+
+ Required ARG (type shown in square brackets):
+
+ hexstr [str] (use '-' to read from STDIN)
+
+### `mmgen-tool hextob32`
+
+ Convert a hexadecimal string to an MMGen-flavor base 32 string
+
+ USAGE: mmgen-tool [OPTS] hextob32 ARG [KEYWORD ARG]
+
+ Required ARG (type shown in square brackets):
+
+ hexstr [str] (use '-' to read from STDIN)
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ pad [int=0] Pad output to this width
+
+### `mmgen-tool hextob58`
+
+ Convert a hexadecimal string to base 58
+
+ USAGE: mmgen-tool [OPTS] hextob58 ARG [KEYWORD ARG]
+
+ Required ARG (type shown in square brackets):
+
+ hexstr [str] (use '-' to read from STDIN)
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ pad [int=0] Pad output to this width
+
+### `mmgen-tool hextob58chk`
+
+ Convert a hexadecimal string to base58-check encoding
+
+ USAGE: mmgen-tool [OPTS] hextob58chk ARG
+
+ Required ARG (type shown in square brackets):
+
+ hexstr [str] (use '-' to read from STDIN)
+
+### `mmgen-tool hextob6d`
+
+ Convert a hexadecimal string to die roll base6 (base6d)
+
+ USAGE: mmgen-tool [OPTS] hextob6d ARG [KEYWORD ARGS]
+
+ Required ARG (type shown in square brackets):
+
+ hexstr [str] (use '-' to read from STDIN)
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ pad [int=0] Pad output to this width
+ add_spaces [bool=True] Add a space after every 5th character
+
+### `mmgen-tool id6`
+
+ Generate 6-character MMGen ID for a file (use '-' for stdin)
+
+ USAGE: mmgen-tool [OPTS] id6 ARG
+
+ Required ARG (type shown in square brackets):
+
+ infile [str]
+
+### `mmgen-tool id8`
+
+ Generate 8-character MMGen ID for a file (use '-' for stdin)
+
+ USAGE: mmgen-tool [OPTS] id8 ARG
+
+ Required ARG (type shown in square brackets):
+
+ infile [str]
+
+### `mmgen-tool randb58`
+
+ Generate random data (default: 32 bytes) and convert it to base 58
+
+ USAGE: mmgen-tool [OPTS] randb58 [KEYWORD ARGS]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ nbytes [int=32] Number of bytes to output
+ pad [int=0] Pad output to this width
+
+### `mmgen-tool randhex`
+
+ Print 'n' bytes (default 32) of random data in hex format
+
+ USAGE: mmgen-tool [OPTS] randhex [KEYWORD ARG]
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ nbytes [int=32] Number of bytes to output
+
+### `mmgen-tool str2id6`
+
+ Generate 6-character MMGen ID for a string, ignoring spaces in string
+
+ USAGE: mmgen-tool [OPTS] str2id6 ARG
+
+ Required ARG (type shown in square brackets):
+
+ string [str] (use '-' to read from STDIN)
+
+### `mmgen-tool to_bytespec`
+
+ Convert an integer to a byte specifier such as ‘4GB’
+
+ USAGE: mmgen-tool [OPTS] to_bytespec ARGS [KEYWORD ARGS]
+
+ Required ARGS (type shown in square brackets):
+
+ n [int]
+ dd_style_byte_specifier [str]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ fmt [str='0.2'] Width and precision of output
+ print_sym [bool=True] Print the specifier after the numerical value
+
+ Supported specifiers:
+
+ c = 1
+ w = 2
+ b = 512
+ kB = 1000
+ K = 1024
+ MB = 1000000
+ M = 1048576
+ GB = 1000000000
+ G = 1073741824
+ TB = 1000000000000
+ T = 1099511627776
+ PB = 1000000000000000
+ P = 1125899906842624
+ EB = 1000000000000000000
+ E = 1152921504606846976
+
+### `mmgen-tool unhexdump`
+
+ Decode hexdump from file (use '-' for stdin) (warning: outputs binary data)
+
+ USAGE: mmgen-tool [OPTS] unhexdump ARG
+
+ Required ARG (type shown in square brackets):
+
+ infile [str]
+
+### `mmgen-tool unhexlify`
+
+ Convert a hexadecimal string to bytes (warning: outputs binary data)
+
+ USAGE: mmgen-tool [OPTS] unhexlify ARG
+
+ Required ARG (type shown in square brackets):
+
+ hexstr [str] (use '-' to read from STDIN)
+
+
+## Cryptocoin key/address utilities:
+
+### `mmgen-tool addr2pubhash`
+
+ Convert coin address to public key hash
+
+ USAGE: mmgen-tool [OPTS] addr2pubhash ARG
+
+ Required ARG (type shown in square brackets):
+
+ addr [str] (use '-' to read from STDIN)
+
+### `mmgen-tool addr2scriptpubkey`
+
+ Convert coin address to scriptPubKey
+
+ USAGE: mmgen-tool [OPTS] addr2scriptpubkey ARG
+
+ Required ARG (type shown in square brackets):
+
+ addr [str] (use '-' to read from STDIN)
+
+### `mmgen-tool eth_checksummed_addr`
+
+ Create a checksummed Ethereum address
+
+ USAGE: mmgen-tool [OPTS] eth_checksummed_addr ARG
+
+ Required ARG (type shown in square brackets):
+
+ addr [str] (use '-' to read from STDIN)
+
+### `mmgen-tool hex2wif`
+
+ Convert a private key from hexadecimal to WIF format
+
+ USAGE: mmgen-tool [OPTS] hex2wif ARG
+
+ Required ARG (type shown in square brackets):
+
+ privhex [str] (use '-' to read from STDIN)
+
+### `mmgen-tool privhex2addr`
+
+ Generate a coin address from raw hexadecimal private key data
+
+ USAGE: mmgen-tool [OPTS] privhex2addr ARG
+
+ Required ARG (type shown in square brackets):
+
+ privhex [str] (use '-' to read from STDIN)
+
+### `mmgen-tool privhex2pubhex`
+
+ Generate a hexadecimal public key from raw hexadecimal private key data
+
+ USAGE: mmgen-tool [OPTS] privhex2pubhex ARG
+
+ Required ARG (type shown in square brackets):
+
+ privhex [str] (use '-' to read from STDIN)
+
+### `mmgen-tool pubhash2addr`
+
+ Convert public key hash to address
+
+ USAGE: mmgen-tool [OPTS] pubhash2addr ARG
+
+ Required ARG (type shown in square brackets):
+
+ pubhashhex [str] (use '-' to read from STDIN)
+
+### `mmgen-tool pubhex2addr`
+
+ Convert a hexadecimal pubkey to an address
+
+ USAGE: mmgen-tool [OPTS] pubhex2addr ARG
+
+ Required ARG (type shown in square brackets):
+
+ pubkeyhex [str] (use '-' to read from STDIN)
+
+### `mmgen-tool pubhex2redeem_script`
+
+ Convert a hexadecimal pubkey to a Segwit P2SH-P2WPKH redeem script
+
+ USAGE: mmgen-tool [OPTS] pubhex2redeem_script ARG
+
+ Required ARG (type shown in square brackets):
+
+ pubkeyhex [str] (use '-' to read from STDIN)
+
+### `mmgen-tool randpair`
+
+ Generate a random private key/address pair
+
+ USAGE: mmgen-tool [OPTS] randpair
+
+### `mmgen-tool randwif`
+
+ Generate a random private key in WIF format
+
+ USAGE: mmgen-tool [OPTS] randwif
+
+### `mmgen-tool redeem_script2addr`
+
+ Convert a Segwit P2SH-P2WPKH redeem script to an address
+
+ USAGE: mmgen-tool [OPTS] redeem_script2addr ARG
+
+ Required ARG (type shown in square brackets):
+
+ redeem_script_hex [str] (use '-' to read from STDIN)
+
+### `mmgen-tool scriptpubkey2addr`
+
+ Convert scriptPubKey to coin address
+
+ USAGE: mmgen-tool [OPTS] scriptpubkey2addr ARG
+
+ Required ARG (type shown in square brackets):
+
+ hexstr [str] (use '-' to read from STDIN)
+
+### `mmgen-tool wif2addr`
+
+ Generate a coin address from a key in WIF format
+
+ USAGE: mmgen-tool [OPTS] wif2addr ARG
+
+ Required ARG (type shown in square brackets):
+
+ wifkey [str] (use '-' to read from STDIN)
+
+### `mmgen-tool wif2hex`
+
+ Convert a private key from WIF to hexadecimal format
+
+ USAGE: mmgen-tool [OPTS] wif2hex ARG
+
+ Required ARG (type shown in square brackets):
+
+ wifkey [str] (use '-' to read from STDIN)
+
+### `mmgen-tool wif2redeem_script`
+
+ Convert a WIF private key to a Segwit P2SH-P2WPKH redeem script
+
+ USAGE: mmgen-tool [OPTS] wif2redeem_script ARG
+
+ Required ARG (type shown in square brackets):
+
+ wifkey [str] (use '-' to read from STDIN)
+
+### `mmgen-tool wif2segwit_pair`
+
+ Generate a Segwit P2SH-P2WPKH redeem script and address from a WIF private key
+
+ USAGE: mmgen-tool [OPTS] wif2segwit_pair ARG
+
+ Required ARG (type shown in square brackets):
+
+ wifkey [str] (use '-' to read from STDIN)
+
+
+## Seed phrase utilities:
+
+### `mmgen-tool hex2mn`
+
+ Convert a 16, 24 or 32-byte hexadecimal string to a mnemonic seed phrase
+
+ USAGE: mmgen-tool [OPTS] hex2mn ARG [KEYWORD ARG]
+
+ Required ARG (type shown in square brackets):
+
+ hexstr [str] (use '-' to read from STDIN)
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ fmt [str='mmgen'] Seed phrase format (valid choices: 'mmgen','bip39','xmrseed')
+
+### `mmgen-tool mn2hex`
+
+ Convert a mnemonic seed phrase to a hexadecimal string
+
+ USAGE: mmgen-tool [OPTS] mn2hex ARG [KEYWORD ARG]
+
+ Required ARG (type shown in square brackets):
+
+ seed_mnemonic [str] (use '-' to read from STDIN)
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ fmt [str='mmgen'] Seed phrase format (valid choices: 'mmgen','bip39','xmrseed')
+
+### `mmgen-tool mn2hex_interactive`
+
+ Convert an interactively supplied mnemonic seed phrase to a hexadecimal string
+
+ USAGE: mmgen-tool [OPTS] mn2hex_interactive [KEYWORD ARGS]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ fmt [str='mmgen'] Seed phrase format (valid choices: 'mmgen','bip39','xmrseed')
+ mn_len [int=24] Length of seed phrase in words
+ print_mn [bool=False] Print the seed phrase after entry
+
+### `mmgen-tool mn_printlist`
+
+ Print a mnemonic wordlist
+
+ USAGE: mmgen-tool [OPTS] mn_printlist [KEYWORD ARGS]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ fmt [str='mmgen'] Seed phrase format (valid choices: 'mmgen','bip39','xmrseed')
+ enum [bool=False] Enumerate the list
+ pager [bool=False] Send output to pager
+
+### `mmgen-tool mn_rand128`
+
+ Generate a random 128-bit mnemonic seed phrase
+
+ USAGE: mmgen-tool [OPTS] mn_rand128 [KEYWORD ARG]
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ fmt [str='mmgen'] Seed phrase format (valid choices: 'mmgen','bip39','xmrseed')
+
+### `mmgen-tool mn_rand192`
+
+ Generate a random 192-bit mnemonic seed phrase
+
+ USAGE: mmgen-tool [OPTS] mn_rand192 [KEYWORD ARG]
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ fmt [str='mmgen'] Seed phrase format (valid choices: 'mmgen','bip39','xmrseed')
+
+### `mmgen-tool mn_rand256`
+
+ Generate a random 256-bit mnemonic seed phrase
+
+ USAGE: mmgen-tool [OPTS] mn_rand256 [KEYWORD ARG]
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ fmt [str='mmgen'] Seed phrase format (valid choices: 'mmgen','bip39','xmrseed')
+
+### `mmgen-tool mn_stats`
+
+ Show stats for a mnemonic wordlist
+
+ USAGE: mmgen-tool [OPTS] mn_stats [KEYWORD ARG]
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ fmt [str='mmgen'] Seed phrase format (valid choices: 'mmgen','bip39','xmrseed')
+
+
+## Utilities for viewing/checking MMGen address and transaction files:
+
+### `mmgen-tool addrfile_chksum`
+
+ Compute checksum for MMGen address file
+
+ USAGE: mmgen-tool [OPTS] addrfile_chksum ARG
+
+ Required ARG (type shown in square brackets):
+
+ mmgen_addrfile [str]
+
+### `mmgen-tool keyaddrfile_chksum`
+
+ Compute checksum for MMGen key-address file
+
+ USAGE: mmgen-tool [OPTS] keyaddrfile_chksum ARG
+
+ Required ARG (type shown in square brackets):
+
+ mmgen_keyaddrfile [str]
+
+### `mmgen-tool passwdfile_chksum`
+
+ Compute checksum for MMGen password file
+
+ USAGE: mmgen-tool [OPTS] passwdfile_chksum ARG
+
+ Required ARG (type shown in square brackets):
+
+ mmgen_passwdfile [str]
+
+### `mmgen-tool txview`
+
+ Display specified raw or signed MMGen transaction files in human-readable form
+
+ USAGE: mmgen-tool [OPTS] txview ARG [KEYWORD ARGS]
+
+ Required ARG (type shown in square brackets):
+
+ mmgen_tx_file(s) [str]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ pager [bool=False] Send output to pager
+ terse [bool=False] Produce compact tabular output
+ sort [str='addr'] Sort order for transaction inputs and outputs (valid choices: 'addr','raw')
+ filesort [str='mtime'] File sort order (valid choices: 'mtime','ctime','atime')
+
+
+## File encryption and decryption:
+
+### `mmgen-tool decrypt`
+
+ Decrypt a file
+
+ USAGE: mmgen-tool [OPTS] decrypt ARG [KEYWORD ARGS]
+
+ Required ARG (type shown in square brackets):
+
+ infile [str]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ outfile [str='']
+ hash_preset [str='']
+
+### `mmgen-tool encrypt`
+
+ Encrypt a file
+
+ USAGE: mmgen-tool [OPTS] encrypt ARG [KEYWORD ARGS]
+
+ Required ARG (type shown in square brackets):
+
+ infile [str]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ outfile [str='']
+ hash_preset [str='']
+
+
+## File utilities:
+
+### `mmgen-tool extract_key_from_geth_wallet`
+
+ Decrypt the encrypted private key in a Geth keystore wallet, returning the decrypted key
+
+ USAGE: mmgen-tool [OPTS] extract_key_from_geth_wallet ARG [KEYWORD ARG]
+
+ Required ARG (type shown in square brackets):
+
+ wallet_file [str]
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ check_addr [bool=True]
+
+### `mmgen-tool find_incog_data`
+
+ Use an Incog ID to find hidden incognito wallet data
+
+ USAGE: mmgen-tool [OPTS] find_incog_data ARGS [KEYWORD ARG]
+
+ Required ARGS (type shown in square brackets):
+
+ filename [str]
+ incog_id [str]
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ keep_searching [bool=False] Continue search after finding data (ID collisions can yield false positives)
+
+### `mmgen-tool rand2file`
+
+ Write ‘nbytes’ bytes of random data to specified file (dd-style byte specifiers supported)
+
+ USAGE: mmgen-tool [OPTS] rand2file ARGS [KEYWORD ARGS]
+
+ Required ARGS (type shown in square brackets):
+
+ outfile [str]
+ nbytes [str]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ threads [int=4]
+ silent [bool=False]
+
+ Valid specifiers:
+
+ c = 1
+ w = 2
+ b = 512
+ kB = 1000
+ K = 1024
+ MB = 1000000
+ M = 1048576
+ GB = 1000000000
+ G = 1073741824
+ TB = 1000000000000
+ T = 1099511627776
+ PB = 1000000000000000
+ P = 1125899906842624
+ EB = 1000000000000000000
+ E = 1152921504606846976
+
+
+## Key, address or subseed generation from an MMGen wallet:
+
+### `mmgen-tool gen_addr`
+
+ Generate a single MMGen address from default or specified wallet
+
+ USAGE: mmgen-tool [OPTS] gen_addr ARG [KEYWORD ARG]
+
+ Required ARG (type shown in square brackets):
+
+ mmgen_addr [str]
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ wallet [str='']
+
+### `mmgen-tool gen_key`
+
+ Generate a single WIF key for specified MMGen address from default or specified wallet
+
+ USAGE: mmgen-tool [OPTS] gen_key ARG [KEYWORD ARG]
+
+ Required ARG (type shown in square brackets):
+
+ mmgen_addr [str]
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ wallet [str='']
+
+### `mmgen-tool get_subseed`
+
+ Get the Seed ID of a single subseed by Subseed Index for default or specified wallet
+
+ USAGE: mmgen-tool [OPTS] get_subseed ARG [KEYWORD ARG]
+
+ Required ARG (type shown in square brackets):
+
+ subseed_idx [str]
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ wallet [str='']
+
+### `mmgen-tool get_subseed_by_seed_id`
+
+ Get the Subseed Index of a single subseed by Seed ID for default or specified wallet
+
+ USAGE: mmgen-tool [OPTS] get_subseed_by_seed_id ARG [KEYWORD ARGS]
+
+ Required ARG (type shown in square brackets):
+
+ seed_id [str]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ wallet [str='']
+ last_idx [int=100]
+
+### `mmgen-tool list_shares`
+
+ List the Seed IDs of the shares resulting from a split of default or specified wallet
+
+ USAGE: mmgen-tool [OPTS] list_shares ARG [KEYWORD ARGS]
+
+ Required ARG (type shown in square brackets):
+
+ share_count [int]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ id_str [str='default']
+ master_share [int=0] (min:1, max:1024, 0=no master share)
+ wallet [str='']
+
+### `mmgen-tool list_subseeds`
+
+ List a range of subseed Seed IDs for default or specified wallet
+
+ USAGE: mmgen-tool [OPTS] list_subseeds ARG [KEYWORD ARG]
+
+ Required ARG (type shown in square brackets):
+
+ subseed_idx_range [str]
+
+ Optional KEYWORD ARG (type and default value shown in square brackets):
+
+ wallet [str='']
+
+
+## Tracking-wallet commands using the JSON-RPC interface:
+
+### `mmgen-tool add_label`
+
+ Add descriptive label for address in tracking wallet
+
+ USAGE: mmgen-tool [OPTS] add_label ARGS
+
+ Required ARGS (type shown in square brackets):
+
+ mmgen_or_coin_addr [str]
+ label [str]
+
+### `mmgen-tool daemon_version`
+
+ Print coin daemon version
+
+ USAGE: mmgen-tool [OPTS] daemon_version
+
+### `mmgen-tool getbalance`
+
+ List confirmed/unconfirmed, spendable/unspendable balances in tracking wallet
+
+ USAGE: mmgen-tool [OPTS] getbalance [KEYWORD ARGS]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ minconf [int=1] Minimum number of confirmations
+ quiet [bool=False] Produce quieter output
+ pager [bool=False] Send output to pager
+
+### `mmgen-tool listaddress`
+
+ List the specified MMGen address in the tracking wallet and its balance
+
+ USAGE: mmgen-tool [OPTS] listaddress ARG [KEYWORD ARGS]
+
+ Required ARG (type shown in square brackets):
+
+ mmgen_addr [str]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ minconf [int=1] Minimum number of confirmations
+ showbtcaddr [bool=True] Display coin address in addition to MMGen ID
+ age_fmt [str='confs'] Format for the Age/Date column (valid choices: 'confs','block','days','date','date_time')
+
+### `mmgen-tool listaddresses`
+
+ List MMGen addresses in the tracking wallet and their balances
+
+ USAGE: mmgen-tool [OPTS] listaddresses [KEYWORD ARGS]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ mmgen_addrs [str=''] Hyphenated range or comma-separated list of addresses
+ minconf [int=1] Minimum number of confirmations
+ pager [bool=False] Send output to pager
+ showbtcaddr [bool=True] Display coin addresses in addition to MMGen IDs
+ showempty [bool=True] Show addresses with no balances
+ all_labels [bool=False] Show all addresses with labels
+ age_fmt [str='confs'] Format for the Age/Date column (valid choices: 'confs','block','days','date','date_time')
+ sort [str=''] Address sort order (valid choices: 'reverse','age')
+
+### `mmgen-tool remove_address`
+
+ Remove an address from tracking wallet
+
+ USAGE: mmgen-tool [OPTS] remove_address ARG
+
+ Required ARG (type shown in square brackets):
+
+ mmgen_or_coin_addr [str]
+
+### `mmgen-tool remove_label`
+
+ Remove descriptive label for address in tracking wallet
+
+ USAGE: mmgen-tool [OPTS] remove_label ARG
+
+ Required ARG (type shown in square brackets):
+
+ mmgen_or_coin_addr [str]
+
+### `mmgen-tool rescan_address`
+
+ Rescan an address in the tracking wallet to update its balance
+
+ USAGE: mmgen-tool [OPTS] rescan_address ARG
+
+ Required ARG (type shown in square brackets):
+
+ mmgen_or_coin_addr [str]
+
+### `mmgen-tool rescan_blockchain`
+
+ Rescan the blockchain to update historical transactions in the tracking wallet
+
+ USAGE: mmgen-tool [OPTS] rescan_blockchain [KEYWORD ARGS]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ start_block [int=None]
+ stop_block [int=None]
+
+ NOTE:
+
+ The rescanning process typically takes several hours and may be interrupted
+ using Ctrl-C. An interrupted rescan may be resumed using the ‘start_block’
+ parameter.
+
+### `mmgen-tool resolve_address`
+
+ Resolve an MMGen address in the tracking wallet to a coin address or vice-versa
+
+ USAGE: mmgen-tool [OPTS] resolve_address ARG
+
+ Required ARG (type shown in square brackets):
+
+ mmgen_or_coin_addr [str]
+
+### `mmgen-tool twexport`
+
+ Export a tracking wallet to JSON format
+
+ USAGE: mmgen-tool [OPTS] twexport [KEYWORD ARGS]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ include_amts [bool=True]
+ pretty [bool=False]
+
+ NOTES:
+
+ If ‘include_amts’ is true (the default), Ethereum balances will be restored
+ from the dump upon import. For Bitcoin and forks, amount fields in the dump
+ are ignored.
+
+ If ‘pretty’ is true, JSON will be dumped in human-readable format to allow
+ for editing of comment fields.
+
+### `mmgen-tool twimport`
+
+ Restore a tracking wallet from a JSON dump created by ‘twexport’
+
+ USAGE: mmgen-tool [OPTS] twimport ARG [KEYWORD ARGS]
+
+ Required ARG (type shown in square brackets):
+
+ filename [str]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ ignore_checksum [bool=False]
+ batch [bool=False]
+
+ NOTES:
+
+ If comment fields in the JSON dump have been edited, ‘ignore_checksum’ must
+ be set to true.
+
+ The restored tracking wallet will have correct balances but no record of
+ historical transactions. These may be restored by running ‘mmgen-tool
+ rescan_blockchain’.
+
+### `mmgen-tool twview`
+
+ View tracking wallet unspent outputs
+
+ USAGE: mmgen-tool [OPTS] twview [KEYWORD ARGS]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ pager [bool=False] Send output to pager
+ reverse [bool=False] Reverse order of unspent outputs
+ wide [bool=False] Display data in wide tabular format
+ minconf [int=1] Minimum number of confirmations
+ sort [str='age'] Unspent output sort order (valid choices: 'addr','age','amt','txid','twmmid')
+ age_fmt [str='confs'] Format for the Age/Date column (valid choices: 'confs','block','days','date','date_time')
+ interactive [bool=False] Enable interactive operation
+ show_mmid [bool=True] Show MMGen IDs along with coin addresses
+
+### `mmgen-tool txhist`
+
+ View transaction history of tracking wallet
+
+ USAGE: mmgen-tool [OPTS] txhist [KEYWORD ARGS]
+
+ Optional KEYWORD ARGS (type and default value shown in square brackets):
+
+ pager [bool=False] Send output to pager
+ reverse [bool=False] Reverse order of transactions
+ detail [bool=False] Produce detailed, non-tabular output
+ sinceblock [int=0] Display transactions starting from this block
+ sort [str='age'] Transaction sort order (valid choices: 'age','blockheight','amt','total_amt','txid')
+ age_fmt [str='confs'] Format for the Age/Date column (valid choices: 'confs','block','days','date','date_time')
+ interactive [bool=False] Enable interactive operation
diff --git a/tool(usage)-[MMGen-command-help].md b/tool(usage)-[MMGen-command-help].md
index 100faad..e68692b 100644
--- a/tool(usage)-[MMGen-command-help].md
+++ b/tool(usage)-[MMGen-command-help].md
@@ -1,129 +1,179 @@
- USAGE INFORMATION FOR MMGEN-TOOL COMMANDS:
+ GENERAL USAGE INFORMATION FOR MMGEN-TOOL COMMANDS
+
+ Arguments with only type specified in square brackets are required
+
+ Arguments with both type and default value specified in square brackets are
+ optional and must be specified in the form ‘name=value’
+
+ For more detailed usage information for a particular tool command, type
+ ‘mmgen-tool help ’
- Unquoted arguments are mandatory
- Quoted arguments are optional, default values will be used
- Argument types and default values are shown in square brackets
Help/usage commands:
- help "command_name" [str='']
- usage "command_name" [str='']
+ help command_name [str='']
+ usage command_name [str='']
+
General string conversion and hashing utilities:
- b32tohex b32num [str or STDIN] "pad" [int=0]
- 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]
+ b32tohex b32_str [str or STDIN] pad [int=0]
+ b58chktohex b58chk_str [str or STDIN]
+ b58tobytes b58_str [str or STDIN] pad [int=0]
+ b58tohex b58_str [str or STDIN] pad [int=0]
+ b6dtohex b6d_str [str or STDIN] pad [int=0]
bytespec dd_style_byte_specifier [str]
- bytestob58 infile [str] "pad" [int=0]
+ 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" [str='hex']
+ hash256 data [str] file_input [bool=False] hex_input [bool=False]
+ 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]
+ 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]
+ hextob6d hexstr [str or STDIN] pad [int=0] add_spaces [bool=True]
id6 infile [str]
id8 infile [str]
- randb58 "nbytes" [int=32] "pad" [int=0]
- randhex "nbytes" [str='32']
+ randb58 nbytes [int=32] pad [int=0]
+ randhex nbytes [int=32]
str2id6 string [str or STDIN]
- to_bytespec n [int] dd_style_byte_specifier [str] "fmt" [str='0.2'] "print_sym" [bool=True]
+ to_bytespec n [int] dd_style_byte_specifier [str] fmt [str='0.2'] print_sym [bool=True]
unhexdump infile [str]
unhexlify hexstr [str or STDIN]
+
Cryptocoin key/address utilities:
+ May require use of the '--coin', '--type' and/or '--testnet' options
+
+ Examples:
+ mmgen-tool --coin=ltc --type=bech32 wif2addr
+ mmgen-tool --coin=zec --type=zcash_z randpair
+
addr2pubhash addr [str or STDIN]
addr2scriptpubkey addr [str or STDIN]
eth_checksummed_addr addr [str or STDIN]
hex2wif privhex [str or STDIN]
- privhex2addr privhex [str or STDIN] "output_pubhex" [bool=False]
+ privhex2addr privhex [str or STDIN]
privhex2pubhex privhex [str or STDIN]
pubhash2addr pubhashhex [str or STDIN]
pubhex2addr pubkeyhex [str or STDIN]
pubhex2redeem_script pubkeyhex [str or STDIN]
randpair
randwif
- redeem_script2addr redeem_scripthex [str or STDIN]
+ redeem_script2addr redeem_script_hex [str or STDIN]
scriptpubkey2addr hexstr [str or STDIN]
wif2addr wifkey [str or STDIN]
wif2hex wifkey [str or STDIN]
wif2redeem_script wifkey [str or STDIN]
wif2segwit_pair wifkey [str or STDIN]
- Seed phrase utilities (valid formats: 'mmgen' (default), 'bip39', 'xmrseed'):
- 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')]
- mn2hex_interactive "fmt" [str='mmgen' (valid options: 'mmgen','bip39','xmrseed')] "mn_len" [int=24] "print_mn" [bool=False]
- 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')]
+ Seed phrase utilities:
+
+ Supported seed phrase formats: 'mmgen' (default), 'bip39', 'xmrseed'
+
+ 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!
+
+ 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 hexstr [str or STDIN] fmt [str='mmgen']
+ mn2hex seed_mnemonic [str or STDIN] fmt [str='mmgen']
+ mn2hex_interactive fmt [str='mmgen'] mn_len [int=24] print_mn [bool=False]
+ mn_printlist fmt [str='mmgen'] enum [bool=False] pager [bool=False]
+ mn_rand128 fmt [str='mmgen']
+ mn_rand192 fmt [str='mmgen']
+ mn_rand256 fmt [str='mmgen']
+ mn_stats fmt [str='mmgen']
+
Utilities for viewing/checking MMGen address and transaction files:
addrfile_chksum mmgen_addrfile [str]
keyaddrfile_chksum mmgen_keyaddrfile [str]
passwdfile_chksum mmgen_passwdfile [str]
- txview mmgen_tx_file(s) [str] "pager" [bool=False] "terse" [bool=False] "sort" [str='addr' (valid options: 'addr','raw')] "filesort" [str='mtime' (valid options: 'mtime','ctime','atime')]
+ txview mmgen_tx_file(s) [str] pager [bool=False] terse [bool=False] sort [str='addr'] filesort [str='mtime']
+
File encryption and decryption:
- decrypt infile [str] "outfile" [str=''] "hash_preset" [str='']
- encrypt infile [str] "outfile" [str=''] "hash_preset" [str='']
+ MMGen encryption suite:
+ * Key: Scrypt (user-configurable hash parameters, 32-byte salt)
+ * Enc: AES256_CTR, 16-byte rand IV, sha256 hash + 32-byte nonce + data
+ * The encrypted file is indistinguishable from random data
+
+ decrypt infile [str] outfile [str=''] hash_preset [str='']
+ encrypt infile [str] outfile [str=''] hash_preset [str='']
+
File utilities:
- extract_key_from_geth_wallet wallet_file [str] "check_addr" [bool=True]
- find_incog_data filename [str] incog_id [str] "keep_searching" [bool=False]
- rand2file outfile [str] nbytes [str] "threads" [int=4] "silent" [bool=False]
+ extract_key_from_geth_wallet wallet_file [str] check_addr [bool=True]
+ find_incog_data filename [str] incog_id [str] keep_searching [bool=False]
+ rand2file outfile [str] nbytes [str] threads [int=4] silent [bool=False]
+
Key, address or subseed generation from an MMGen wallet:
- gen_addr mmgen_addr [str] "wallet" [str=''] "target" [str='addr']
- 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='']
+ gen_addr mmgen_addr [str] wallet [str='']
+ 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] wallet [str='']
+ list_subseeds subseed_idx_range [str] wallet [str='']
- Tracking wallet commands using the JSON-RPC interface:
- add_label mmgen_or_coin_addr [str] label [str]
+ Tracking-wallet commands using the JSON-RPC interface:
+
+ add_label mmgen_or_coin_addr [str] label [str]
daemon_version
- getbalance "minconf" [int=1] "quiet" [bool=False] "pager" [bool=False]
- listaddress mmgen_addr [str] "minconf" [int=1] "pager" [bool=False] "showempty" [bool=True] "showbtcaddr" [bool=True] "age_fmt" [str='confs' (valid options: 'confs','block','days','date','date_time')]
- listaddresses "mmgen_addrs" [str='' (range or list)] "minconf" [int=1] "showempty" [bool=False] "pager" [bool=False] "showbtcaddrs" [bool=True] "all_labels" [bool=False] "sort" [str='' (valid options: 'reverse','age')] "age_fmt" [str='confs' (valid options: 'confs','block','days','date','date_time')]
- remove_address mmgen_or_coin_addr [str]
- remove_label mmgen_or_coin_addr [str]
- twview "pager" [bool=False] "reverse" [bool=False] "wide" [bool=False] "minconf" [int=1] "sort" [str='age'] "age_fmt" [str='confs' (valid options: 'confs','block','days','date','date_time')] "show_mmid" [bool=True] "wide_show_confs" [bool=True]
+ getbalance minconf [int=1] quiet [bool=False] pager [bool=False]
+ listaddress mmgen_addr [str] minconf [int=1] showbtcaddr [bool=True] age_fmt [str='confs']
+ listaddresses mmgen_addrs [str=''] minconf [int=1] pager [bool=False] showbtcaddr [bool=True] showempty [bool=True] all_labels [bool=False] age_fmt [str='confs'] sort [str='']
+ remove_address mmgen_or_coin_addr [str]
+ remove_label mmgen_or_coin_addr [str]
+ rescan_address mmgen_or_coin_addr [str]
+ rescan_blockchain start_block [int=None] stop_block [int=None]
+ resolve_address mmgen_or_coin_addr [str]
+ twexport include_amts [bool=True] pretty [bool=False]
+ twimport filename [str] ignore_checksum [bool=False] batch [bool=False]
+ twview pager [bool=False] reverse [bool=False] wide [bool=False] minconf [int=1] sort [str='age'] age_fmt [str='confs'] interactive [bool=False] show_mmid [bool=True]
+ txhist pager [bool=False] reverse [bool=False] detail [bool=False] sinceblock [int=0] sort [str='age'] age_fmt [str='confs'] interactive [bool=False]
+
To force a command to read from STDIN instead of file (for commands taking
a filename as their first argument), substitute "-" for the filename.
+
EXAMPLES:
- Generate a random Bech32 public/private keypair for LTC:
+ Generate a random LTC Bech32 public/private keypair:
$ mmgen-tool -r0 --coin=ltc --type=bech32 randpair
- Generate a DASH compressed public key address from the supplied WIF key:
+ Generate a DASH address with compressed public key from the supplied WIF key:
$ mmgen-tool --coin=dash --type=compressed wif2addr XJkVRC3eGKurc9Uzx1wfQoio3yqkmaXVqLMTa6y7s3M3jTBnmxfw
Generate a well-known burn address:
$ mmgen-tool hextob58chk 000000000000000000000000000000000000000000
Generate a random 12-word seed phrase:
- $ mmgen-tool -r0 mn_rand128
+ $ mmgen-tool -r0 mn_rand128 fmt=bip39
Same as above, but get additional entropy from user:
- $ mmgen-tool mn_rand128
+ $ mmgen-tool mn_rand128 fmt=bip39
Encode bytes from a file to base 58:
$ mmgen-tool bytestob58 /etc/timezone pad=20
@@ -131,7 +181,6 @@
Reverse a hex string:
$ mmgen-tool hexreverse "deadbeefcafe"
- Same as above, but use a pipe:
+ Same as above, but supply input via STDIN:
$ echo "deadbeefcafe" | mmgen-tool hexreverse -
-
- MMGEN v13.1.0 May 2022 MMGEN-TOOL(USAGE)(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-TOOL(USAGE)(1)
diff --git a/tool-[MMGen-command-help].md b/tool-[MMGen-command-help].md
index f7ecb2f..2d0521d 100644
--- a/tool-[MMGen-command-help].md
+++ b/tool-[MMGen-command-help].md
@@ -8,13 +8,14 @@
-k, --use-internal-keccak-module Force use of the internal keccak module
-K, --keygen-backend n Use backend 'n' for public key generation. Options
for BTC: 1:libsecp256k1 [default] 2:python-ecdsa
+ -l, --list List available commands
-p, --hash-preset p Use the scrypt hash parameters defined by preset 'p'
for password hashing (default: '3')
-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)
- -t, --type t Specify address type (valid options: 'legacy',
+ -t, --type t Specify address type (valid choices: 'legacy',
'compressed', 'segwit', 'bech32', 'zcash_z')
-v, --verbose Produce more verbose output
-X, --cached-balances Use cached balances (Ethereum only)
@@ -26,17 +27,17 @@
Help/usage commands:
help - display usage information for a single command or all commands
- usage - display usage information for a single command
+ usage - display usage information for a single command or all commands
General string conversion and hashing utilities:
- b32tohex - convert an MMGen-flavor base 32 number to hexadecimal
- b58chktohex - convert a base58-check encoded number to hexadecimal
- b58tobytes - convert a base 58 number to bytes (warning: outputs binary
+ b32tohex - convert an MMGen-flavor base 32 string to hexadecimal
+ b58chktohex - convert a base58-check encoded string to hexadecimal
+ b58tobytes - convert a base 58 string 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
+ b58tohex - convert a base 58 string to hexadecimal
+ b6dtohex - convert a die roll base6 (base6d) string to hexadecimal
+ bytespec - convert a byte specifier such as ‘4GB’ into an integer
bytestob58 - convert bytes to base 58 (supply data via STDIN)
hash160 - compute ripemd160(sha256(data)) (convert hex pubkey to hex
addr)
@@ -44,21 +45,23 @@
hexdump - create hexdump of data from file (use '-' for stdin)
hexlify - convert bytes in file to hexadecimal (use '-' for stdin)
hexreverse - reverse bytes of a hexadecimal string
- 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)
+ hextob32 - convert a hexadecimal string to an MMGen-flavor base 32
+ string
+ hextob58 - convert a hexadecimal string to base 58
+ hextob58chk - convert a hexadecimal string to base58-check encoding
+ hextob6d - convert a hexadecimal string 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
base 58
randhex - print 'n' bytes (default 32) of random data in hex format
str2id6 - generate 6-character MMGen ID for a string, ignoring spaces
- to_bytespec - convert an integer to a byte specifier such as '1GB'
+ in string
+ to_bytespec - convert an integer to a byte specifier such as ‘4GB’
unhexdump - decode hexdump from file (use '-' for stdin) (warning:
outputs binary data)
- unhexlify - convert hexadecimal value to bytes (warning: outputs binary
- data)
+ unhexlify - convert a hexadecimal string to bytes (warning: outputs
+ binary data)
Cryptocoin key/address utilities:
@@ -71,29 +74,32 @@
addr2pubhash - convert coin address to public key hash
addr2scriptpubkey - convert coin address to scriptPubKey
eth_checksummed_addr - create a checksummed Ethereum address
- hex2wif - convert a private key from hex to WIF format
- privhex2addr - generate coin address from raw private key data in
- hexadecimal format
- privhex2pubhex - generate a hex public key from a hex private key
+ hex2wif - convert a private key from hexadecimal to WIF format
+ privhex2addr - generate a coin address from raw hexadecimal
+ private key data
+ privhex2pubhex - generate a hexadecimal public key from raw
+ hexadecimal private key data
pubhash2addr - convert public key hash to address
- pubhex2addr - convert a hex pubkey to an address
- pubhex2redeem_script - convert a hex pubkey to a Segwit P2SH-P2WPKH redeem
- script
+ pubhex2addr - convert a hexadecimal pubkey to an address
+ pubhex2redeem_script - convert a hexadecimal pubkey to a Segwit
+ P2SH-P2WPKH redeem script
randpair - generate a random private key/address pair
randwif - generate a random private key in WIF format
redeem_script2addr - convert a Segwit P2SH-P2WPKH redeem script to an
address
scriptpubkey2addr - convert scriptPubKey to coin address
wif2addr - generate a coin address from a key in WIF format
- wif2hex - convert a private key from WIF to hex format
+ wif2hex - convert a private key from WIF to hexadecimal format
wif2redeem_script - convert a WIF private key to a Segwit P2SH-P2WPKH
redeem script
- wif2segwit_pair - generate both a Segwit P2SH-P2WPKH redeem script
- and address from WIF
+ wif2segwit_pair - generate a Segwit P2SH-P2WPKH redeem script and
+ address from a WIF private key
- Seed phrase utilities (valid formats: 'mmgen' (default), 'bip39', 'xmrseed'):
+ Seed phrase utilities:
- IMPORTANT NOTE: MMGen's default seed phrase format uses the Electrum
+ Supported seed phrase formats: 'mmgen' (default), 'bip39', 'xmrseed'
+
+ 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!
@@ -103,30 +109,30 @@
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
+ 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.
+ use the ‘hex2wif’ command.
- hex2mn - convert a 16, 24 or 32-byte hexadecimal number to a
+ hex2mn - convert a 16, 24 or 32-byte hexadecimal string to a
mnemonic seed phrase
- mn2hex - convert a mnemonic seed phrase to a hexadecimal number
+ mn2hex - convert a mnemonic seed phrase to a hexadecimal string
mn2hex_interactive - convert an interactively supplied mnemonic seed
- phrase to a hexadecimal number
- mn_printlist - print mnemonic wordlist
- 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
+ phrase to a hexadecimal string
+ mn_printlist - print a mnemonic wordlist
+ mn_rand128 - generate a random 128-bit mnemonic seed phrase
+ mn_rand192 - generate a random 192-bit mnemonic seed phrase
+ mn_rand256 - generate a random 256-bit mnemonic seed phrase
+ mn_stats - show stats for a mnemonic wordlist
Utilities for viewing/checking MMGen address and transaction files:
addrfile_chksum - compute checksum for MMGen address file
keyaddrfile_chksum - compute checksum for MMGen key-address file
passwdfile_chksum - compute checksum for MMGen password file
- txview - show raw/signed MMGen transaction in human-readable
- form
+ txview - display specified raw or signed MMGen transaction
+ files in human-readable form
File encryption and decryption:
@@ -144,15 +150,16 @@
keystore wallet, returning the decrypted key
find_incog_data - Use an Incog ID to find hidden incognito
wallet data
- rand2file - write 'n' bytes of random data to specified
- file
+ rand2file - write ‘nbytes’ bytes of random data to
+ specified file (dd-style byte specifiers
+ supported)
Key, address or subseed generation from an MMGen wallet:
gen_addr - generate a single MMGen address from default or
specified wallet
- gen_key - generate a single MMGen WIF key from default or
- specified wallet
+ gen_key - generate a single WIF key for specified MMGen
+ address from default or specified wallet
get_subseed - get the Seed ID of a single subseed by Subseed
Index for default or specified wallet
get_subseed_by_seed_id - get the Subseed Index of a single subseed by Seed
@@ -162,18 +169,30 @@
list_subseeds - list a range of subseed Seed IDs for default or
specified wallet
- Tracking wallet commands using the JSON-RPC interface:
+ Tracking-wallet commands using the JSON-RPC interface:
- add_label - add descriptive label for address in tracking wallet
- daemon_version - print coin daemon version
- getbalance - list confirmed/unconfirmed, spendable/unspendable
- balances in tracking wallet
- listaddress - list the specified MMGen address and its balance
- listaddresses - list MMGen addresses and their balances
- remove_address - remove an address from tracking wallet
- remove_label - remove descriptive label for address in tracking wallet
- twview - view tracking wallet
+ add_label - add descriptive label for address in tracking wallet
+ daemon_version - print coin daemon version
+ getbalance - list confirmed/unconfirmed, spendable/unspendable
+ balances in tracking wallet
+ listaddress - list the specified MMGen address in the tracking
+ wallet and its balance
+ listaddresses - list MMGen addresses in the tracking wallet and their
+ balances
+ remove_address - remove an address from tracking wallet
+ remove_label - remove descriptive label for address in tracking wallet
+ rescan_address - rescan an address in the tracking wallet to update its
+ balance
+ rescan_blockchain - rescan the blockchain to update historical
+ transactions in the tracking wallet
+ resolve_address - resolve an MMGen address in the tracking wallet to a
+ coin address or vice-versa
+ twexport - export a tracking wallet to JSON format
+ twimport - restore a tracking wallet from a JSON dump created by
+ ‘twexport’
+ twview - view tracking wallet unspent outputs
+ txhist - view transaction history of tracking wallet
- Type 'mmgen-tool help ' for help on a particular command
+ Type ‘mmgen-tool help ’ for help on a particular command
- MMGEN v13.1.0 May 2022 MMGEN-TOOL(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-TOOL(1)
diff --git a/txbump-[MMGen-command-help].md b/txbump-[MMGen-command-help].md
index 2ec4aea..6a68485 100644
--- a/txbump-[MMGen-command-help].md
+++ b/txbump-[MMGen-command-help].md
@@ -85,4 +85,4 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
- MMGEN v13.1.0 May 2022 MMGEN-TXBUMP(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-TXBUMP(1)
diff --git a/txcreate-[MMGen-command-help].md b/txcreate-[MMGen-command-help].md
index 78a3602..43ca786 100644
--- a/txcreate-[MMGen-command-help].md
+++ b/txcreate-[MMGen-command-help].md
@@ -53,4 +53,4 @@
a plain decimal number, or as satoshis per byte, using an integer followed by
's', for satoshi.
- MMGEN v13.1.0 May 2022 MMGEN-TXCREATE(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-TXCREATE(1)
diff --git a/txdo-[MMGen-command-help].md b/txdo-[MMGen-command-help].md
index 3b6da13..e543b56 100644
--- a/txdo-[MMGen-command-help].md
+++ b/txdo-[MMGen-command-help].md
@@ -116,4 +116,4 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
- MMGEN v13.1.0 May 2022 MMGEN-TXDO(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-TXDO(1)
diff --git a/txsend-[MMGen-command-help].md b/txsend-[MMGen-command-help].md
index f3ab69d..bbb9b3c 100644
--- a/txsend-[MMGen-command-help].md
+++ b/txsend-[MMGen-command-help].md
@@ -8,4 +8,4 @@
-s, --status Get status of a sent transaction
-y, --yes Answer 'yes' to prompts, suppress non-essential output
- MMGEN v13.1.0 May 2022 MMGEN-TXSEND(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-TXSEND(1)
diff --git a/txsign-[MMGen-command-help].md b/txsign-[MMGen-command-help].md
index 8a704e4..3e421d1 100644
--- a/txsign-[MMGen-command-help].md
+++ b/txsign-[MMGen-command-help].md
@@ -78,4 +78,4 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
- MMGEN v13.1.0 May 2022 MMGEN-TXSIGN(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-TXSIGN(1)
diff --git a/walletchk-[MMGen-command-help].md b/walletchk-[MMGen-command-help].md
index 67ad950..f8d1344 100644
--- a/walletchk-[MMGen-command-help].md
+++ b/walletchk-[MMGen-command-help].md
@@ -49,4 +49,4 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
- MMGEN v13.1.0 May 2022 MMGEN-WALLETCHK(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-WALLETCHK(1)
diff --git a/walletconv-[MMGen-command-help].md b/walletconv-[MMGen-command-help].md
index 9847225..a98724a 100644
--- a/walletconv-[MMGen-command-help].md
+++ b/walletconv-[MMGen-command-help].md
@@ -59,4 +59,4 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
- MMGEN v13.1.0 May 2022 MMGEN-WALLETCONV(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-WALLETCONV(1)
diff --git a/walletgen-[MMGen-command-help].md b/walletgen-[MMGen-command-help].md
index a102fe1..a139aa7 100644
--- a/walletgen-[MMGen-command-help].md
+++ b/walletgen-[MMGen-command-help].md
@@ -52,4 +52,4 @@
MMGenWallet .mmdat wallet,w
PlainHexSeedFile .hex hex,rawhex,plainhex
- MMGEN v13.1.0 May 2022 MMGEN-WALLETGEN(1)
+ MMGEN v13.2.dev13 August 2022 MMGEN-WALLETGEN(1)
diff --git a/xmrwallet-[MMGen-command-help].md b/xmrwallet-[MMGen-command-help].md
index 2a2451d..0b54786 100644
--- a/xmrwallet-[MMGen-command-help].md
+++ b/xmrwallet-[MMGen-command-help].md
@@ -2,8 +2,10 @@
in an MMGen XMR key-address file
USAGE: mmgen-xmrwallet [opts] create [wallets]
mmgen-xmrwallet [opts] sync [wallets]
- mmgen-xmrwallet [opts] transfer
- mmgen-xmrwallet [opts] sweep
+ mmgen-xmrwallet [opts] list [wallets]
+ mmgen-xmrwallet [opts] new NEW_ADDRESS_SPEC
+ mmgen-xmrwallet [opts] transfer TRANSFER_SPEC
+ mmgen-xmrwallet [opts] sweep SWEEP_SPEC
mmgen-xmrwallet [opts] relay
OPTIONS:
-h, --help Print this help message
@@ -44,6 +46,8 @@
create - create wallet for all or specified addresses in key-address file
sync - sync wallet for all or specified addresses in key-address file
+ list - same as 'sync', but also list detailed address info for accounts
+ new - create a new account in a wallet, or a new address in an account
transfer - transfer specified XMR amount to specified address from specified
wallet:account
sweep - sweep funds in specified wallet:account to new address in same
@@ -52,18 +56,29 @@
or 'transfer' with the --do-not-relay option
- CREATE AND SYNC OPERATION NOTES
+ 'CREATE', 'SYNC' AND 'LIST' OPERATION NOTES
These operations take an optional `wallets` argument: one or more address
indexes (expressed as a comma-separated list, hyphenated range, or both)
in the specified key-address file, each corresponding to a Monero wallet
- to be created or synced. If omitted, all wallets are operated upon.
+ to be created, synced or listed. If omitted, all wallets are operated upon.
- TRANSFER OPERATION NOTES
+ 'NEW' OPERATION NOTES
- The transfer operation takes a `transfer specifier` arg with the following
- format:
+ This operation takes a NEW_ADDRESS_SPEC arg with the following format:
+
+ WALLET[:ACCOUNT][,"label text"]
+
+ where WALLET is a wallet number and ACCOUNT an account index. If ACCOUNT is
+ omitted, a new account will be created in the wallet, otherwise a new address
+ will be created in the specified account. An optional label text may be
+ appended to the spec following a comma.
+
+
+ 'TRANSFER' OPERATION NOTES
+
+ The transfer operation takes a TRANSFER_SPEC arg with the following format:
SOURCE:ACCOUNT:ADDRESS,AMOUNT
@@ -71,9 +86,9 @@
and AMOUNT the destination Monero address and XMR amount, respectively.
- SWEEP OPERATION NOTES
+ 'SWEEP' OPERATION NOTES
- The sweep operation takes a `sweep specifier` arg with the following format:
+ The sweep operation takes a SWEEP_SPEC arg with the following format:
SOURCE:ACCOUNT[,DEST]
@@ -92,7 +107,7 @@
in an account.
- RELAY OPERATION NOTES
+ 'RELAY' OPERATION NOTES
By default, transactions are relayed to a monerod running on localhost at the
default RPC port. To relay transactions to a remote or non-default monerod
@@ -138,4 +153,10 @@
Relay the created sweep transaction via a host on the Tor network:
$ mmgen-xmrwallet --tx-relay-daemon=abcdefghijklmnop.onion:127.0.0.1:9050 relay *XMR*.sigtx
- MMGEN v13.1.0 May 2022 MMGEN-XMRWALLET(1)
+ Create a new account in wallet 2:
+ $ mmgen-xmrwallet new *.akeys.mmenc 2
+
+ Create a new address in account 1 of wallet 2, with label:
+ $ mmgen-xmrwallet new *.akeys.mmenc 2:1,"from ABC exchange"
+
+ MMGEN v13.2.dev13 August 2022 MMGEN-XMRWALLET(1)