an online/offline cryptocurrency wallet for the command line https://mmgen-wallet.cc
|
5 years ago | |
---|---|---|
cmds | 5 years ago | |
data_files | 5 years ago | |
doc | 5 years ago | |
extmod | 5 years ago | |
mmgen | 5 years ago | |
scripts | 5 years ago | |
test | 5 years ago | |
INSTALL | 7 years ago | |
LICENSE | 10 years ago | |
MANIFEST.in | 5 years ago | |
README.md | 5 years ago | |
SIGNING_KEYS.pub | 7 years ago | |
setup.py | 5 years ago |
Note: This is the source code repository of the MMGen wallet system. For an easier way to install MMGen, check out the prebuilt bootable USB images on the MMGenLive home page.
MMGen 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.
The online computer is used for tracking balances and creating and sending transactions, while the offline computer (typically an air-gapped, low-power 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.
MMGen 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 in mind: unlike some other online/offline wallets, MMGen is a completely self-contained system that makes no connections to the Internet apart from the coin network itself: no information about which addresses you’re tracking is ever leaked to the outside world.
Like all deterministic wallets, MMGen 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.
At the heart of the MMGen system is the seed, the “master key” providing access to all your crypto assets. The seed can be stored in five different ways:
as a password-encrypted wallet. The crack-resistant Scrypt hash function is used for password hashing. Scrypt’s parameters can be tuned to make your wallet’s password very difficult to crack should it fall into the wrong hands. The wallet is a compact, six-line text file suitable for printing or even writing out by hand;
as a seed file: a one-line, conveniently formatted base-58 representation of your unencrypted seed plus a checksum;
as an Electrum-like mnemonic seed phrase of 12, 18 or 24 words;
as a brainwallet passphrase (this option is recommended only for users who understand the risks of brainwallets and know how to create a strong brainwallet passphrase). The brainwallet is hashed using Scrypt with tunable parameters, making it much harder to crack than standard SHA256 brainwallets; or
as “incognito data”, a wallet encrypted to make it indistinguishable from random data. This data can be hidden on a disk partition filled with random data, or in a file at an offset of your choice. This makes it possible to hide a wallet at a non-private location—on cloud storage, for example. Incognito wallet hiding/retrieval is seamlessly integrated into MMGen, making its use nearly as easy as that of the standard wallet.
The best part is that all these methods can be combined. If you forget your mnemonic seed phrase, for example, you can regenerate it from a stored wallet or seed file. Correspondingly, a lost wallet can be regenerated from a mnemonic or seed or vice-versa.
mmgen-txcreate running in a terminal window
To deterministically derive its keys, MMGen 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 program itself using standard command-line utilities.
MMGen also differs from most cryptocurrency wallets today in its use of the original 1626-word Electrum wordlist for mnemonic seed phrases. Seed phrases are derived using ordinary base conversion, similarly allowing you to regenerate your seed from your seed phrase without MMGen program itself, should the need arise. An example of how to do this at the Python prompt is provided here.
The original Electrum wordlist was derived from a frequency list 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 used in most wallets today.
mmgen-tool
utility’s commands can be piped.Install a prebuilt bootable image (MMGenLive) on a USB stick
Install from source on Microsoft Windows
Install from source on Debian, Ubuntu, Raspbian or Armbian Linux
Getting Started with MMGen
MMGen Quick Start with Regtest Mode
MMGen command help
Recovering your keys without the MMGen software
Altcoin and Forkcoin support (ETH,ETC,XMR,ZEC,LTC,BCH and 144 Bitcoin-derived alts)
Subwallets
Forum | Reddit | PGP Public Keys | Donate (BTC,BCH): 15TLdmi5NYLdqmtCqczUs5pBPkJDXRs83w