2023-01-12 10:51:12 +00:00
|
|
|
# MMGen Wallet
|
2016-07-27 11:26:11 +03:00
|
|
|
|
2020-02-22 19:54:03 +00:00
|
|
|
##### An online/offline cryptocurrency wallet for the command line
|
2014-04-03 13:51:05 +04:00
|
|
|
|
2023-11-17 09:04:14 +00:00
|
|
|

|
2025-01-03 14:23:14 +00:00
|
|
|

|
2023-11-10 16:50:16 +00:00
|
|
|
|
2014-04-03 13:51:05 +04:00
|
|
|
### Description
|
|
|
|
|
|
2023-11-16 16:02:49 +00:00
|
|
|
MMGen Wallet is a wallet and cold storage solution for Bitcoin (and selected
|
|
|
|
|
altcoins) implemented as a suite of lightweight Python scripts. The scripts
|
|
|
|
|
work in tandem with a reference Bitcoin or altcoin daemon running on both online
|
|
|
|
|
and offline computers to provide a robust solution for securely storing,
|
|
|
|
|
tracking, sending and receiving your crypto assets.
|
2019-06-10 09:17:05 +00:00
|
|
|
|
|
|
|
|
The online computer is used for tracking balances and creating and sending
|
2020-02-22 19:54:03 +00:00
|
|
|
transactions, while the offline machine (typically an air-gapped, low-power
|
2019-06-10 09:17:05 +00:00
|
|
|
device such as a Raspberry Pi) takes care of wallet creation, address generation
|
|
|
|
|
and transaction signing. All operations involving secret data are handled
|
|
|
|
|
offline: **your seed and private keys never come into contact with a
|
|
|
|
|
network-connected device.**
|
|
|
|
|
|
2023-11-16 16:02:49 +00:00
|
|
|
MMGen Wallet is designed for reliability by having the reference Bitcoin or
|
|
|
|
|
altcoin daemon, rather than less-tested third-party software, do all the “heavy
|
|
|
|
|
lifting” of tracking and signing transactions. It’s also designed with privacy
|
2025-09-16 11:27:28 +00:00
|
|
|
in mind: unlike most cryptocurrency wallets, MMGen Wallet is a completely
|
2023-11-16 16:02:49 +00:00
|
|
|
self-contained system that makes **no connections to the Internet** apart from
|
2025-09-17 09:33:04 +00:00
|
|
|
the coin network itself (RUNE transacting excepted): no information about which
|
|
|
|
|
addresses you’re tracking is ever leaked to the outside world.
|
2014-04-03 13:51:05 +04:00
|
|
|
|
2023-11-16 16:02:49 +00:00
|
|
|
Like all deterministic wallets, MMGen Wallet can generate a virtually unlimited
|
|
|
|
|
number of address/key pairs from a single seed. Your wallet never changes, so
|
|
|
|
|
you need back it up only once.
|
2014-04-03 13:51:05 +04:00
|
|
|
|
2016-07-27 11:26:11 +03:00
|
|
|
At the heart of the MMGen system is the seed, the “master key” providing access
|
2020-02-22 19:54:03 +00:00
|
|
|
to all your crypto assets. The seed can be stored in many different formats:
|
|
|
|
|
as a password-encrypted wallet (the default), as a one-line base58 or
|
2020-02-25 19:03:47 +00:00
|
|
|
hexadecimal seed file, as formatted “dieroll base6” data, as an Electrum-based
|
|
|
|
|
or BIP39 mnemonic seed phrase, as a brainwallet passphrase, or as “incognito
|
2020-05-30 17:30:52 +00:00
|
|
|
data” hideable within random data in a file or block device. Conversion among
|
2020-02-25 19:03:47 +00:00
|
|
|
all formats is supported.
|
2015-01-04 11:14:11 +03:00
|
|
|
|
2019-03-08 09:06:45 +00:00
|
|
|
***mmgen-txcreate running in a terminal window***
|
|
|
|
|
![mmgen-txcreate running in a terminal window][9]
|
|
|
|
|
|
|
|
|
|
#### Simplified key derivation and seed-phrase generation
|
|
|
|
|
|
2023-11-16 16:02:49 +00:00
|
|
|
To deterministically derive its keys, MMGen Wallet uses a non-hierarchical
|
|
|
|
|
scheme differing from the BIP32 protocol on which most of today’s popular
|
|
|
|
|
wallets are based. One advantage of this simple, hash-based scheme is that you
|
|
|
|
|
can easily [recover your private keys from your seed without the MMGen Wallet
|
|
|
|
|
software][K] using standard command-line utilities.
|
2019-03-08 09:06:45 +00:00
|
|
|
|
2023-11-16 16:02:49 +00:00
|
|
|
MMGen Wallet also differs from most cryptocurrency wallets today in its use of
|
|
|
|
|
the original 1626-word [Electrum wordlist][ew] for mnemonic seed phrases. Seed
|
2019-06-10 09:17:05 +00:00
|
|
|
phrases are derived using ordinary base conversion, similarly allowing you to
|
2023-11-16 16:02:49 +00:00
|
|
|
regenerate your seed from your seed phrase without the MMGen Wallet software
|
|
|
|
|
should the need arise. An example of how to do this at the Python prompt is
|
|
|
|
|
provided [here.][S]
|
2019-03-08 09:06:45 +00:00
|
|
|
|
|
|
|
|
The original Electrum wordlist was derived from a [frequency list][fl] of words
|
|
|
|
|
found in contemporary English poetry. The high emotional impact of these words
|
|
|
|
|
makes seed phrases easy to memorize. Curiously, only 861 of them are shared by
|
|
|
|
|
the more prosaic 2048-word [BIP39 wordlist][bw] used in most wallets today.
|
2014-04-03 13:51:05 +04:00
|
|
|
|
2020-05-30 17:30:52 +00:00
|
|
|
Beginning with version 0.12.0, the BIP39 mnemonic format is also supported,
|
2023-11-16 16:02:49 +00:00
|
|
|
allowing you to use MMGen Wallet as a master wallet for other wallets supporting
|
|
|
|
|
that widespread standard.
|
2020-02-25 19:03:47 +00:00
|
|
|
|
2023-11-16 16:02:49 +00:00
|
|
|
#### A brief overview of MMGen Wallet’s unique feature set:
|
2019-06-10 09:17:05 +00:00
|
|
|
|
2025-09-16 11:27:28 +00:00
|
|
|
- **[Transaction support][T]** for BTC, [BCH][bx], [LTC][bx], [ETH][E],
|
2025-09-17 09:33:04 +00:00
|
|
|
[ETC][E], [ERC20 tokens][E] and [RUNE][rx].
|
|
|
|
|
- **[Native asset swaps via THORChain][tc]** (21 assets currently supported).
|
2021-10-07 13:12:11 +00:00
|
|
|
- **Monero transacting and wallet management** via the interactive
|
2023-05-21 11:34:16 +00:00
|
|
|
[`mmgen-xmrwallet`][xm] command.
|
2021-10-07 13:12:11 +00:00
|
|
|
- **[Address generation support][ag]** for the above coins, plus [Zcash][zx]
|
|
|
|
|
(t and z addresses) and [144 Bitcoin-derived altcoins][ax].
|
2020-02-22 19:54:03 +00:00
|
|
|
- **Support for all Bitcoin address types** including Segwit-P2SH and Bech32.
|
2019-06-10 09:17:05 +00:00
|
|
|
- **Independent key derivation for each address type:** No two addresses ever
|
|
|
|
|
share the same private key. Certain wallets in wide use today regrettably
|
|
|
|
|
fail to guarantee this property, leading to the danger of inadvertent key
|
|
|
|
|
reuse.
|
|
|
|
|
- **Coin control:** You select the outputs your transaction will spend. An
|
|
|
|
|
essential requirement for maintaining anonymity.
|
|
|
|
|
- **[BIP69 transaction input and output ordering][69]** helps anonymize the
|
|
|
|
|
“signature” of your transactions.
|
|
|
|
|
- **[Full control over transaction fees][M]:** Fees are specified as absolute or
|
2020-03-12 16:38:02 +00:00
|
|
|
satoshi/byte amounts and can be adjusted interactively, letting you round fees
|
|
|
|
|
to improve anonymity. Network fee estimation (with selectable estimation
|
|
|
|
|
mode), [RBF][R] and [fee bumping][B] are supported.
|
2020-02-25 19:03:47 +00:00
|
|
|
- **Support for nine wallet formats:** three encrypted (native wallet,
|
|
|
|
|
brainwallet, incognito wallet) and six unencrypted (native mnemonic,
|
|
|
|
|
**BIP39,** mmseed, hexseed, plain hex, dieroll).
|
|
|
|
|
- Interactive **dieroll wallet** generation via `mmgen-walletconv -i dieroll`.
|
|
|
|
|
- Support for new-style **Monero mnemonics** in `mmgen-tool` and `mmgen-passgen`.
|
2019-06-10 09:17:05 +00:00
|
|
|
- **[Subwallets][U]:** Subwallets have many applications, the most notable being
|
2019-06-12 14:21:28 +00:00
|
|
|
online hot wallets, decoy wallets and travel wallets. MMGen subwallets are
|
|
|
|
|
functionally and externally identical to ordinary wallets, which provides a
|
|
|
|
|
key security benefit: only the user who generated the subwallet knows that it
|
|
|
|
|
is indeed a subwallet. Subwallets don’t need to be backed up, as they can
|
|
|
|
|
always be regenerated from their parent.
|
2020-02-25 19:03:47 +00:00
|
|
|
- **[XOR (N-of-N) seed splitting][O]** with shares exportable to all MMGen
|
|
|
|
|
wallet formats. The [master share][ms] feature allows you to create multiple
|
|
|
|
|
splits with a single master share.
|
2019-06-10 09:17:05 +00:00
|
|
|
- **[Transaction autosigning][X]:** This feature puts your offline signing
|
|
|
|
|
machine into “hands-off” mode, allowing you to transact directly from cold
|
2020-03-12 16:38:02 +00:00
|
|
|
storage securely and conveniently. Additional LED signaling support is
|
2019-12-07 12:20:21 +00:00
|
|
|
provided for Raspbian and Armbian platforms.
|
2023-11-16 16:02:49 +00:00
|
|
|
- **[Password generation][G]:** MMGen Wallet can be used to generate and manage
|
|
|
|
|
your online passwords. Password lists are identified by arbitrarily chosen
|
|
|
|
|
strings like “alice@github” or “bob@reddit”. Passwords of different lengths
|
|
|
|
|
and formats, including BIP39, are supported.
|
2022-05-08 10:11:57 +00:00
|
|
|
- **[Message signing][MS]** for BTC, BCH, LTC, ETH and ETC. Signing for
|
|
|
|
|
multiple addresses and autosigning are supported.
|
2019-06-10 09:17:05 +00:00
|
|
|
- **Selectable seed lengths** of 128, 192 or 256 bits. Subwallets may have
|
|
|
|
|
shorter seeds than their parent.
|
|
|
|
|
- **User-enhanced entropy:** All operations requiring random data will prompt
|
|
|
|
|
you for additional entropy from the keyboard. Keystroke timings are used in
|
|
|
|
|
addition to the characters typed.
|
|
|
|
|
- **Wallet-free operation:** All wallet operations can be performed directly
|
|
|
|
|
from your seed phrase at the prompt, allowing you to dispense with a
|
|
|
|
|
physically stored wallet entirely if you wish.
|
2023-11-16 16:02:49 +00:00
|
|
|
- Word-completing **mnemonic entry modes** customized for each of MMGen Wallet’s
|
2022-01-29 11:23:39 +00:00
|
|
|
supported wordlists minimize keystrokes required during seed phrase entry.
|
2020-03-12 16:38:02 +00:00
|
|
|
- **Stealth mnemonic entry:** This feature allows you to obfuscate your seed
|
|
|
|
|
phrase with “dead” keystrokes to guard against acoustic side-channel attacks.
|
2023-11-16 16:02:49 +00:00
|
|
|
- **Network privacy:** MMGen Wallet never “calls home” or checks for upgrades
|
|
|
|
|
over the network. No information about your wallet installation or crypto
|
|
|
|
|
assets is ever leaked to third parties.
|
|
|
|
|
- **Human-readable wallet files:** All of MMGen Wallet’s wallet formats, with
|
|
|
|
|
the exception of incognito wallets, can be printed or copied by hand.
|
|
|
|
|
- **Terminal-based:** MMGen Wallet can be run in a screen or tmux session on
|
|
|
|
|
your local network.
|
|
|
|
|
- **Scriptability:** Most of MMGen Wallet’s commands can be made
|
|
|
|
|
non-interactive, allowing you to automate repetitive tasks using shell
|
|
|
|
|
scripts.
|
2025-09-16 11:27:28 +00:00
|
|
|
- The project also includes the [`mmgen-tool`][L] utility, a handy “Swiss
|
2025-09-17 09:33:04 +00:00
|
|
|
Army knife” for cryptocurrency developers, and [`mmgen-cli`][cl], for
|
|
|
|
|
easy communication with the RPC interfaces of all supported coin daemons.
|
2020-02-25 19:03:47 +00:00
|
|
|
|
|
|
|
|
#### Supported platforms:
|
|
|
|
|
|
2024-09-22 09:36:11 +00:00
|
|
|
Linux, macOS, Windows/MSYS2
|
2019-06-10 09:17:05 +00:00
|
|
|
|
2025-04-09 09:16:01 +00:00
|
|
|
### [Download / Install / Use][D]
|
2020-02-25 19:03:47 +00:00
|
|
|
|
2014-04-04 00:33:56 +04:00
|
|
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
|
|
2023-01-12 10:51:12 +00:00
|
|
|
Homepage:
|
2023-01-22 20:44:09 +00:00
|
|
|
[Clearnet](https://mmgen-wallet.cc) |
|
2023-01-12 10:51:12 +00:00
|
|
|
[I2P](http://mmgen-wallet.i2p) |
|
2023-01-13 09:28:13 +00:00
|
|
|
[Onion](http://mmgen55rtcahqfp2hn3v7syqv2wqanks5oeezqg3ykwfkebmouzjxlad.onion)
|
2025-09-16 11:27:28 +00:00
|
|
|
Code Repository:
|
2023-11-17 09:04:14 +00:00
|
|
|
[Clearnet](https://mmgen.org/project/mmgen/mmgen-wallet) |
|
|
|
|
|
[I2P](http://mmgen-wallet.i2p/project/mmgen/mmgen-wallet) |
|
|
|
|
|
[Onion](http://mmgen55rtcahqfp2hn3v7syqv2wqanks5oeezqg3ykwfkebmouzjxlad.onion/project/mmgen/mmgen-wallet)
|
2025-09-16 11:27:28 +00:00
|
|
|
Code Repository Mirrors:
|
2023-11-17 09:04:14 +00:00
|
|
|
[Github](https://github.com/mmgen/mmgen-wallet) |
|
|
|
|
|
[Gitlab](https://gitlab.com/mmgen/mmgen-wallet) |
|
2025-03-01 09:57:18 +00:00
|
|
|
[Codeberg](https://codeberg.org/mmgen/mmgen-wallet)
|
2025-09-16 11:27:28 +00:00
|
|
|
IRC:
|
|
|
|
|
**#mmgen-wallet** ([OFTC](https://oftc.net) | postman.i2p) |
|
|
|
|
|
E-Mail:
|
|
|
|
|
[Tuta](mailto:mmgen@tuta.io) |
|
|
|
|
|
[Proton](mailto:mmgen-wallet@proton.me)
|
|
|
|
|
Accounts:
|
2023-11-30 09:29:53 +00:00
|
|
|
[Twitter](https://twitter.com/TheMMGenProject) |
|
2025-09-16 11:27:28 +00:00
|
|
|
[Bitcointalk](https://bitcointalk.org/index.php?topic=567069.new#new) |
|
|
|
|
|
[Dread](http://dreadytofatroptsdj6io7l3xptbet6onoyno2yv7jicoxknyazubrad.onion/u/MMGen) |
|
2023-01-12 10:51:12 +00:00
|
|
|
[Reddit](https://www.reddit.com/user/mmgen-py) |
|
2025-09-16 11:27:28 +00:00
|
|
|
[Keybase](https://keybase.io/mmgen)
|
|
|
|
|
PGP Signing Key: [5C84 CB45 AEE2 250F 31A6 A570 3F8B 1861 E32B 7DA2][5]
|
2023-01-27 08:56:51 +00:00
|
|
|
Donate:
|
|
|
|
|
⊙ BTC: *bc1qxmymxf8p5ckvlxkmkwgw8ap5t2xuaffmrpexap*
|
|
|
|
|
⊙ BCH: *15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w*
|
|
|
|
|
⊙ XMR: *8B14zb8wgLuKDdse5p8f3aKpFqRdB4i4xj83b7BHYABHMvHifWxiDXeKRELnaxL5FySfeRRS5girgUvgy8fQKsYMEzPUJ8h*
|
2023-01-22 20:44:09 +00:00
|
|
|
|
2025-04-09 09:16:01 +00:00
|
|
|
[D]: ../../wiki
|
2023-01-22 20:44:09 +00:00
|
|
|
[5]: ../../wiki/MMGen-Signing-Keys
|
2023-01-27 08:56:51 +00:00
|
|
|
[9]: https://mmgen.org/images/rxvt-txcreate.jpg
|
2023-11-22 10:38:48 +00:00
|
|
|
[K]: ../../wiki/Recovering-Your-Keys-Without-the-MMGen-Wallet-Software
|
|
|
|
|
[S]: ../../wiki/Recovering-Your-Keys-Without-the-MMGen-Wallet-Software#a_mh
|
2023-01-22 20:44:09 +00:00
|
|
|
[W]: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
|
2019-03-08 09:06:45 +00:00
|
|
|
[ew]: https://github.com/spesmilo/electrum/blob/1.9.5/lib/mnemonic.py
|
|
|
|
|
[bw]: https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt
|
|
|
|
|
[fl]: https://en.wiktionary.org/wiki/Wiktionary:Frequency_lists/Contemporary_poetry
|
2023-01-22 20:44:09 +00:00
|
|
|
[U]: ../../wiki/Subwallets
|
2024-10-08 12:56:01 +00:00
|
|
|
[X]: ../../wiki/command-help-autosign
|
|
|
|
|
[xm]: ../../wiki/command-help-xmrwallet
|
|
|
|
|
[G]: ../../wiki/command-help-passgen
|
|
|
|
|
[MS]: ../../wiki/command-help-msg
|
2025-09-17 09:33:04 +00:00
|
|
|
[cl]: ../../wiki/command-help-cli
|
2023-11-16 16:02:49 +00:00
|
|
|
[T]: ../../wiki/Getting-Started-with-MMGen-Wallet#a_ct
|
2023-01-22 20:44:09 +00:00
|
|
|
[E]: ../../wiki/Altcoin-and-Forkcoin-Support#a_tx
|
2024-10-08 12:56:01 +00:00
|
|
|
[ag]: ../../wiki/command-help-addrgen
|
2023-01-22 20:44:09 +00:00
|
|
|
[bx]: ../../wiki/Altcoin-and-Forkcoin-Support#a_bch
|
2025-09-17 09:33:04 +00:00
|
|
|
[rx]: ../../wiki/Altcoin-and-Forkcoin-Support#a_rune
|
|
|
|
|
[tc]: ../../wiki/Altcoin-and-Forkcoin-Support#a_tcswap
|
2023-01-22 20:44:09 +00:00
|
|
|
[zx]: ../../wiki/Altcoin-and-Forkcoin-Support#a_zec
|
|
|
|
|
[ax]: ../../wiki/Altcoin-and-Forkcoin-Support#a_kg
|
2023-11-16 16:02:49 +00:00
|
|
|
[M]: ../../wiki/Getting-Started-with-MMGen-Wallet#a_fee
|
|
|
|
|
[R]: ../../wiki/Getting-Started-with-MMGen-Wallet#a_rbf
|
2024-10-08 12:56:01 +00:00
|
|
|
[B]: ../../wiki/command-help-txbump
|
2019-06-10 09:17:05 +00:00
|
|
|
[69]: https://github.com/bitcoin/bips/blob/master/bip-0069.mediawiki
|
2023-01-22 20:44:09 +00:00
|
|
|
[O]: ../../wiki/XOR-Seed-Splitting:-Theory-and-Practice
|
2024-10-08 12:56:01 +00:00
|
|
|
[ms]: ../../wiki/command-help-seedsplit
|
2023-01-22 20:44:09 +00:00
|
|
|
[ta]: ../../wiki/Tool-API
|
2024-10-08 12:56:01 +00:00
|
|
|
[L]: ../../wiki/command-help-tool
|