【Outline】
We will welcome two blockchain engineers to dive deep into the development of wallets.
Yoshikazu Nishimura is a creator of Tachyon wallet that supports Ethereum and all the ERC20 standard tokens.
http://tachyon-wallet.io/en/
Alex Melville is an engineer at BitGo. BitGo is a company based in Palo Alto, CA. They make variety of products such as a wallet, an offline vault and institutional custody.
https://www.bitgo.com/
It's organized by ICOVO AG. https://icovo.co/
2. Agenda
General Knowledge
1. What is “wallet”?
2. HD Wallet (BIP32, 39, 44)
3. UTXO vs Account Model
Security
4. Private Key Security
5. How a Transaction is made
Usability
6. Mnemonic Recovery
7. Add/Create Token
8. ERC20MetaInfo
7. 1. What is “wallet”
API
Blockchain
0x7e5f4552091a69125d5dfcb7b8c2659029395bdf
0x3e5f....fde7
0x4c60....6dfe
0xf3afb...b94c
…
0x7e5f....5bdf
Wrooooooong!!
8. 1. What is “wallet”
2
2 = 1,461,501,637,330,902,918,203,684,832,716,283,019,655,932,542,976
160
160
9. 1. What is “wallet”
2
2 = 1,461,501,637,330,902,918,203,684,832,716,283,019,655,932,542,976
160
160
Private Key Public Key
10. 1. What is “wallet”
Private Key Public Key
0x7e5f4552091a69125d5dfcb7b8c2659029395bdf
☓ ☓
(*1)
12. 2. HD Wallet (BIP32, 39, 44)
• HD = Hierarchy Deterministic
• HD “ ”
•
http://blockchain.gunosy.io/entry/2017/12/21/165314
BIP 39
BIP 32 BIP 44
13. 3. UTXO vs Account Model
Bitcoin UTXO
Ethereum Account / Balance Model
1 BTC
12xCUJYdCVSJph6BpHkgfMjVzp8LuUpwas
15 ETH
0x3738560173bade58bba4d79e1749a8b6373856
5 BTC 2 BTC
2 BTC 6 BTC
80 BTC
1LaC89iueNjzQgbFMUVPoaBQeLcQJ2VZD
1 BTC 1 BTC
1 BTC 2 BTC
0x7e5f4552091a69125d5dfcb7b8c2659029395bdf
0x3738560173bade58bba4d79e1749a8b6373856
0x7e5f4552091a69125d5dfcb7b8c2659029395bdf
0x3738560173bade58bba4d79e1749a8b6373856
99 ETH
2 ETH
56 ETH
12 ETH
UTXO Model Account/Balance Model
3 BTC
10 ETH
7 ETH
14. 3. UTXO vs Account Model
Bitcoin UTXO
Ethereum Account / Balance Model
1 BTC
12xCUJYdCVSJph6BpHkgfMjVzp8LuUpwas
15 ETH
0x3738560173bade58bba4d79e1749a8b6373856
5 BTC
2 BTC 6 BTC
80 BTC
1LaC89iueNjzQgbFMUVPoaBQeLcQJ2VZD
1 BTC 1 BTC
2 BTC
0x7e5f4552091a69125d5dfcb7b8c2659029395bdf
0x3738560173bade58bba4d79e1749a8b6373856
0x7e5f4552091a69125d5dfcb7b8c2659029395bdf
0x3738560173bade58bba4d79e1749a8b6373856
99 ETH
2 ETH
56 ETH
12 ETH
UTXO Model Account/Balance Model
3 BTC
10 ETH
7 ETH
2 BTC
1 BTC
2 ETH
20 ETH
UTXO
15. 3. UTXO vs Account Model
Bitcoin UTXO
Ethereum Account / Balance Model
1 BTC
12xCUJYdCVSJph6BpHkgfMjVzp8LuUpwas
15 ETH
0x3738560173bade58bba4d79e1749a8b6373856
5 BTC 2 BTC
2 BTC 6 BTC
80 BTC
1LaC89iueNjzQgbFMUVPoaBQeLcQJ2VZD
1 BTC 1 BTC
1 BTC 2 BTC
0x7e5f4552091a69125d5dfcb7b8c2659029395bdf
0x3738560173bade58bba4d79e1749a8b6373856
0x7e5f4552091a69125d5dfcb7b8c2659029395bdf
0x3738560173bade58bba4d79e1749a8b6373856
99 ETH
2 ETH
56 ETH
12 ETH
UTXO Model Account/Balance Model
3 BTC
1 BTC
3 BTC
2 BTC
2 BTC
UTXO
4 BTC
16. 3. UTXO vs Account Model
Bitcoin UTXO
Ethereum Account / Balance Model
1 BTC
12xCUJYdCVSJph6BpHkgfMjVzp8LuUpwas
15 ETH
0x3738560173bade58bba4d79e1749a8b6373856
5 BTC 2 BTC
2 BTC 6 BTC
80 BTC
1LaC89iueNjzQgbFMUVPoaBQeLcQJ2VZD
1 BTC 1 BTC
1 BTC 2 BTC
0x7e5f4552091a69125d5dfcb7b8c2659029395bdf
0x3738560173bade58bba4d79e1749a8b6373856
0x7e5f4552091a69125d5dfcb7b8c2659029395bdf
0x3738560173bade58bba4d79e1749a8b6373856
99 ETH
2 ETH
56 ETH
12 ETH
UTXO Model Account/Balance Model
3 BTC
0.5 BTC 0.5 BTC
0.5 BTC
21. 5. How a Transaction is made
Transaction
DB
DB
22. 5. How a Transaction is made
Transfer( →A, 10 ETH)
transaction
Private Key
Blockchain Network
Blockchain
23. 5. How a Transaction is made
Ethereum Network
Mobile App
Web Server
Geth
transfer(A→B, 0.2 ETH)
transaction
Private Key
(signTransaction)
Web 2.0
Web App (UI)
HTTP
Private Key
Tx
Web Server
Private Key
Web Server
24. 5. How a Transaction is made
Ethereum Network
Mobile App Hosted Client
e.g. Infura,
Metamask,
MyEtherWallet,
etc
JSON RPC
(web3.js)
Geth
transfer(A→B, 0.2 ETH)
transactionPrivate Key
(signTransaction)
Tx
Hosted Client
Tx
Private Key
(Local/Private Wallet)