modified: Getting-Started-with-MMGen-Wallet.md

modified: Home.md
modified: Install-MMGen-Wallet-on-Linux-or-macOS.md
The MMGen Project 2025-07-01 11:23:08 +00:00
commit fa2d6b158c
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
3 changed files with 97 additions and 119 deletions

@ -38,10 +38,10 @@
#### <a id="a_bb">Before you begin</a>
Before you begin, note that the filenames, seed IDs and Bitcoin addresses used
in this primer are intentionally invalid and are for purposes of illustration
only. As you perform the exercises, you will substitute real ones in their
place.
Before you begin, please note that the filenames, seed IDs and Bitcoin addresses
used in this primer are intentionally invalid and are for purposes of
illustration only. As you perform the exercises, you will substitute real ones
in their place.
The up arrow (for repeating commands) and tab key (or Ctrl-I) (for completing
commands and filenames) will speed up your work at the command line greatly.
@ -53,16 +53,16 @@ writing). See [Altcoin-and-Forkcoin-Support][09] for more details.
#### <a id="a_iv">Invocation</a>
MMGen Wallet is not a single program but a suite of lightweight scripts run from
the command line. Commands all begin, not surprisingly, with `mmgen`, and thus
you may view all available commands by typing `mmgen` followed by the TAB key.
Every command has a help screen displaying detailed usage and options
information. To view it, type the command name followed by `--help`. Note that
most command options have long and short versions. For example, the `--help`
option may be abbreviated to `-h`. Exceptions are the options listed by
`--longhelp`, which have no short versions.
MMGen Wallet is not a single program but a suite of scripts run from the command
line. Commands all begin, not surprisingly, with `mmgen`, and thus you may view
all available commands by typing `mmgen` followed by the TAB key. Every command
has a help screen displaying detailed usage and options information, available
by entering the command name followed by `--help`. Note that most command
options have long and short versions. For example, the `--help` option may be
abbreviated to `-h`. Exceptions are the options listed by `--longhelp`, which
have no short versions.
MMGen Wallet’s commands are generally interactive, providing you with information
MMGen Wallet’s scripts are generally interactive, providing you with information
and prompting you for input. The `--verbose` or `-v` option requests commands
to be more wordy, while the `--quiet` or `-q` option suppresses all but the most
essential information. These options are available for all MMGen Wallet
@ -80,31 +80,35 @@ Sample command invocations:
```text
$ mmgen-txcreate --help
$ mmgen-txcreate --coin=eth --help
$ mmgen-addrgen --verbose 1-10
$ mmgen-walletgen
$ mmgen-walletgen --quiet --seed-len 128
```
Note that the help screens are contextual, so the first two invocations will
produce different output.
#### <a id="a_cf">Configuration file</a>
Just like Bitcoin Core, MMGen Wallet has its own data directory and
configuration file. The data directory is `.mmgen` in the user’s home directory
and the config file is `mmgen.cfg`. The config file contains global settings
which you may wish to edit at some point to customize your installation. These
settings include the maximum transaction fee; the user name, password and
hostname used for communicating with your Bitcoin or altcoin daemon; and a
number of others.
Just like Bitcoin Core, MMGen Wallet has its own data directory, `.mmgen` in the
user’s home directory, and configuration file, `mmgen.cfg`. The config file
contains global settings which you may wish to edit at some point to customize
your installation. These settings include the maximum transaction fee; the user
name, password and hostname used for communicating with your Bitcoin or altcoin
daemon; and many others. For details, consult the configuration file itself,
which is extensively commented.
#### <a id="a_ts">Bob and Alice regtest mode</a>
If you just want to quickly test using MMGen Wallet, it’s possible to perform
all wallet generation, wallet format conversion, address and key generation, and
address import operations on an offline computer with no blockchain and no
bitcoin balance.
address import operations on an offline computer with no blockchain and no coin
balance.
If you want to practice creating, signing and sending transactions with real
bitcoins, however, you’ll need a fully synced blockchain and some coins to play
with. This involves an expenditure of both time and money.
However, if you want to practice creating, signing and sending transactions with
real assets, you’ll need a fully synced blockchain and some coins to play with.
This involves an expenditure of both time and money.
Fortunately, there’s an alternative: MMGen Wallet’s **regtest mode** creates a
virtual network of two users, Bob and Alice, who transact with each other on a
@ -158,11 +162,11 @@ Since the wallet is a small, humanly readable ASCII file, it can easily be
printed out on paper.
Another highly recommended way to back up your wallet is to generate a mnemonic
seed phrase or seed file [as described below](#a_ms) and write it down or
memorize it. If you have an average or better memory, you’ll find memorizing
your seed phrase to be surprisingly easy. And the peace of mind that comes with
knowing that your coins are recoverable **even if you lose all your physical
backups** can’t be overestimated.
seed phrase or seed file [as described below](#a_ms) and record or memorize it.
If you have an average or better memory, you’ll find memorizing your seed phrase
to be surprisingly easy. And the peace of mind that comes with knowing that your
coins are recoverable **even if you lose all your physical backups** can’t be
overestimated.
### <a id="a_tr">Transacting</a>
@ -249,77 +253,51 @@ $ cat '89ABCDEF-B[1-10].addrs'
Note that for non-legacy address types the code letter is included in the
filename.
To fund your wallet, first import the addresses into your tracking wallet and
then send some coins to any of them. If you run out of addresses, generate
more. To generate a hundred addresses you’d specify an address range of
`1-100`.
Let’s say you’ve decided to spend some BTC into the first four addresses above.
Begin by importing these addresses into the tracking wallet on your online
machine so their balances will be visible. For convenience of reference,
provide the addresses with labels. We’ll use the labels ‘Donations’, ‘Storage
1’, ‘Storage 2’ and ‘Storage 3’.
Make a copy of the address file
```text
$ cp '89ABCDEF-S[1-10].addrs' my.addrs
```
and edit it using the text editor of your choice,
```text
$ nano my.addrs
```
adding labels to the addresses you’ve chosen to spend to:
```text
# My first MMGen addresses
89ABCDEF SEGWIT {
1 36bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE Donations
2 3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc Storage 1
3 3HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N Storage 2
4 34Tu3z1tiexXDonNsFIkvzqutE5E3pTK8s Storage 3
5 3PeI55vtp2bX2uKDkAAR2c6ekHNYe4Hcq7
6 3FEqfEsSILwXPfMvVvVuUovzTaaST62Mnf
7 3LTTzuhMqPLwQ4IGCwwugny6ZMtUQJSJ1
8 3F9495H8EJLb54wirgZkVgI47SP7M2RQWv
9 3JbrCyt7BdxRE9GX1N7GiEct8UnIjPmpYd
10 3H7vVTk4ejUbQXw45I6g5qvPBSe9bsjDqh
}
```
Any line beginning with `#` is a comment. Comments may be placed at the ends
of lines as well.
Save the file, copy it onto a USB stick and transfer it to your online computer.
#### <a id="a_ia">Import addresses (online computer)</a>
To fund your wallet, you must import the addresses you’ve generated into your
tracking wallet.
Start the coin daemon with the required options (see the [Install-Bitcoind][08]
wiki page for more details on invoking the daemon for your coin and platform).
Upon startup, older daemons used to automatically generate a new default
`wallet.dat`, which MMGen Wallet used as its tracking wallet. With newer
daemons (e.g. Core 0.21.0 and above), the tracking wallet will be a directory
named `mmgen-tracking-wallet`, located by default under the `wallets`
subdirectory in your daemon’s datadir.
daemons (e.g. Core 0.21.0 and above), the tracking wallet is generated when
first invoking `mmgen-addrimport` and will be a directory named
`mmgen-tracking-wallet` located by default under the `wallets` subdirectory
in your coin daemon’s datadir.
Import the ten addresses into your new tracking wallet with the command:
Create your tracking wallet and import the ten addresses generated above into
it as follows:
```text
$ mmgen-addrimport --batch my.addrs
$ mmgen-addrimport my.addrs
```
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 addresses with empty balances
to be displayed too).
These addresses are now tracked: any BTC transferred to them will show up in
your listing of address balances, and balances will be updated automatically
as your node syncs with the blockchain. Balances can be viewed using
`mmgen-tool listaddresses`:
```text
$ mmgen-tool listaddresses showempty=1
MMGenID ADDRESS COMMENT BALANCE
$ mmgen-tool listaddresses
MMGenID Address Comment Balance
89ABCDEF:S:1 36bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE 0
89ABCDEF:S:2 3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc 0
89ABCDEF:S:3 3HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N 0
89ABCDEF:S:4 34Tu3z1tiexXDonNsFIkvzqutE5E3pTK8s 0
89ABCDEF:S:5 3PeI55vtp2bX2uKDkAAR2c6ekHNYe4Hcq7 0
...
TOTAL: 0 BTC
```
Invoke `mmgen-tool listaddresses interactive=1` and add some comments to your
newly-imported addresses using the ‘l’ key. Depending on your comments, your
output will now look something like this:
```text
MMGenID Address Comment Balance
89ABCDEF:S:1 36bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE Donations 0
89ABCDEF:S:2 3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc Storage 1 0
89ABCDEF:S:3 3HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N Storage 2 0
@ -330,10 +308,11 @@ TOTAL: 0 BTC
```
*While not covered in this introduction, note that it’s also possible to [import
external coin addresses into your tracking wallet][01]. This allows MMGen
non-MMGen coin addresses into your tracking wallet][01]. This allows MMGen
Wallet to track and spend funds from another wallet without having to transfer
the coins through the network. To do this, you must save the keys corresponding
to the given addresses in a separate file for use during transaction signing.*
the coins via the blockchain. To do this, you must save the private keys
corresponding to the given addresses in a separate file for use during
transaction signing.*
Note that each address has a unique ID (the ‘MMGen ID’) consisting of a Seed ID,
address type code letter, and index. Addresses of different types may be
@ -342,29 +321,27 @@ sub-seeds you needn’t worry about key reuse. For example, the addresses
`89ABCDEF:S:1` and `89ABCDEF:B:1` are cryptographically unrelated: no one but the
wallet’s owner can see that they were generated from the same seed.
Now that your addresses are being tracked, you may go ahead and send some BTC to
them over the Bitcoin network. If you send 0.1, 0.2, 0.3 and 0.4 BTC
respectively, your address listing will look like this after the transactions
have confirmed:
Now that your addresses are being tracked, you may send some BTC to them over
the Bitcoin network. If you send 0.1, 0.2, 0.3 and 0.4 BTC respectively, your
address listing will look like this after the transactions have confirmed:
```text
$ mmgen-tool listaddresses
MMGenID COMMENT BALANCE
89ABCDEF:S:1 Donations 0.1
89ABCDEF:S:2 Storage 1 0.2
89ABCDEF:S:3 Storage 2 0.3
89ABCDEF:S:4 Storage 3 0.4
$ mmgen-tool listaddresses showempty=0
MMGenID Address Comment Balance
89ABCDEF:S:1 36bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE Donations 0.1
89ABCDEF:S:2 3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc Storage 1 0.2
89ABCDEF:S:3 3HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N Storage 2 0.3
89ABCDEF:S:4 34Tu3z1tiexXDonNsFIkvzqutE5E3pTK8s Storage 3 0.4
TOTAL: 1 BTC
```
#### <a id="a_ct">Create a transaction (online computer)</a>
Now that you have some BTC under MMGen Wallets’s control, you’re ready to create
a transaction. Note that transactions are harmless until they’re signed and
broadcast to the network, so feel free to experiment and create transactions
Now that you have some coins under MMGen Wallet’s control, you’re ready to
create a transaction. Note that transactions are harmless until they’re signed
and broadcast to the network, so feel free to experiment and create transactions
with different combinations of inputs and outputs. Of course, if you’re using
testnet or regtest mode, then you risk nothing even when broadcasting
transactions.
testnet or regtest mode, you risk nothing even when broadcasting transactions.
To send 0.1 BTC to the a third-party address
`3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc`, for example, and send the change back to
@ -426,8 +403,9 @@ amount of 0.1 BTC, plus the transaction fee (for more on fees, see ‘Transactio
Fees’ under ‘Advanced Topics’ below). Output #2 is worth 0.2 BTC, which is
sufficient, so we’ll choose that and hit ENTER. When prompted for a
transaction fee, we’ll choose 0.0001 BTC (note that integer fees followed by
the letter ‘s’ for “satoshis per byte” are also permissible). After a couple
more prompts and confirmations, your transaction will be saved:
the letter ‘s’ for “satoshis per byte” are also accepted, and this is actually
the preferred way to indicate fees). After a couple more prompts and
confirmations, your transaction will be saved:
```text
Transaction written to file 'FEDCBA[0.1].rawtx'
@ -475,17 +453,17 @@ Once the transaction is broadcast to the network and confirmed, your address
listing should look something like this:
```text
$ mmgen-tool listaddresses minconf=1
MMGenID COMMENT BALANCE
89ABCDEF:S:1 Donations 0.1
89ABCDEF:S:3 Storage 2 0.3
89ABCDEF:S:4 Storage 3 0.4
89ABCDEF:S:5 0.0999
$ mmgen-tool listaddresses showempty=0
MMGenID Address Comment Balance
89ABCDEF:S:1 36bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE Donations 0.1
89ABCDEF:S:3 3HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N Storage 2 0.3
89ABCDEF:S:4 34Tu3z1tiexXDonNsFIkvzqutE5E3pTK8s Storage 3 0.4
89ABCDEF:S:5 3PeI55vtp2bX2uKDkAAR2c6ekHNYe4Hcq7 0.0999
TOTAL: 0.8999 BTC
```
Alternatively, you may use `mmgen-tool twview` or `mmgen-txcreate -i` for more
detailed and configurable output:
Alternatively, you may use view your addresses with `mmgen-tool twview`, which
lists only unspent outputs and provides some additional information:
```text
$ mmgen-tool twview

@ -1,8 +1,8 @@
## MMGen Wallet — Main Documentation Page
This wiki documents the [stable version][sv] of MMGen Wallet. A more up-to-date
version of this documentation describing features not yet merged into the stable
version can be found in the [`doc/wiki`][rd] subdirectory of the repository.
This wiki documents the [stable version][sv] of MMGen Wallet. More up-to-date
documentation describing features not yet available in the stable version can
be found in the [`doc/wiki`][rd] subdirectory of the MMGen Wallet repo.
Additional descriptions of new features, along with helpful examples, can also
be found in the [commit log][cn]. To search the commit log locally, `cd` to the

@ -11,7 +11,7 @@ For computers with no Internet connection, see **Note for offline machines** bel
#### Debian/Ubuntu:
```text
$ sudo apt-get install curl git gcc libtool make autoconf libgmp-dev libssl-dev libpcre2-dev libmpfr-dev libmpc-dev python3-dev python3-pip libsecp256k1-dev
$ sudo apt-get install curl git gcc libtool make autoconf e2fsprogs libgmp-dev libssl-dev libpcre2-dev libmpfr-dev libmpc-dev python3-dev python3-pip libsecp256k1-dev
```
#### Arch Linux: