modified: Getting-Started-with-MMGen.md
modified: Home.md modified: MMGen-Quick-Start-with-Regtest-Mode.md renamed: Recovering-Keys-Without-MMGen.md -> Recovering-Your-Keys-Without-the-MMGen-Software.md modified: [manpages]
parent
baaeb37cf2
commit
de35adc3f4
18 changed files with 153 additions and 137 deletions
|
|
@ -86,17 +86,16 @@ generation, wallet format conversion, address and key generation, and address
|
|||
import operations on an offline computer with no blockchain and no bitcoin
|
||||
balance.
|
||||
|
||||
If you want to practice creating, signing and sending transactions, however, as
|
||||
well as tracking balances, you'll need a fully synced blockchain and some actual
|
||||
coins to play with. To avoid risking real funds, it's *highly recommended* to
|
||||
practice transaction operations using **Bob and Alice regtest mode** until you
|
||||
feel confident you know what you're doing.
|
||||
If you want to practice creating, signing and sending transactions with real
|
||||
bitcoins, however, you'll need a fully synced blockchain and some actual coins
|
||||
to play with.
|
||||
|
||||
A convenient frontend for bitcoind's regression test mode, MMGen's Bob and Alice
|
||||
mode creates a private blockchain and a virtual network of two users who can
|
||||
send bitcoins to each other. All of MMGen's functionality is available in this
|
||||
mode, making it an ideal, risk-free way to acquaint yourself with the wallet's
|
||||
features. Refer to [MMGen Quick Start with Regtest Mode][06] to get started.
|
||||
Fortunately, there's an alternative: MMGen's **regtest mode** feature creates a
|
||||
virtual network of two users, Bob and Alice, who transact with each other on a
|
||||
private blockchain. All of MMGen's functionality is available in regtest mode,
|
||||
making it an ideal way to learn to use the MMGen wallet without risking real
|
||||
coins. You may wish to pause here and perform the steps in the tutorial [MMGen
|
||||
Quick Start with Regtest Mode][06] before continuing on.
|
||||
|
||||
### <a name='a_bo'>Basic Operations</a>
|
||||
|
||||
|
|
@ -143,54 +142,63 @@ printed out on paper.
|
|||
|
||||
Another highly recommended way to back up your wallet is to generate a mnemonic
|
||||
or seed file <a href='#a_ms'>as described below </a> and memorize it. If you
|
||||
have an average or better memory, you'll find memorizing mnemonics to be
|
||||
have an average or better memory, you'll find memorizing your mnemonic to be
|
||||
surprisingly easy.
|
||||
|
||||
#### <a name='a_ga'>Generate addresses (offline computer)</a>
|
||||
|
||||
Now generate ten addresses with your just-created wallet:
|
||||
Now generate ten Segwit addresses with your just-created wallet:
|
||||
|
||||
$ mmgen-addrgen 1-10
|
||||
$ mmgen-addrgen --type=segwit 1-10
|
||||
...
|
||||
Addresses written to file '89ABCDEF[1-10].addrs'
|
||||
Addresses written to file '89ABCDEF-S[1-10].addrs'
|
||||
|
||||
$ cat '89ABCDEF[1-10].addrs'
|
||||
89ABCDEF {
|
||||
1 16bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE
|
||||
2 1AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc
|
||||
3 1HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N
|
||||
4 14Tu3z1tiexXDonNsFIkvzqutE5E3pTK8s
|
||||
5 1PeI55vtp2bX2uKDkAAR2c6ekHNYe4Hcq7
|
||||
6 1FEqfEsSILwXPfMvVvVuUovzTaaST62Mnf
|
||||
7 1LTTzuhMqPLwQ4IGCwwugny6ZMtUQJSJ1
|
||||
8 1F9495H8EJLb54wirgZkVgI47SP7M2RQWv
|
||||
9 1JbrCyt7BdxRE9GX1N7GiEct8UnIjPmpYd
|
||||
10 1H7vVTk4ejUbQXw45I6g5qvPBSe9bsjDqh
|
||||
$ cat '89ABCDEF-S[1-10].addrs'
|
||||
89ABCDEF SEGWIT {
|
||||
1 36bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE
|
||||
2 3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc
|
||||
3 3HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N
|
||||
4 34Tu3z1tiexXDonNsFIkvzqutE5E3pTK8s
|
||||
5 3PeI55vtp2bX2uKDkAAR2c6ekHNYe4Hcq7
|
||||
6 3FEqfEsSILwXPfMvVvVuUovzTaaST62Mnf
|
||||
7 3LTTzuhMqPLwQ4IGCwwugny6ZMtUQJSJ1
|
||||
8 3F9495H8EJLb54wirgZkVgI47SP7M2RQWv
|
||||
9 3JbrCyt7BdxRE9GX1N7GiEct8UnIjPmpYd
|
||||
10 3H7vVTk4ejUbQXw45I6g5qvPBSe9bsjDqh
|
||||
}
|
||||
|
||||
Note that the address range ‘1-10’ specified on the command line is included in
|
||||
the resulting filename.
|
||||
|
||||
NOTE: MMGen supports Segwit addresses as of version 0.9.2 and compressed P2PKH
|
||||
addresses as of version 0.9.3. To generate Segwit or compressed addresses, add
|
||||
`--type=segwit` or `--type=compressed` to the command line. Segwit and
|
||||
compressed address files are distinguished from Legacy ones by an added ‘-S’ and
|
||||
‘-C’ in the filenames:
|
||||
MMGen currently supports three address types: legacy uncompressed, compressed
|
||||
P2PKH and Segwit, denoted by the respective code letters ‘L’, ‘C’ and ‘S’. For
|
||||
backwards compatibility, legacy addresses are generated by default. To generate
|
||||
compressed addresses, specify `--type=compressed` on the command line.
|
||||
|
||||
$ mmgen-addrgen --type segwit 1-10
|
||||
Legacy addresses are of interest only for existing pre-Segwit MMGen
|
||||
installations, so it's unlikely you'll wish to generate them. Compressed
|
||||
addresses are the preferable choice for Bitcoin Cash (BCH) wallets, since
|
||||
Bitcoin Cash doesn't support Segwit.
|
||||
|
||||
# legacy uncompressed
|
||||
$ mmgen-addrgen 1-10
|
||||
...
|
||||
$ cat '89ABCDEF-S[1-10].addrs'
|
||||
89ABCDEF SEGWIT {
|
||||
1 32GiSWo9zIQgkCmjAaLIrbPwXhKry2jHhj
|
||||
$ cat '89ABCDEF[1-10].addrs'
|
||||
89ABCDEF {
|
||||
1 12GiSWo9zIQgkCmjAaLIrbPwXhKry2jHhj
|
||||
...
|
||||
|
||||
$ mmgen-addrgen --type compressed 1-10
|
||||
# compressed P2PKH
|
||||
$ mmgen-addrgen --type=compressed 1-10
|
||||
...
|
||||
$ cat '89ABCDEF-C[1-10].addrs'
|
||||
89ABCDEF COMPRESSED {
|
||||
1 13jbRxWjswXtaDzLBJDboMcIe6nLohFb9M
|
||||
...
|
||||
|
||||
Note that for non-legacy address types the code letter is present in the
|
||||
filename.
|
||||
|
||||
To fund your MMGen wallet, first import the addresses into your tracking wallet
|
||||
and then spend some BTC into any of them. If you run out of addresses, generate
|
||||
more. To generate a hundred addresses, for example, you’d specify an address
|
||||
|
|
@ -204,7 +212,7 @@ provide the addresses with labels. We’ll use the labels ‘Donations’, ‘S
|
|||
|
||||
Make a copy of the address file
|
||||
|
||||
$ cp '89ABCDEF[1-10].addrs' my.addrs
|
||||
$ cp '89ABCDEF-S[1-10].addrs' my.addrs
|
||||
|
||||
and edit it using the text editor of your choice,
|
||||
|
||||
|
|
@ -213,17 +221,17 @@ and edit it using the text editor of your choice,
|
|||
adding labels to the addresses you’ve chosen to spend to:
|
||||
|
||||
# My first MMGen addresses
|
||||
89ABCDEF {
|
||||
1 16bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE Donations
|
||||
2 1AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc Storage 1
|
||||
3 1HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N Storage 2
|
||||
4 14Tu3z1tiexXDonNsFIkvzqutE5E3pTK8s Storage 3
|
||||
5 1PeI55vtp2bX2uKDkAAR2c6ekHNYe4Hcq7
|
||||
6 1FEqfEsSILwXPfMvVvVuUovzTaaST62Mnf
|
||||
7 1LTTzuhMqPLwQ4IGCwwugny6ZMtUQJSJ1
|
||||
8 1F9495H8EJLb54wirgZkVgI47SP7M2RQWv
|
||||
9 1JbrCyt7BdxRE9GX1N7GiEct8UnIjPmpYd
|
||||
10 1H7vVTk4ejUbQXw45I6g5qvPBSe9bsjDqh
|
||||
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
|
||||
|
|
@ -247,11 +255,11 @@ empty balances).
|
|||
|
||||
$ mmgen-tool listaddresses showempty=1
|
||||
MMGenID ADDRESS COMMENT BALANCE
|
||||
89ABCDEF:L:1 16bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE Donations 0
|
||||
89ABCDEF:L:2 1AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc Storage 1 0
|
||||
89ABCDEF:L:3 1HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N Storage 2 0
|
||||
89ABCDEF:L:4 14Tu3z1tiexXDonNsFIkvzqutE5E3pTK8s Storage 3 0
|
||||
89ABCDEF:L:5 1PeI55vtp2bX2uKDkAAR2c6ekHNYe4Hcq7 0
|
||||
89ABCDEF:S:1 36bNmyYISiptuvJG3X7MPwiiS4HYvD7ksE Donations 0
|
||||
89ABCDEF:S:2 3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc Storage 1 0
|
||||
89ABCDEF:S:3 3HgYCsfqYzIg7LVVfDTp7gYJocJEiDAy6N Storage 2 0
|
||||
89ABCDEF:S:4 34Tu3z1tiexXDonNsFIkvzqutE5E3pTK8s Storage 3 0
|
||||
89ABCDEF:S:5 3PeI55vtp2bX2uKDkAAR2c6ekHNYe4Hcq7 0
|
||||
...
|
||||
TOTAL: 0 BTC
|
||||
|
||||
|
|
@ -262,10 +270,9 @@ through the network. To use it, you must save the keys corresponding to the
|
|||
addresses where the funds are stored in a separate file to use during signing.*
|
||||
|
||||
Note that each address has a unique ID (the ‘MMGen ID’) consisting of its Seed
|
||||
ID, its address type (‘L’ for Legacy, ‘S’ for Segwit and ‘C’ for Compressed),
|
||||
and its number (index). Addresses of different types may be imported into the
|
||||
same tracking wallet; since they're generated from different sub-seeds you
|
||||
needn't worry about key reuse.
|
||||
ID, its address type code letter and its index. Addresses of different types
|
||||
may be imported into the same tracking wallet; since they're generated from
|
||||
different sub-seeds you needn't worry about key reuse.
|
||||
|
||||
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
|
||||
|
|
@ -274,10 +281,10 @@ have confirmed:
|
|||
|
||||
$ mmgen-tool listaddresses
|
||||
MMGenID COMMENT BALANCE
|
||||
89ABCDEF:L:1 Donations 0.1
|
||||
89ABCDEF:L:2 Storage 1 0.2
|
||||
89ABCDEF:L:3 Storage 2 0.3
|
||||
89ABCDEF:L:4 Storage 3 0.4
|
||||
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
|
||||
TOTAL: 1 BTC
|
||||
|
||||
#### <a name='a_ct'>Create a transaction (online computer)</a>
|
||||
|
|
@ -289,29 +296,28 @@ 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.
|
||||
|
||||
To send 0.1 BTC to the a third-party address 1AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc,
|
||||
for example, and send the change back to yourself at address 89ABCDEF:5, you’d
|
||||
To send 0.1 BTC to the a third-party address 3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc,
|
||||
for example, and send the change back to yourself at address 89ABCDEF:S:5, you’d
|
||||
issue the following command:
|
||||
|
||||
$ mmgen-txcreate 1AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc,0.1 89ABCDEF:5
|
||||
$ mmgen-txcreate 3AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc,0.1 89ABCDEF:S:5
|
||||
|
||||
Note that 'mmgen-txcreate' accepts either MMGen IDs or Bitcoin addresses as
|
||||
arguments.
|
||||
'mmgen-txcreate' accepts either MMGen IDs or Bitcoin addresses as arguments.
|
||||
|
||||
IMPORTANT NOTE: For the time being, Legacy addresses are the default, so
|
||||
address ‘89ABCDEF:5’ is equivalent to ‘89ABCDEF:L:5’. In the future, users may
|
||||
be given the option to make Segwit (for BTC) or Compressed (for BCH) addresses
|
||||
the default.
|
||||
NOTE: For backwards compatibility, the code letter may be omitted from the MMGen
|
||||
ID for legacy addresses. Thus address ‘89ABCDEF:L:5’, for example, may be
|
||||
expressed as ‘89ABCDEF:5’. For other address types the code letter is
|
||||
mandatory.
|
||||
|
||||
To send 0.1 BTC to each of your addresses 89ABCDEF:6 and 89ABCDEF:7 and return the
|
||||
change to 89ABCDEF:8, you’d do this:
|
||||
To send 0.1 BTC to each of addresses 89ABCDEF:S:6 and 89ABCDEF:S:7 and return
|
||||
the change to 89ABCDEF:S:8, you’d do this:
|
||||
|
||||
$ mmgen-txcreate 89ABCDEF:6,0.1 89ABCDEF:7,0.1 89ABCDEF:8
|
||||
$ mmgen-txcreate 89ABCDEF:S:6,0.1 89ABCDEF:S:7,0.1 89ABCDEF:S:8
|
||||
|
||||
As you can see, each send address is followed by a comma and the amount. The
|
||||
address with no amount is the change address. All addresses belonging to your
|
||||
seed in the above examples are already imported and tracked, so you’re OK. If
|
||||
you wanted to send to 89ABCDEF:11 instead, you'd have to import it first.
|
||||
you wanted to send to 89ABCDEF:S:11 instead, you'd have to import it first.
|
||||
|
||||
|
||||
Let’s go with the first of our two examples above.
|
||||
|
|
@ -324,10 +330,10 @@ will look something like this:
|
|||
|
||||
UNSPENT OUTPUTS (sort order: Age) Total BTC: 1
|
||||
Num TX id Vout Address Amt(BTC) Age(d)
|
||||
1) e9742b16... 5 1L3kxmi.. 89ABCDEF:L:1 Donations 0.1 1
|
||||
2) fa84d709... 6 1N4dSGj.. 89ABCDEF:L:2 Storage 1 0.2 1
|
||||
3) 8dde8ef5... 6 1M1fVDc.. 89ABCDEF:L:3 Storage 1 0.3 1
|
||||
4) c76874c7... 0 1E8MFoC.. 89ABCDEF:L:4 Storage 3 0.4 1
|
||||
1) e9742b16... 5 3L3kxmi.. 89ABCDEF:S:1 Donations 0.1 1
|
||||
2) fa84d709... 6 3N4dSGj.. 89ABCDEF:S:2 Storage 1 0.2 1
|
||||
3) 8dde8ef5... 6 3M1fVDc.. 89ABCDEF:S:3 Storage 1 0.3 1
|
||||
4) c76874c7... 0 3E8MFoC.. 89ABCDEF:S:4 Storage 3 0.4 1
|
||||
|
||||
Sort options: [t]xid, [a]mount, a[d]dress, [A]ge, [r]everse, [M]mgen addr
|
||||
Display options: show [D]ays, [g]roup, show [m]mgen addr, r[e]draw screen
|
||||
|
|
@ -365,9 +371,9 @@ Note that the signed transaction file has a new extension, '.sigtx'.
|
|||
#### <a name='a_st'>Send a transaction (online computer)</a>
|
||||
|
||||
Now you’re ready for the final step: broadcasting the transaction to the
|
||||
network. Copy the signed transaction file to your online computer, start
|
||||
bitcoind if necessary, make sure your blockchain is up-to-date and issue the
|
||||
command:
|
||||
network. Start bitcoind if it's not already running, and make sure your
|
||||
blockchain is fully synced. Then copy the signed transaction file to your
|
||||
online computer and issue the command:
|
||||
|
||||
$ mmgen-txsend FEDCBA[0.1].sigtx
|
||||
...
|
||||
|
|
@ -383,10 +389,10 @@ listing should look something like this:
|
|||
|
||||
$ mmgen-tool listaddresses minconf=1
|
||||
MMGenID COMMENT BALANCE
|
||||
89ABCDEF:L:1 Donations 0.1
|
||||
89ABCDEF:L:3 Storage 2 0.3
|
||||
89ABCDEF:L:4 Storage 3 0.4
|
||||
89ABCDEF:L:5 Storage 1 0.0999
|
||||
89ABCDEF:S:1 Donations 0.1
|
||||
89ABCDEF:S:3 Storage 2 0.3
|
||||
89ABCDEF:S:4 Storage 3 0.4
|
||||
89ABCDEF:S:5 Storage 1 0.0999
|
||||
TOTAL: 0.8999 BTC
|
||||
|
||||
Since you’ve sent 0.1 BTC to a third party, your balance has declined by 0.1 BTC
|
||||
|
|
@ -427,9 +433,9 @@ The mnemonic is a complete representation of your seed and may be used anywhere
|
|||
where you’d use an MMGen wallet. You can generate addresses with it just as you
|
||||
do with a wallet:
|
||||
|
||||
$ mmgen-addrgen 89ABCDEF.mmwords 1-10
|
||||
$ mmgen-addrgen --type=segwit 89ABCDEF.mmwords 1-10
|
||||
...
|
||||
Address data written to file '89ABCDEF[1-10].addrs'
|
||||
Address data written to file '89ABCDEF-S[1-10].addrs'
|
||||
|
||||
You can use it to sign transactions:
|
||||
|
||||
|
|
@ -592,10 +598,10 @@ the wrong hands.
|
|||
Your incognito wallet (whether hex or binary) can be used just like any other
|
||||
MMGen wallet, mnemonic or seed file to generate addresses and sign transactions:
|
||||
|
||||
$ mmgen-addrgen 89ABCDEF-87654321-CA86420E[256,5].mmincox 101-110
|
||||
$ mmgen-addrgen --type=segwit 89ABCDEF-87654321-CA86420E[256,5].mmincox 101-110
|
||||
...
|
||||
Generated 10 addresses
|
||||
Addresses written to file '89ABCDEF[101-110].addrs'
|
||||
Addresses written to file '89ABCDEF-S[101-110].addrs'
|
||||
|
||||
$ mmgen-txsign FABCDE[0.3].rawtx 89ABCDEF-87654321-CA86420E[256,5].mmincox
|
||||
...
|
||||
|
|
@ -676,9 +682,9 @@ well as addresses, thus functioning as a hot wallet for a range of addresses.
|
|||
Assuming your hot address range begins at 1001, you could start by creating a
|
||||
key-address file for a hundred hot addresses like this:
|
||||
|
||||
$ mmgen-keygen 1001-1100
|
||||
$ mmgen-keygen --type=segwit 1001-1100
|
||||
...
|
||||
Secret keys written to file '89ABCDEF[1001-1100].akeys.mmenc'
|
||||
Secret keys written to file '89ABCDEF-S[1001-1100].akeys.mmenc'
|
||||
|
||||
`mmgen-keygen` prompts you for a password to encrypt the key-address file with.
|
||||
This is a wise precaution, as it provides at least some security for keys that
|
||||
|
|
@ -687,25 +693,25 @@ will be stored on an online machine.
|
|||
Now copy the key-address file to your online machine and import the addresses
|
||||
into your tracking wallet:
|
||||
|
||||
$ mmgen-addrimport --batch --keyaddr-file '89ABCDEF[1001-1100].akeys.mmenc'
|
||||
$ mmgen-addrimport --batch --keyaddr-file '89ABCDEF-S[1001-1100].akeys.mmenc'
|
||||
|
||||
After funding your hot wallet by spending into some addresses in this range you
|
||||
can do quickie transactions with these funds using the `mmgen-txdo` command:
|
||||
|
||||
$ mmgen-txdo -M '89ABCDEF[1001-1100].akeys.mmenc' 1AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc,0.1 89ABCDEF:1010
|
||||
$ mmgen-txdo -M '89ABCDEF-S[1001-1100].akeys.mmenc' 1AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc,0.1 89ABCDEF:S:1010
|
||||
...
|
||||
Transaction sent: dcea1357....
|
||||
|
||||
The `--mmgen-keys-from-file` or `-M` option is required when using a key-address
|
||||
file in place of a default wallet. Note that your change address 89ABCDEF:1010
|
||||
is within the range covered by the key-address file, so your change funds will
|
||||
remain “hot spendable”.
|
||||
file in place of a default wallet. Note that your change address
|
||||
89ABCDEF:S:1010 is within the range covered by the key-address file, so your
|
||||
change funds will remain “hot spendable”.
|
||||
|
||||
Using `mmgen-txdo` with a default online hot wallet is even simpler. For a hot
|
||||
wallet with Seed ID 0FDE89AB, for instance, creating and sending a transaction
|
||||
looks like this:
|
||||
would look like this:
|
||||
|
||||
$ mmgen-txdo 1AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc,0.1 0FDE89AB:10
|
||||
$ mmgen-txdo 1AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc,0.1 0FDE89AB:S:10
|
||||
|
||||
|
||||
#### <a name='a_fee'>Transaction Fees</a>
|
||||
|
|
@ -757,7 +763,7 @@ incrementally increasing fees will created online and then signed offline.
|
|||
Create, sign and send a BIP 125 replaceable transaction with a fee of 50
|
||||
satoshis per byte:
|
||||
|
||||
$ mmgen-txdo --rbf --tx-fee 50s 1AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc,0.1 0FDE89AB:5
|
||||
$ mmgen-txdo --rbf --tx-fee 50s 1AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc,0.1 0FDE89AB:S:5
|
||||
...
|
||||
Signed transaction written to file 'FEDCBB[0.1,50].sigtx'
|
||||
...
|
||||
|
|
@ -799,7 +805,7 @@ you'll need to supply it on the command line as a parameter to the `-M` option.
|
|||
To achieve the same result as in the above example using a cold wallet, just
|
||||
create the initial transaction with `mmgen-txcreate` instead of `mmgen-txdo`:
|
||||
|
||||
$ mmgen-txcreate --rbf --tx-fee 50s 1AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc,0.1 89ABCDEF:5
|
||||
$ mmgen-txcreate --rbf --tx-fee 50s 1AmkUxrfy5dMrfmeYwTxLxfIswUCcpeysc,0.1 89ABCDEF:S:5
|
||||
...
|
||||
Transaction written to file 'FEDCBC[0.1,50].rawtx'
|
||||
|
||||
|
|
@ -834,7 +840,7 @@ them in turn until you get a confirmation:
|
|||
|
||||
[01]: https://github.com/mmgen/mmgen/wiki/Tracking-and-spending-ordinary-Bitcoin-addresses
|
||||
[02]: https://tpfaucet.appspot.com
|
||||
[03]: Recovering-Keys-Without-MMGen
|
||||
[03]: Recovering-Your-Keys-Without-the-MMGen-Software
|
||||
[04]: https://bitcoin.org/en/developer-examples#testnet
|
||||
[05]: https://bitcoin.org/en/developer-examples#regtest-mode
|
||||
[06]: https://github.com/mmgen/mmgen/wiki/MMGen-Quick-Start-with-Regtest-Mode
|
||||
|
|
|
|||
2
Home.md
2
Home.md
|
|
@ -13,4 +13,4 @@
|
|||
|
||||
> #### [MMGen command help](MMGen-command-help)
|
||||
|
||||
> #### [Recovering your keys without the MMGen software](Recovering-Keys-Without-MMGen)
|
||||
> #### [Recovering your keys without the MMGen software](Recovering-Your-Keys-Without-the-MMGen-Software)
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
MMGen's regtest mode, also known as Bob and Alice mode, provides a convenient
|
||||
front-end for bitcoind's regression test mode. It creates a private blockchain
|
||||
and a virtual network of two users who can perform all MMGen operations,
|
||||
including sending bitcoins to each other.
|
||||
MMGen's regtest mode, also known as Bob and Alice mode, uses the Bitcoin
|
||||
daemon's regression test feature to create a virtual network of two users who
|
||||
transact on a private blockchain.
|
||||
|
||||
To transact as Bob or Alice, just add the '--bob' or '--alice' option to any
|
||||
MMGen command. MMGen will start and stop the Bitcoin daemon automatically as
|
||||
required. All of MMGen's functionality is available in this mode, making it an
|
||||
ideal, risk-free way to acquaint yourself with the MMGen wallet's features and
|
||||
transacting on the Bitcoin blockchain in general.
|
||||
All of MMGen's functionality is available in regtest mode, making it an ideal
|
||||
way to learn to use the MMGen wallet without risking real coins.
|
||||
|
||||
To send a transaction or perform any other operation as Bob or Alice, just add
|
||||
the '--bob' or '--alice' option to the relevant MMGen command. MMGen will start
|
||||
and stop the Bitcoin daemon automatically as needed.
|
||||
|
||||
This tutorial provides a quick, hands-on introduction.
|
||||
|
||||
1. Create the blockchain and Bob and Alice's tracking wallets:
|
||||
1. Create the regtest blockchain and Bob and Alice's tracking wallets:
|
||||
|
||||
$ mmgen-regtest setup
|
||||
|
||||
|
|
@ -26,7 +26,7 @@ This tutorial provides a quick, hands-on introduction.
|
|||
$ mmgen-addrgen --bob --type=compressed 1-3
|
||||
...
|
||||
Addresses written to file '1163DDF1-C[1-3].addrs'
|
||||
# 1163DDF1 is Bob's Seed ID; since it's generated randomly, your Bob's will be different
|
||||
# 1163DDF1 is Bob's Seed ID; since it's generated randomly, yours will be different
|
||||
|
||||
4. Import the addresses into Bob's tracking wallet:
|
||||
|
||||
|
|
@ -34,8 +34,8 @@ This tutorial provides a quick, hands-on introduction.
|
|||
...
|
||||
Type uppercase 'YES' to confirm: YES
|
||||
|
||||
5. List the addresses in Bob's tracking wallet. You should see the addresses
|
||||
you just imported:
|
||||
5. List the addresses in Bob's tracking wallet. You'll see the addresses you
|
||||
just imported:
|
||||
|
||||
$ mmgen-tool --bob listaddresses showempty=1
|
||||
MMGenID ADDRESS COMMENT BALANCE
|
||||
|
|
@ -43,17 +43,21 @@ you just imported:
|
|||
1163DDF1:C:2 n1oszhfAyRrHi7qJupyzaWXTcpMQGsGJEf - 0
|
||||
1163DDF1:C:3 mhYYHM7renPpNi8SUj5yeEZ54eAUJ5HyQ1 - 0
|
||||
|
||||
Note that regtest mode uses testnet-format addresses, which differ from the
|
||||
familiar mainnet addresses beginning with '1'.
|
||||
|
||||
6. Fund one of the addresses (let's choose the first one) with some BTC:
|
||||
|
||||
$ mmgen-regtest send mw42oJ94yRA6ZUNSzmMpjZDR74JNyvqzzZ 500
|
||||
|
||||
7. Make sure the funds arrived:
|
||||
7. Make sure the funds reached their destination:
|
||||
|
||||
$ mmgen-tool --bob listaddresses showempty=1
|
||||
MMGenID ADDRESS COMMENT BALANCE
|
||||
1163DDF1:C:1 mw42oJ94yRA6ZUNSzmMpjZDR74JNyvqzzZ - 500
|
||||
1163DDF1:C:2 n1oszhfAyRrHi7qJupyzaWXTcpMQGsGJEf - 0
|
||||
1163DDF1:C:3 mhYYHM7renPpNi8SUj5yeEZ54eAUJ5HyQ1 - 0
|
||||
TOTAL: 500 BTC
|
||||
|
||||
8. You can view Bob's total balance this way too:
|
||||
|
||||
|
|
@ -72,8 +76,8 @@ you just imported:
|
|||
Addresses written to file '9304C211-S[1-3].addrs'
|
||||
|
||||
11. Repeat steps 4-7 for Alice by substituting '--bob' for '--alice'. Don't
|
||||
forget to adjust the address filename and send address as well. The result of
|
||||
step 7 should look something like this:
|
||||
forget to change the address filename and send address to suit. The result of
|
||||
step 7 will look something like this:
|
||||
|
||||
MMGenID ADDRESS COMMENT BALANCE
|
||||
9304C211:S:1 2N3HhxasbRvrJyHg72JNVCCPi9EUGrEbFnu - 500
|
||||
|
|
@ -82,14 +86,20 @@ step 7 should look something like this:
|
|||
TOTAL: 500 BTC
|
||||
|
||||
12. Split Alice's funds, sending 200 BTC to address S:2 and the change to S:3.
|
||||
Specify a fee of 20 satoshis/byte and '--quiet' for less noisy output:
|
||||
Specify a fee of 20 satoshis/byte and make output quieter:
|
||||
|
||||
$ mmgen-txdo --alice --tx-fee=20s --quiet 9304C211:S:2,300 9304C211:S:3
|
||||
...
|
||||
Type uppercase 'YES' to confirm: YES
|
||||
Transaction sent: 78ca853816b55527b42ca8784c887a5f482c752522f914d2f17d6afcd8a3b076
|
||||
|
||||
13. Check the mempool for the transaction:
|
||||
Note that for simplicity's sake this tutorial uses the `mmgen-txdo` command
|
||||
to create, sign and send transactions in one operation. In normal, cold
|
||||
wallet mode, your seed will be held on a separate offline computer which
|
||||
you'll use to sign transactions using the `mmgen-txsign` command. This is
|
||||
explained in detail in the Getting Started guide.
|
||||
|
||||
13. View the transaction in the mempool:
|
||||
|
||||
$ mmgen-regtest show_mempool
|
||||
['78ca853816b55527b42ca8784c887a5f482c752522f914d2f17d6afcd8a3b076']
|
||||
|
|
@ -112,7 +122,7 @@ Specify a fee of 20 satoshis/byte and '--quiet' for less noisy output:
|
|||
9304C211:S:3 2NF4y3y4CEjQCcssjX2BDLHT88XHn8z53JS - 199.999967
|
||||
TOTAL: 499.999967 BTC
|
||||
|
||||
17. Have Alice send 10 BTC to Bob's C:2 address, with the change back to her S:1
|
||||
17. Have Alice send 10 BTC to Bob's C:2 address and the change back to her S:1
|
||||
address. This time Alice specifies an absolute fee in BTC.
|
||||
|
||||
$ mmgen-txdo --alice --tx-fee=0.0001 --quiet 9304C211:S:1 n1oszhfAyRrHi7qJupyzaWXTcpMQGsGJEf,10
|
||||
|
|
@ -120,7 +130,7 @@ address. This time Alice specifies an absolute fee in BTC.
|
|||
Enter a range or space-separated list of outputs to spend: 1
|
||||
...
|
||||
|
||||
Note that Alice is reusing address S:1 here, and address reuse is generally a
|
||||
Note that Alice is reusing address S:1 here, and address reuse is generally a
|
||||
bad idea. You'd be better off generating and importing some new addresses for
|
||||
Alice by repeating steps 3 and 4 with a different address range. I'll leave
|
||||
that to you as an exercise.
|
||||
|
|
|
|||
|
|
@ -66,4 +66,4 @@
|
|||
SeedFile .mmseed mmseed,seed,s
|
||||
Wallet .mmdat wallet,w
|
||||
|
||||
MMGEN v0.9.3 August 2017 MMGEN-ADDRGEN(1)
|
||||
MMGEN v0.9.3 October 2017 MMGEN-ADDRGEN(1)
|
||||
|
|
|
|||
|
|
@ -18,4 +18,4 @@
|
|||
|
||||
The --batch and --rescan options cannot be used together.
|
||||
|
||||
MMGEN v0.9.3 August 2017 MMGEN-ADDRIMPORT(1)
|
||||
MMGEN v0.9.3 October 2017 MMGEN-ADDRIMPORT(1)
|
||||
|
|
|
|||
|
|
@ -70,4 +70,4 @@
|
|||
SeedFile .mmseed mmseed,seed,s
|
||||
Wallet .mmdat wallet,w
|
||||
|
||||
MMGEN v0.9.3 August 2017 MMGEN-KEYGEN(1)
|
||||
MMGEN v0.9.3 October 2017 MMGEN-KEYGEN(1)
|
||||
|
|
|
|||
|
|
@ -43,4 +43,4 @@
|
|||
SeedFile .mmseed mmseed,seed,s
|
||||
Wallet .mmdat wallet,w
|
||||
|
||||
MMGEN v0.9.3 August 2017 MMGEN-PASSCHG(1)
|
||||
MMGEN v0.9.3 October 2017 MMGEN-PASSCHG(1)
|
||||
|
|
|
|||
|
|
@ -78,4 +78,4 @@
|
|||
SeedFile .mmseed mmseed,seed,s
|
||||
Wallet .mmdat wallet,w
|
||||
|
||||
MMGEN v0.9.3 August 2017 MMGEN-PASSGEN(1)
|
||||
MMGEN v0.9.3 October 2017 MMGEN-PASSGEN(1)
|
||||
|
|
|
|||
|
|
@ -91,4 +91,4 @@
|
|||
|
||||
Type 'mmgen-tool help <command> for help on a particular command
|
||||
|
||||
MMGEN v0.9.3 August 2017 MMGEN-TOOL(1)
|
||||
MMGEN v0.9.3 October 2017 MMGEN-TOOL(1)
|
||||
|
|
|
|||
|
|
@ -77,4 +77,4 @@
|
|||
SeedFile .mmseed mmseed,seed,s
|
||||
Wallet .mmdat wallet,w
|
||||
|
||||
MMGEN v0.9.3 August 2017 MMGEN-TXBUMP(1)
|
||||
MMGEN v0.9.3 October 2017 MMGEN-TXBUMP(1)
|
||||
|
|
|
|||
|
|
@ -44,4 +44,4 @@
|
|||
a plain decimal number, or as satoshis per byte, using an integer followed by
|
||||
the letter 's'.
|
||||
|
||||
MMGEN v0.9.3 August 2017 MMGEN-TXCREATE(1)
|
||||
MMGEN v0.9.3 October 2017 MMGEN-TXCREATE(1)
|
||||
|
|
|
|||
|
|
@ -102,4 +102,4 @@
|
|||
SeedFile .mmseed mmseed,seed,s
|
||||
Wallet .mmdat wallet,w
|
||||
|
||||
MMGEN v0.9.3 August 2017 MMGEN-TXDO(1)
|
||||
MMGEN v0.9.3 October 2017 MMGEN-TXDO(1)
|
||||
|
|
|
|||
|
|
@ -8,4 +8,4 @@
|
|||
-s, --status Get status of a sent transaction
|
||||
-y, --yes Answer 'yes' to prompts, suppress non-essential output
|
||||
|
||||
MMGEN v0.9.3 August 2017 MMGEN-TXSEND(1)
|
||||
MMGEN v0.9.3 October 2017 MMGEN-TXSEND(1)
|
||||
|
|
|
|||
|
|
@ -68,4 +68,4 @@
|
|||
SeedFile .mmseed mmseed,seed,s
|
||||
Wallet .mmdat wallet,w
|
||||
|
||||
MMGEN v0.9.3 August 2017 MMGEN-TXSIGN(1)
|
||||
MMGEN v0.9.3 October 2017 MMGEN-TXSIGN(1)
|
||||
|
|
|
|||
|
|
@ -42,4 +42,4 @@
|
|||
SeedFile .mmseed mmseed,seed,s
|
||||
Wallet .mmdat wallet,w
|
||||
|
||||
MMGEN v0.9.3 August 2017 MMGEN-WALLETCHK(1)
|
||||
MMGEN v0.9.3 October 2017 MMGEN-WALLETCHK(1)
|
||||
|
|
|
|||
|
|
@ -52,4 +52,4 @@
|
|||
SeedFile .mmseed mmseed,seed,s
|
||||
Wallet .mmdat wallet,w
|
||||
|
||||
MMGEN v0.9.3 August 2017 MMGEN-WALLETCONV(1)
|
||||
MMGEN v0.9.3 October 2017 MMGEN-WALLETCONV(1)
|
||||
|
|
|
|||
|
|
@ -45,4 +45,4 @@
|
|||
SeedFile .mmseed mmseed,seed,s
|
||||
Wallet .mmdat wallet,w
|
||||
|
||||
MMGEN v0.9.3 August 2017 MMGEN-WALLETGEN(1)
|
||||
MMGEN v0.9.3 October 2017 MMGEN-WALLETGEN(1)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue