Skip to content

Commit 349cbc8

Browse files
committed
Update setup.py docs for pypi
1 parent c85232c commit 349cbc8

File tree

4 files changed

+79
-45
lines changed

4 files changed

+79
-45
lines changed

README.org

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ words is difficult, error-prone and time consuming.
3333

3434
The [[https://github.com/pjkundert/python-slip39.git][python-slip39]] project exists to assist in the safe creation and documentation of [[https://wolovim.medium.com/ethereum-201-hd-wallets-11d0c93c87][Ethereum HD
3535
Wallet]] seeds and derived accounts, with various SLIP-39 sharing parameters. It generates the new
36-
random wallet seed, and generates standard Ethereum account(s) (at [[https://medium.com/myetherwallet/hd-wallets-and-derivation-paths-explained-865a643c7bf2][derivation path]]
37-
=m/44'/60'/0'/0/0= by default) and Bitcoin accounts (at derivation path =m/44'/0'/0'/0/0 by
38-
default), with wallet address and QR code, produces the required SLIP-39 phrases, and outputs a
39-
single PDF containing all the required printable cards to document the seed (and the specified
40-
derived accounts).
36+
random wallet seed, and generates the expected standard Ethereum account(s) (at [[https://medium.com/myetherwallet/hd-wallets-and-derivation-paths-explained-865a643c7bf2][derivation path]]
37+
=m/44'/60'/0'/0/0= by default) and Bitcoin accounts (at derivation path =m/84'/0'/0'/0/0= by
38+
default), with wallet address and QR code (compatible with Trezor derivations). It produces the
39+
required SLIP-39 phrases, and outputs a single PDF containing all the required printable cards to
40+
document the seed (and the specified derived accounts).
4141

4242
On an secure (ideally air-gapped) computer, new seeds can safely be generated and the PDF saved to a
4343
USB drive for printing (or directly printed without the file being saved to disk.). Presently,
@@ -136,7 +136,7 @@ by entering the mnemonics right on the device.
136136
The resultant PDF will be output into the designated file.
137137

138138
This PDF file can be printed on 3x5 index cards, or on regular paper or card stock and the cards
139-
can be cut out (=--card credit= , =business=, and =half= or =full= (page) are also available, as
139+
can be cut out (=--card credit= , =business=, and =half= (page) are also available, as
140140
well as custom ="(<h>,<w>),<margin>"=).
141141

142142
To get the data printed on the terminal as in this example (so you could write it down on cards

README.pdf

-88 Bytes
Binary file not shown.

setup.py

Lines changed: 72 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -36,62 +36,96 @@
3636

3737
long_description_content_type = 'text/markdown'
3838
long_description = """\
39-
Creating Ethereum accounts is complex and fraught with potential for loss of funds.
39+
Creating Ethereum, Bitcoin and other accounts is complex and fraught with potential for loss of funds.
4040
41-
A BIP-39 seed recovery phrase helps, but a *single* lapse in security dooms the account. If someone
42-
finds your recovery phrase, the account is /gone/.
41+
A BIP-39 seed recovery phrase helps, but a *single* lapse in security dooms the account (and all
42+
derived accounts, in fact). If someone finds your recovery phrase (or you lose it), the accounts
43+
derived from that seed are /gone/.
4344
44-
The SLIP-39 standard allows you to split the seed between 1 or more groups of multiple recovery
45-
phrases. This is better, but creating such accounts is difficult; presently, only the Trezor
46-
supports these, and they can only be created "manually". Writing down 5 or more sets of 20 words is
47-
difficult and time consuming.
45+
The SLIP-39 standard allows you to split the seed between 1, 2, or more groups of several mnemonic
46+
recovery phrases. This is better, but creating such accounts is difficult; presently, only the
47+
Trezor supports these, and they can only be created "manually". Writing down 5 or more sets of 20
48+
words is difficult, error-prone and time consuming.
4849
4950
The python-slip39 project exists to assist in the safe creation and documentation of Ethereum HD
50-
Wallet accounts, with various SLIP-39 sharing parameters. It generates the new wallet seed,
51-
generates standard Ethereum account(s) (at derivation path =m/44'/60'/0'/0/0= by default) with
52-
Ethereum wallet address and QR code, produces the required SLIP-39 phrases, and outputs a single PDF
53-
containing all the required printable cards to document the account.
54-
55-
On an secure (ideally air-gapped) computer, new accounts can safely be generated and the PDF saved
56-
to a USB drive for printing (or directly printed without the file being saved to disk.)
57-
58-
$ python3 -m slip39 -v
59-
2021-12-29 13:21:57 slip39 ETH m/44'/60'/0'/0/0 : 0x8686D2cb685A934233eB8a4907d17e45257eBaD0
51+
Wallet seeds and derived accounts, with various SLIP-39 sharing parameters. It generates the new
52+
random wallet seed, and generates the expected standard Ethereum account(s) (at derivation path
53+
=m/44'/60'/0'/0/0= by default) and Bitcoin accounts (at Bech32 derivation path =m/84'/0'/0'/0/0= by
54+
default), with wallet address and QR codee (compatible with Trezor derivations). It produces the
55+
required SLIP-39 phrases, and outputs a single PDF containing all the required printable cards to
56+
document the seed (and the specified derived accounts).
57+
58+
On an secure (ideally air-gapped) computer, new seeds can safely be generated and the PDF saved to a
59+
USB drive for printing (or directly printed without the file being saved to disk.). Presently,
60+
=slip39= can output example ETH, BTC, LTC and DOGE addresses derived from the seed, to illustrate
61+
what accounts are associated with the backed-up seed. Recovery of the seed to a Trezor is simple,
62+
by entering the mnemonics right on the device.
63+
64+
$ python3 -m slip39 -v Personal # or run: slip39 -v Personal
65+
2022-01-26 13:55:30 slip39 First(1/1): Recover w/ 2 of 4 groups First(1), Second(1), Fam(2/4), Fren(2/6)
66+
2022-01-26 13:55:30 slip39 1st 1 sister 8 cricket 15 unhappy
67+
2022-01-26 13:55:30 slip39 2 acid 9 mental 16 ocean
68+
2022-01-26 13:55:30 slip39 3 acrobat 10 veteran 17 mayor
69+
2022-01-26 13:55:30 slip39 4 romp 11 phantom 18 promise
70+
2022-01-26 13:55:30 slip39 5 anxiety 12 grownup 19 wrote
71+
2022-01-26 13:55:30 slip39 6 laser 13 skunk 20 romp
72+
2022-01-26 13:55:30 slip39 7 cricket 14 anatomy
73+
2022-01-26 13:55:30 slip39 Second(1/1): Recover w/ 2 of 4 groups First(1), Second(1), Fam(2/4), Fren(2/6)
74+
2022-01-26 13:55:30 slip39 1st 1 sister 8 belong 15 spirit
75+
2022-01-26 13:55:30 slip39 2 acid 9 survive 16 royal
76+
2022-01-26 13:55:30 slip39 3 beard 10 home 17 often
77+
2022-01-26 13:55:30 slip39 4 romp 11 herd 18 silver
78+
2022-01-26 13:55:30 slip39 5 again 12 mountain 19 grocery
79+
2022-01-26 13:55:30 slip39 6 orbit 13 august 20 antenna
80+
2022-01-26 13:55:30 slip39 7 very 14 evening
81+
2022-01-26 13:55:30 slip39 Fam(2/4): Recover w/ 2 of 4 groups First(1), Second(1), Fam(2/4), Fren(2/6)
82+
2022-01-26 13:55:30 slip39 1st 1 sister 8 rainbow 15 husky
83+
2022-01-26 13:55:30 slip39 2 acid 9 swing 16 crowd
84+
2022-01-26 13:55:30 slip39 3 ceramic 10 credit 17 learn
85+
2022-01-26 13:55:30 slip39 4 roster 11 piece 18 priority
86+
2022-01-26 13:55:30 slip39 5 already 12 puny 19 hand
87+
2022-01-26 13:55:30 slip39 6 quiet 13 senior 20 watch
88+
2022-01-26 13:55:30 slip39 7 erode 14 listen
89+
2022-01-26 13:55:30 slip39 2nd 1 sister 8 holy 15 revenue
90+
2022-01-26 13:55:30 slip39 2 acid 9 execute 16 junction
91+
2022-01-26 13:55:30 slip39 3 ceramic 10 lift 17 elite
92+
2022-01-26 13:55:30 slip39 4 scared 11 spark 18 flexible
93+
2022-01-26 13:55:30 slip39 5 domestic 12 yoga 19 inform
94+
2022-01-26 13:55:30 slip39 6 exact 13 medical 20 predator
95+
2022-01-26 13:55:30 slip39 7 finger 14 grief
6096
...
61-
2021-12-29 13:21:57 slip39 First(1/1): Recover w/ 2 of 4 groups First(1), Second(1), Fam(2/4), Fren(2/6)
62-
2021-12-29 13:21:57 slip39 withdraw pajamas acrobat romp afraid engage sniff olympic rescue taxi careful calcium radar thank realize join thank parcel desktop tofu
63-
2021-12-29 13:21:57 slip39 Second(1/1): Recover w/ 2 of 4 groups First(1), Second(1), Fam(2/4), Fren(2/6)
64-
2021-12-29 13:21:57 slip39 withdraw pajamas beard romp ajar cricket medical human unkind undergo legend briefing climate learn member change glasses maximum critical photo
65-
2021-12-29 13:21:57 slip39 Fam(2/4): Recover w/ 2 of 4 groups First(1), Second(1), Fam(2/4), Fren(2/6)
66-
2021-12-29 13:21:57 slip39 withdraw pajamas ceramic roster daisy voice bike spider rhyme stay slow devote phantom cricket carpet favorite decent society ending elite
67-
2021-12-29 13:21:57 slip39 withdraw pajamas ceramic scared calcium says spew fake blue exceed actress velvet romp ounce mild smear sled kernel divorce oral
97+
2022-01-26 13:55:30 slip39 ETH m/44'/60'/0'/0/0 : 0x8FBCe53111817DcE01F9f4C4A6319eA1Ca0c3bf1
98+
2022-01-26 13:55:30 slip39 BTC m/84'/0'/0'/0/0 : bc1q6u7qk0tepkxdm8wkhpqzwwy0w8zfls9yvghaxq
6899
...
69-
2021-12-29 13:21:57 slip39 Wrote SLIP39-encoded wallet for '' to: SLIP39-2021-12-29+13.21.57-0x8686D2cb685A934233eB8a4907d17e45257eBaD0.pdf
100+
2022-01-26 13:55:30 slip39 Wrote SLIP39-encoded wallet for 'Personal' to: Personal-2022-01-26+13.55.30-ETH-0x8FBCe53111817DcE01F9f4C4A6319eA1Ca0c3bf1.pdf
70101
71102
Later, if you need to recover the Ethereum wallet, keep entering SLIP-39 mnemonics until the secret
72103
is recovered (invalid/duplicate mnemonics will be ignored):
73104
74-
$ python3 -m slip39.recovery -v
75-
Enter 1st SLIP-39 mnemonic: withdraw pajamas acrobat romp afraid engage sniff olympic rescue taxi careful calcium radar thank realize join thank parcel desktop tofu
105+
$ python3 -m slip39.recovery -v # or run: slip39-recovery -v
106+
Enter 1st SLIP-39 mnemonic: sister acid acrobat romp anxiety laser cricket cricket mental veteran phantom grownup skunk anatomy unhappy ocean mayor promise wrote romp
76107
2021-12-29 13:24:25 slip39.recovery Could not recover SLIP-39 master secret with 1 supplied mnemonics: Insufficient number of mnemonic groups. The required number of groups is 2.
77108
Enter 2nd SLIP-39 mnemonic: a bc
78109
2021-12-29 13:24:53 slip39.recovery Could not recover SLIP-39 master secret with 2 supplied mnemonics: Invalid mnemonic word 'a'.
79-
Enter 3rd SLIP-39 mnemonic: withdraw pajamas ceramic roster daisy voice bike spider rhyme stay slow devote phantom cricket carpet favorite decent society ending elite
110+
Enter 3rd SLIP-39 mnemonic: sister acid ceramic roster already quiet erode rainbow swing credit piece puny senior listen husky crowd learn priority hand watch
80111
2021-12-29 13:24:58 slip39.recovery Could not recover SLIP-39 master secret with 3 supplied mnemonics: Invalid mnemonic word 'a'.
81-
Enter 4th SLIP-39 mnemonic: withdraw pajamas ceramic scared calcium says spew fake blue exceed actress velvet romp ounce mild smear sled kernel divorce oral
112+
Enter 4th SLIP-39 mnemonic: sister acid ceramic scared domestic exact finger holy execute lift spark yoga medical grief revenue junction elite flexible inform predator
82113
2021-12-29 13:25:14 slip39.recovery Recovered SLIP-39 secret with 3 (1st, 3rd, 4th) of 4 supplied mnemonics
83114
2021-12-29 13:25:14 slip39.recovery Recovered SLIP-39 secret; To re-generate, send it to: python3 -m slip39 --secret -
84-
9658a84b5138f63c428f6086be6e82b5
115+
32448aabb50cb6b022fdf17d960720df
85116
86117
Finally, regenerate the Ethereum wallet, perhaps including an encrypted JSON wallet file for import
87-
into a software wallet; note that the same Ethereum wallet address 0x8686...BaD0 is recovered:
88-
89-
$ python3 -m slip39 --secret 9658a84b5138f63c428f6086be6e82b5 --json -
90-
2021-12-29 13:26:04 slip39 It is recommended to not use '-s|--secret <hex>'; specify '-' to read from input
91-
2021-12-29 13:26:04 slip39 ETH m/44'/60'/0'/0/0 : 0x8686D2cb685A934233eB8a4907d17e45257eBaD0
92-
JSON key file password: <enter JSON wallet password>
93-
2021-12-29 13:26:29 slip39 Wrote JSON encrypted wallet for '' to: SLIP39-2021-12-29+13.26.04-0x8686D2cb685A934233eB8a4907d17e45257eBaD0.json
94-
2021-12-29 13:26:29 slip39 Wrote SLIP39-encoded wallet for '' to: SLIP39-2021-12-29+13.26.04-0x8686D2cb685A934233eB8a4907d17e45257eBaD0.pdf
118+
into a software wallet; note that the same Ethereum wallet address 0x8FBC...3bf1 is recovered:
119+
120+
$ python3 -m slip39 --secret 32448aabb50cb6b022fdf17d960720df --json -
121+
2022-01-26 14:06:14 slip39 It is recommended to not use '-s|--secret <hex>'; specify '-' to read from input
122+
2022-01-26 14:06:14 slip39 ETH m/44'/60'/0'/0/0 : 0x8FBCe53111817DcE01F9f4C4A6319eA1Ca0c3bf1
123+
2022-01-26 14:06:14 slip39 BTC m/84'/0'/0'/0/0 : bc1q6u7qk0tepkxdm8wkhpqzwwy0w8zfls9yvghaxq
124+
JSON key file password:
125+
2022-01-26 14:06:21 slip39 Wrote JSON SLIP39's encrypted ETH wallet 0x8FBCe53111817DcE01F9f4C4A6319eA1Ca0c3bf1 \
126+
derived at m/44'/60'/0'/0/0 to: SLIP39-2022-01-26+14.06.14-ETH-0x8FBCe53111817DcE01F9f4C4A6319eA1Ca0c3bf1.json
127+
2022-01-26 14:06:21 slip39 Wrote SLIP39-encoded wallet for '' to: SLIP39-2022-01-26+14.06.14-ETH-0x8FBCe53111817DcE01F9f4C4A6319eA1Ca0c3bf1.pdf
128+
95129
96130
The whole toolchain is suitable for pipelining:
97131

slip39/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
__version_info__ = ( 5, 0, 0 )
1+
__version_info__ = ( 5, 0, 1 )
22
__version__ = '.'.join( map( str, __version_info__ ))

0 commit comments

Comments
 (0)