はじめに
自分のまわりでHDwalletが話題になってきているので調べたことをメモする。
HDwalletの厳密な定義は知らない。とりあえず、12ワードのニーモニックから始まって、パスによりアカウントを導出するものをさすことにする。
まずは、資料が豊富そうなEthereumから。
mnemonic
ランダムに生成したニーモニックを使う。
remember naive stairs dose six decorate catalog banner gaze tiny into lady
Path
BIP-44
https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki
Pathは、以下のように定義される。
m / purpose' / coin_type' / account' / change / address_index
SLIP-44
https://github.com/satoshilabs/slips/blob/master/slip-0044.md
ここには、index=60にEtherが定義してある。
Ganache
Ganacheに入れてみる。m/44'/60'/0'/0/
が使われている。
ganache-cli -m "remember naive stairs dose six decorate catalog banner gaze tiny into lady"
Ganache CLI v6.4.2 (ganache-core: 2.5.4)
Available Accounts
==================
(0) 0xb7242502386b00220c5a0ef889a5da0e8251e596 (~100 ETH)
(1) 0x219883c5dd2e50c29e2e9433a7761b4ecd97fbf8 (~100 ETH)
(2) 0xb96174e33c583a1da05e77a37ecc1b5d96363c1c (~100 ETH)
(3) 0x9cb5d503203308a2fddc7293314f283049578e97 (~100 ETH)
(4) 0x527e7a8bc1137bde1acac3b91acc4122461856af (~100 ETH)
(5) 0xbdd7f2f78ae952dd3f66ec6982f481fed9b4e9ff (~100 ETH)
(6) 0xe1c43afb6c4da4de00851062138cb5803472028a (~100 ETH)
(7) 0x35463e55b8d953b432a3866779df31982cb5cd01 (~100 ETH)
(8) 0xa45ff989892c1e09fe7ea1c324d43131b04fec40 (~100 ETH)
(9) 0x068fe2de4e27b6087be98623c587c943c97849a3 (~100 ETH)
Private Keys
==================
(0) 0xbdd5b053645c2282cea64f206f4e8c7d1a7905f302f3e792f7a48768c10102a5
(1) 0xd68565eaac95d38339a33dd8cb909bbf697abbb40e9476bdc3bddf3baa977a97
(2) 0x22417fc0bd03dd7b5717ed54b701a96831a92380eec0e4d5030bfc80f6f0b026
(3) 0xc4af260c206fe0609b85f849d66ac07dd3903015ee5a81804c6e847c4493ac85
(4) 0x7610f3bfa8524a6edb52ed5fd9bc607db03cb7f8bfe565e0149e55fc692dfc9e
(5) 0x002b924369c80fdf7a5785f20f1530e63aa9d0f3db00884ae497961eb151eda2
(6) 0x5e0791efd582711f7ffd0ce15d16fe6b4b9972cf34c16827281c7a90f77832ea
(7) 0x911d209c4bec2b1ca4ca2c1b4e49f38a0afcd12628de04be545fdcde5e17e885
(8) 0xdc447536b9665e2273d2692e336600da07fbe61407e53c58b3822d5d9ce6d80b
(9) 0xa5d5d6fe45d75361f9ee490c91721fa9a9520072958a26fc348cb0f2fdb39290
HD Wallet
==================
Mnemonic: remember naive stairs dose six decorate catalog banner gaze tiny into lady
Base HD Path: m/44'/60'/0'/0/{account_index}
Truffle HD wallet Provider
READMEにm/44'/60'/0'/0/
がデフォだって書いてある。
ちょっとやってみる
var HDWalletProvider = require("truffle-hdwallet-provider");
var mnemonic = "remember naive stairs dose six decorate catalog banner gaze tiny into lady";
var host = "http://localhost:8545";
var provider = new HDWalletProvider(mnemonic, host, 0, 10);
var Web3 = require('web3');
var web3 = new Web3(provider);
web3.eth.getAccounts().then((accounts) => {
console.log(accounts);
provider.engine.stop();
})
[ '0xB7242502386b00220C5A0Ef889A5da0E8251e596',
'0x219883C5dd2E50C29E2e9433a7761B4eCD97fbF8',
'0xB96174E33C583a1dA05e77a37ECC1B5D96363c1c',
'0x9cB5D503203308A2fDdC7293314f283049578E97',
'0x527e7A8bc1137BdE1acaC3b91ACc4122461856aF',
'0xBDd7F2F78Ae952DD3f66EC6982F481Fed9B4E9ff',
'0xE1c43aFB6c4dA4de00851062138Cb5803472028A',
'0x35463e55B8d953b432a3866779DF31982cb5cD01',
'0xa45FF989892C1E09FE7Ea1c324D43131b04fEC40',
'0x068FE2de4e27B6087BE98623C587c943C97849A3' ]
BIP39