modified: Install-MMGen-on-Debian-or-Ubuntu-Linux.md
modified: MMGen-Quick-Start-with-Regtest-Mode.md modified: XOR-Seed-Splitting:-Theory-and-Practice.md
parent
df02e33891
commit
f99ad5a533
3 changed files with 16 additions and 15 deletions
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
Install required Debian/Ubuntu packages:
|
||||
|
||||
$ sudo apt-get install autoconf git libgmp-dev libssl-dev libpcre3-dev libtool wipe
|
||||
$ sudo apt-get install autoconf git libgmp-dev libssl-dev libpcre3-dev libtool wipe curl
|
||||
$ sudo apt-get install python3-dev python3-ecdsa python3-pexpect python3-setuptools python3-cryptography python3-nacl python3-pip python3-gmpy2 python3-sha3 python3-requests
|
||||
|
||||
Using the [pip3][P] installer, install some required Python packages:
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ step 7 will look something like this:
|
|||
|
||||
13. View the transaction in the mempool:
|
||||
|
||||
$ mmgen-regtest show_mempool
|
||||
$ mmgen-regtest mempool
|
||||
['78ca853816b55527b42ca8784c887a5f482c752522f914d2f17d6afcd8a3b076']
|
||||
|
||||
14. Mine a block:
|
||||
|
|
@ -118,7 +118,7 @@ step 7 will look something like this:
|
|||
|
||||
15. Check the mempool again:
|
||||
|
||||
$ mmgen-regtest show_mempool
|
||||
$ mmgen-regtest mempool
|
||||
[]
|
||||
|
||||
16. List Alice’s addresses. Note that Alice has lost a bit to transaction fees:
|
||||
|
|
|
|||
|
|
@ -146,8 +146,8 @@ implementation in real production code.*
|
|||
|
||||
The above example illustrates what happens when we violate the golden rule of
|
||||
the wallet developer: *never derive a secret from another secret that someone
|
||||
besides the wallet owner could potentially gain access to.* This goes for the
|
||||
private keys of the addresses in a wallet, which could be compromised in a
|
||||
besides the wallet’s owner could potentially gain access to.* This goes for
|
||||
the private keys of the addresses in a wallet, which could be compromised in a
|
||||
security breach. And it certainly goes for seed shares, which are intended for
|
||||
distribution to others from the outset.
|
||||
|
||||
|
|
@ -239,12 +239,12 @@ unique, and differ from their non-master-share counterparts.
|
|||
|
||||
The MMGen wallet implements the seed splitting and joining functionality
|
||||
described above via the commands [`mmgen-seedsplit`][SS] and
|
||||
[`mmgen-seedjoin`][SJ]. Many usage examples can be found on the
|
||||
`mmgen-seedsplit` help screen.
|
||||
[`mmgen-seedjoin`][SJ]. Usage examples can be found on the `mmgen-seedsplit`
|
||||
help screen.
|
||||
|
||||
Shares can be made from and exported to all supported MMGen wallet formats.
|
||||
This means you can split a BIP39 seed phrase, for example, and export a share
|
||||
back to BIP39, all in one command:
|
||||
This means you can split a BIP39 seed phrase, for example, and output the share
|
||||
back to BIP39 in one easy command:
|
||||
|
||||
# Create share 1 of a 2-way split of the provided BIP39 seed phrase:
|
||||
$ mmgen-seedsplit -o bip39 sample.bip39 1:2
|
||||
|
|
@ -295,15 +295,16 @@ BIP39 format, for example, there are command-line tools available to do this.
|
|||
Then a single line of Python code is all that’s required to finish the job:
|
||||
|
||||
$ python3
|
||||
>>> seed_hex = hex(int(share1_hex,16) ^ int(share2_hex,16)) # 2-way split
|
||||
>>> seed_hex = hex(int(share1_hex,16) ^ int(share2_hex,16)) # rejoin a 2-way split
|
||||
|
||||
(Note that the XOR operator in Python is `^`.)
|
||||
|
||||
Rejoining master-share splits on your own is far less trivial, unfortunately.
|
||||
This is because converting the master share into the temporary share used to
|
||||
make the split involves an additional step, as you’ll recall from the
|
||||
theoretical discussion above. In addition, MMGen implements it somewhat
|
||||
differently than in the provided example.
|
||||
Unfortunately, rejoining master-share splits is considerably harder to do at
|
||||
the Python command prompt. This is because converting the master share into the
|
||||
temporary share used to make the split involves an additional step, as you’ll
|
||||
recall from the above discussion. In addition, this step is implemented by
|
||||
MMGen somewhat differently than as described above. For advanced users, an
|
||||
example will be provided in a future version of this document.
|
||||
|
||||
[⊕]: https://mmgen.github.io/images/ss/o_xor.svg "⊕"
|
||||
["a: 1 0 0 1 0 1 0 0"]: https://mmgen.github.io/images/ss/byte_a.svg "a: 1 0 0 1 0 1 0 0"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue