mmgen-wallet/test
MMGen 7538a9460e
Subwallets, Part 1: basic framework and subwallet generation
Beginning with this commit, every MMGen wallet now has a two sets of associated
subwallets with “long“ and “short” seeds.

MMGen wallets and subwallets are functionally equivalent and externally
indistinguishable.  This has benefits, especially for real-world security, as
well as drawbacks.  For more information, see the `mmgen-subwalletgen` help
screen: https://github.com/mmgen/mmgen/wiki/subwalletgen-[MMGen-command-help]

This patch provides subwallet generation functionality and subseed display
utilities.  Support for transaction signing and address generation using a
subwallet's parent wallet will be added in a forthcoming patch.

Examples:

    # Create a bogus wallet in mnemonic format for testing purposes:
    $ echo $(yes bee | head -n24) > bogus.mmwords

    # List the wallet's first five subseed pairs:
    $ mmgen-tool list_subseeds 1-5 wallet=bogus.mmwords
    Parent Seed: DF449DA4 (256 bits)

     Long Subseeds     Short Subseeds
     -------------     --------------
      1L: FC9A8735       1S: 930E1AD5
      2L: 62B02F54       2S: DF14AB49
      3L: 9E884E99       3S: AD3ABD98
      4L: DB595AE1       4S: 3E885EC4
      5L: 36D5A0D1       5S: 30D66FF5

    # Generate the 5th short (128-bit) subwallet from the wallet:
    $ mmgen-subwalletgen bogus.mmwords 5S

    # Same as above, but output subwallet to mnemonic (seed phrase) format:
    $ mmgen-subwalletgen -o mn bogus.mmwords 5S
    ...
    Mnemonic data written to file '30D66FF5[128].mmwords'

    # View the subwallet's seed phrase:
    $ cat 30D66FF5[128].mmwords
    object capture field heart page observe road bond mother loser really army

    # Generate 10 addresses from the subwallet seed phrase:
    $ mmgen-addrgen 30D66FF5[128].mmwords 1-10
    ...
    Addresses written to file '30D66FF5[1-10].addrs'
2019-05-12 15:29:38 +03:00
..
ref autosign: print summary of non-MMGen output addresses and amounts 2019-04-24 17:39:22 +03:00
test_py_d Subwallets, Part 1: basic framework and subwallet generation 2019-05-12 15:29:38 +03:00
__init__.py test/test.py: refactor, remove interactive mode 2017-08-03 08:56:40 +03:00
common.py silent -> quiet file opens + minor fixes 2019-03-20 20:10:46 +03:00
gentest.py [opts]: separate code from text in opts_data 2019-03-26 15:59:37 +03:00
hashfunc.py Remove dependencies on pysha3 and ethereum modules 2019-03-23 17:21:34 +03:00
objtest.py Subwallets, Part 1: basic framework and subwallet generation 2019-05-12 15:29:38 +03:00
pexpect.py minor fixes 2019-03-26 16:02:10 +03:00
scrambletest.py [opts]: separate code from text in opts_data 2019-03-26 15:59:37 +03:00
test-release.sh relocate test-release.sh script to test directory 2019-04-19 17:37:32 +03:00
test.py [opts]: separate code from text in opts_data 2019-03-26 15:59:37 +03:00
tooltest.py [opts]: separate code from text in opts_data 2019-03-26 15:59:37 +03:00
tooltest2.py Subwallets, Part 1: basic framework and subwallet generation 2019-05-12 15:29:38 +03:00
unit_tests.py Subwallets, Part 1: basic framework and subwallet generation 2019-05-12 15:29:38 +03:00