Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

bitcoin-cli コマンドまとめ その2

ウォレットのダンプ

$ bitcoin-cli dumpwallet a.txt
{
  "filename": "/Users/pebble8888/Library/a.txt"
}

第2引数には出力先のファイル名をいれます。

約4000行のファイル名が出力されました。先頭を少し加工して見てみます。
(ちなみにtestnet環境のものですのでそのままいじって遊ばないで下さい。)

# Wallet dump created by Bitcoin v0.16.99.0-d3f4dd313
# * Created on 2018-04-05T13:17:09Z
# * Best block at time of backup was 1291481 (000000000000024590e621b6362a3eea59d29b76d43423f2960651f226461ca0),
#   mined on 2018-04-05T13:14:36Z

# extended private masterkey: tprv8ZgxMBicQKsPe7smRumxgPZreT46s1BdRAsRpWHnmRKafcaXt7RshDhxJTGFoSgpbD9TNieGmrBiy2r6DzsSSJbG9d819eYw3yiYYb6Qo3C

cNzp...cnXy 2018-03-24T13:26:24Z reserve=1 # addr=2NDv...FYx9 hdkeypath=m/0'/0'/16'
cSYS...dUrH 2018-03-24T13:26:24Z label= # addr=2N5RhfHFhkUMaendEoT73qucyt8HQrkPNiQ hdkeypath=m/0'/0'/1'
cUyVUAraSKvFG7j9dEHqLGa8oV7EkgSDxR2xipXX6wXJyEcW2h8o 2018-03-24T13:26:24Z label=pebble8888 # addr=2N8KUQtPNutF1BpGnPL2se5ALoQGt1mpDzr hdkeypath=m/0'/0'/2'
cViF...DVZD 2018-03-24T13:26:24Z label= # addr=2MtyikCgwE51yhy8gUtSpH2oegHXTVny3qY hdkeypath=m/0'/0'/8'
cTUa...nUD9 2018-03-24T13:26:24Z reserve=1 # addr=2N6rCaedYJ5ZywQxxCsTaXkTxLktoRZCxfw hdkeypath=m/0'/0'/15'
cVRJ...HZtw 2018-03-24T13:26:24Z label=pebble9999 # addr=2Mvnh3VC18dnFDn1YztruJkR2zobPRBXhfQ hdkeypath=m/0'/0'/5'
cRZe...YSYZ 2018-03-24T13:26:24Z reserve=1 # addr=2Msn8SsDKQLWfvP8qK8qZDjKHqDGjxnC6zp hdkeypath=m/0'/0'/11'
cQWK...skZJ 2018-03-24T13:26:24Z label=pebble8888 # addr=2NC9peTSrrKPxxJWY4USSs2ZBrtbjJ3CX8c hdkeypath=m/0'/0'/3'
cUcN...KPS6 2018-03-24T13:26:24Z label=pebble9999 # addr=2N8qdpyMDGeqtoeE96qccSX8Ad5TbPce3QB hdkeypath=m/0'/0'/4'
cUmp...MSUS 2018-03-24T13:26:24Z label=-help # addr=2MzyD1VkGc1QvoiYEm5RyVYyTiMQcsAvcdz hdkeypath=m/0'/0'/7'
cTU4...BHS9 2018-03-24T13:26:24Z reserve=1 # addr=2NGGcSV4MD53qRumXtV4FkvM9r1BKxJJSGH hdkeypath=m/0'/0'/14'
cMzVC...MVVe 2018-03-24T13:26:24Z reserve=1 # addr=2N9EWeRooGsSiHS67S7QXniRGXeiggvKAwr hdkeypath=m/0'/0'/12'
cPk7...9kiT 2018-03-24T13:26:24Z label=--help # addr=2N4f2V2GVZJ3pnPaLjvkanGvDpwhssdknba hdkeypath=m/0'/0'/6'
cRuJ...Z86m 2018-03-24T13:26:24Z label= # addr=2N4x25SQPaYbVcvoQihznvGk4ktyJ537VRa hdkeypath=m/0'/0'/9'
cRt5j...iyme 2018-03-24T13:26:24Z label=pebble8888 # addr=2N1fdju35ciYDrfBtFVX1YhEqjPrcyrbCib hdkeypath=m/0'/0'/0'
cNSZ...7QTo 2018-03-24T13:26:24Z reserve=1 # addr=2NCrTNPirBUUW39TBJPjuyXg3Pjrx9mUFCQ hdkeypath=m/0'/0'/13'
cN9K88fgqVpupXHTtTcnHmbhjG3ivMt9mZPuzFREtdxStz2rmDqn 2018-03-24T13:26:24Z hdmaster=1 # addr=2NBuWcobChV5SfCaY99QvK7QLaAU5abcBLh hdkeypath=m
cScX...B2CE 2018-03-24T13:26:24Z reserve=1 # addr=2N5XwLTkR4q1LELVb5bSVpWSHvwFwgEKMsv hdkeypath=m/0'/0'/17'
cPf6...FSgQ 2018-03-24T13:26:24Z label=--help # addr=2My3kxrwBJh53prxewAnr1Jr9w43SkAsSP4 hdkeypath=m/0'/0'/10'
cPum...4jfk 2018-03-24T13:26:25Z reserve=1 # addr=2N75DgvPmps2Hapfpdb7hSzHcf4juq9eW3s hdkeypath=m/0'/1'/852'
cP7F...YPA7 2018-03-24T13:26:25Z reserve=1 # addr=2MyoRQ17mjY96pRDFQYWumNqwRyi8bhLqUL hdkeypath=m/0'/1'/822'

extended private master keyというのは111桁あります。 3行目の"cUyV"から始まる行のaddr=の部分 2N8KUQtPNutF1BpGnPL2se5ALoQGt1mpDzr は2で始まる35桁の文字列で、testnetのP2SH(pay to script hash)のビットコインアドレスです。
cUyVUAraSKvFG7j9dEHqLGa8oV7EkgSDxR2xipXX6wXJyEcW2h8o
の部分は52桁の文字列で、testnetでの圧縮WIF(Wallet Import Format)形式の秘密鍵です。
秘密鍵の先頭のprefixは以下の通りです。

種類 prefix base58 prefix
WIF 秘密鍵 mainnet 0x80 5
圧縮WIF 秘密鍵 mainnet 0x80 K or L
WIF 秘密鍵 testnet 0xef 9
圧縮WIF 秘密鍵 testnet 0xef c

hdkeypath=m/0'/0'/2' というのは、マスター秘密鍵mから生成された最初の強化された子供(m/0')の最初の強化された孫秘密鍵(m/0'/0')の3番目(m/0'/0'/2')の強化された曽孫秘密鍵であることを示しています。 階層的決定性ウォレット(Hierarchical Deterministic)の説明についてはMasteringBitcoinに詳しい説明があります。

ビットコインとブロックチェーン:暗号通貨を支える技術

ビットコインとブロックチェーン:暗号通貨を支える技術

extended private masterkeyというのは、111桁あり、tprvで始まっています。 BIP32 Extended Keyというものです。
これはtestnetの拡張秘密鍵です。 decodeするのにこちらにサイトを使ってみます。(間違ってもmainnetで利用しているものを突っ込まないように。)

BIP32 - JavaScript Deterministic Wallets

BIP32ドキュメントはこちら https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki

拡張鍵はbase58エンコードした時に、人間が読み易い文字列になるように、先頭4バイトのバージョンバイトが定められており、以下のようになっています。

version byte base58
mainnet 公開鍵 0x0488B21E xpub
mainnet 秘密鍵 0x0488ADE4 xprv
testnet 公開鍵 0x043587CF tpub
testnet 秘密鍵 0x04358394 tprv