|
1 | 1 | #+title: Ethereum SLIP-39 Account Generation |
| 2 | +#+author: Perry Kundert |
| 3 | + |
2 | 4 | #+date: 2021-12-20 10:55:00 |
3 | 5 | #+draft: false |
4 | 6 | #+EXPORT_FILE_NAME: README.pdf |
5 | 7 | #+STARTUP: org-startup-with-inline-images inlineimages |
6 | 8 | #+STARTUP: org-latex-tables-centered nil |
| 9 | + |
7 | 10 | #+OPTIONS: ^:nil # Disable sub/superscripting with bare _; _{...} still works |
8 | 11 | #+OPTIONS: toc:nil |
| 12 | + |
9 | 13 | #+LATEX_HEADER: \usepackage[margin=1.0in]{geometry} |
10 | 14 |
|
11 | 15 | #+BEGIN_SRC emacs-lisp :noweb no-export :exports results |
@@ -49,7 +53,8 @@ USB drive for printing (or directly printed without the file being saved to disk |
49 | 53 | what accounts are associated with the backed-up seed. Recovery of the seed to a Trezor is simple, |
50 | 54 | by entering the mnemonics right on the device. |
51 | 55 | #+END_ABSTRACT |
52 | | -#+TOC: headlines 2 |
| 56 | + |
| 57 | +#+TOC: headlines 3 |
53 | 58 |
|
54 | 59 | * Security with Availability |
55 | 60 |
|
@@ -106,15 +111,20 @@ by entering the mnemonics right on the device. |
106 | 111 |
|
107 | 112 | If catastrophe strikes and the owner dies, and the heirs don't have access to either the First |
108 | 113 | (at home) or Second (at the office), they can collect 2 Fam cards and 3 Frens cards (at the |
109 | | - funeral, for example), completing the Fam and Frens groups' data, and recover the HD Wallet |
110 | | - account. Since Frens are less likely to persist long term (and are also less likely to know |
111 | | - each-other), we'll require a lower proportion of them to be collected. |
| 114 | + funeral, for example), completing the Fam and Frens groups' data, and recover the seed, and all |
| 115 | + derived HD Wallet accounts. |
| 116 | + |
| 117 | + Since Frens are less likely to persist long term, we'll produce more (6) of these cards. |
| 118 | + Depending on how trustworthy the group is, adjust the Fren group's Required number higher (less |
| 119 | + trustworthy, more likely to know each-other, need to collect more to recover the group), or lower |
| 120 | + (more trustworthy, less likely to collude, need less to recover). |
112 | 121 |
|
113 | 122 | * SLIP-39 Account Creation, Recovery and Address Generation |
114 | 123 |
|
115 | 124 | Generating a new SLIP-39 encoded seed is easy, with results available as PDF and text. Any number |
116 | | - of accounts can be generated from this seed, and it can be recovered by collecting the desired |
117 | | - groups of recover card phrases. The default recovery groups are as described above. |
| 125 | + of derived HD wallet account addresses can be generated from this seed, and the seed (and all |
| 126 | + derived HD wallets, for all cryptocurrencies) can be recovered by collecting the desired groups of |
| 127 | + recover card phrases. The default recovery groups are as described above. |
118 | 128 |
|
119 | 129 | ** Creating New SLIP-39 Recoverable Seeds |
120 | 130 |
|
@@ -173,6 +183,56 @@ by entering the mnemonics right on the device. |
173 | 183 | #+ATTR_LATEX: :width 6in :options angle=0 |
174 | 184 | [[./images/slip39-wallets.png]] |
175 | 185 |
|
| 186 | +*** Supported Cryptocurrencies |
| 187 | + |
| 188 | + While the SLIP-39 seed is not cryptocurrency-specific (any wallet for any cryptocurrency can be |
| 189 | + derived from it), each type of cryptocurrency has its own standard derivation path |
| 190 | + (eg. =m/44'/3'/0'/0/0= for DOGE), and its own address representation (eg. Bech32 at |
| 191 | + =m/84'/0'/0'/0/0= for BTC eg. =bc1qcupw7k8enymvvsa7w35j5hq4ergtvus3zk8a8s=. |
| 192 | + |
| 193 | + When you import your SLIP-39 seed into a Trezor, you gain access to all derived HD |
| 194 | + cryptocurrency wallets supported directly by that hardware wallet, and *indirectly*, to any coin |
| 195 | + and/or blockchain network supported by any wallet software (eg. Metamask). |
| 196 | + |
| 197 | + |
| 198 | + | Crypto | Semantic | Path | Address | |
| 199 | + | | | | < | |
| 200 | + |--------+----------+------------------+---------| |
| 201 | + | ETH | Legacy | m/44'/60'/0'/0/0 | 0x... | |
| 202 | + | BNB | Legacy | m/44'/60'/0'/0/0 | 0x... | |
| 203 | + | CRO | Bech32 | m/44'/60'/0'/0/0 | crc1... | |
| 204 | + | BTC | Legacy | m/44'/ 0'/0'/0/0 | 1... | |
| 205 | + | | SegWit | m/44'/ 0'/0'/0/0 | 3... | |
| 206 | + | | Bech32 | m/84'/ 0'/0'/0/0 | bc1... | |
| 207 | + | LTC | Legacy | m/44'/ 2'/0'/0/0 | L... | |
| 208 | + | | SegWit | m/44'/ 2'/0'/0/0 | M... | |
| 209 | + | | Bech32 | m/84'/ 2'/0'/0/0 | ltc1... | |
| 210 | + | DOGE | Legacy | m/44'/ 3'/0'/0/0 | D... | |
| 211 | + |
| 212 | +**** ETH, BTC, LTC, DOGE |
| 213 | + |
| 214 | + These coins are natively supported both directly by the Trezor hardware wallet, and by most |
| 215 | + software wallets and "web3" platforms that interact with the Trezor, or can import the BIP-38 |
| 216 | + or Ethereum JSON Paper Wallets produced by =python-slip39=. |
| 217 | + |
| 218 | +**** BNB on the Binance Smart Chain (BSC): binance.com |
| 219 | + |
| 220 | + The Binance Smart Chain uses standard Ethereum addresses; support for the BSC is added directly |
| 221 | + to the wallet software; here are the instructions for adding BSC support for the Trezor |
| 222 | + hardware wallet, [[https://docs.binance.org/smart-chain/wallet/trezor.html][using the Metamask wallet]]. In =python-slip39=, BNB is simply an alias for |
| 223 | + ETH, since the wallet addresses and Ethereum JSON Paper Wallets are identical. |
| 224 | + |
| 225 | +**** CRO on Cronos: crypto.com |
| 226 | + |
| 227 | + The Cronos chain (formerly known as the Crypto.org chain). It is the native chain of the |
| 228 | + [[https://crypto.com][crypto.com CRO]] coin. |
| 229 | + |
| 230 | + Cronos also uses Ethereum addresses on the =m/44'/60'/0'/0/0= derivation path, but represents |
| 231 | + them as Bech32 addresses with a "crc" prefix, eg. =crc19a6r74dvfxjyvjzf3pg9y3y5rhk6rds2c9265n=. |
| 232 | + |
| 233 | + As with BNB, CRO is an alias for ETH, but changes the default wallet address representation to |
| 234 | + Bech32 prefixed with =crc=. |
| 235 | + |
176 | 236 | ** The macOS/win32 =SLIP-39.app= GUI App |
177 | 237 |
|
178 | 238 | If you prefer a graphical user-interface, try the macOS/win32 SLIP-39.App. You can run it directly if |
|
0 commit comments