Bitcoinのテストネットで遊んでみよう
前置き
前回こちらの記事を書いたわけですが(新品Macにbitcoindを入れて、testnetに繋いでみよう - 卒論から始まるBlockchain)、今回はその続きです。ターミナルで簡単なコマンドを叩いたり、アドレスを作って送金してみます!
環境
PC:macOS Mojave 10.14.1
Bitcoin Core:v0.17.99.0-51e5ef397
接続確認
まずはBitcoin Coreを立ち上げます。前回はFinderから直接立ち上げましたが、今回はかっこよくターミナルから立ち上げてみます。
ターミナルに
$ bitcoin-qt
を打ち込みます。すると前回と同じ画面が自動で立ち上がります。
※GUIはいりません。という方は以下のコマンドで。
立ち上がるとtestnetのブロックを猛烈なスピードでダウンロードし始めます。だいたい30分以上かかった気がします。
(2019/04/24時点で約24GBほどです。$ bitcoin-cli getblockchaininfo で出てくるsize_on_diskの値で、キロバイト表記です。)
ちゃんと立ち上がっているか確認してみます。
$ bitcoin-cli getconnectioncount
1
これは接続されているノードの数です。最初は1から始まり、安定すると8まで行きます。(多分何か手を加えない限り8以上には増えない)
また、以下のコマンドで接続相手の情報を得ることができます。
[
{
"id": 0,
"addr": "58.64.158.246:18333",
"addrlocal": "180.1.181.232:56614",
"addrbind": "192.168.11.14:56614",
"services": "000000000000040d",
"relaytxes": true,
"lastsend": 1541487157,
"lastrecv": 1541487092,
"bytessent": 12836,
"bytesrecv": 438096,
"conntime": 1541486491,
"timeoffset": 0,
"pingtime": 0.173859,
"minping": 0.173092,
"version": 70015,
"subver": "/Satoshi:0.16.1/",
"inbound": false,
"addnode": false,
"startingheight": 1414448,
"banscore": 0,
"synced_headers": 1414433,
"synced_blocks": -1,
"inflight": [
],
"whitelisted": false,
"minfeefilter": 0.00001000,
"bytessent_per_msg": {
"addr": 870,
"feefilter": 32,
"getaddr": 24,
"getheaders": 3255,
"headers": 1010,
"inv": 2678,
"ping": 192,
"pong": 192,
"sendcmpct": 66,
"sendheaders": 24,
"tx": 4342,
"verack": 24,
"version": 127
},
"bytesrecv_per_msg": {
"addr": 30842,
"feefilter": 32,
"getdata": 851,
"getheaders": 1085,
"headers": 403542,
"ping": 192,
"pong": 192,
"reject": 1120,
"sendcmpct": 66,
"sendheaders": 24,
"verack": 24,
"version": 126
}
} #以下長いので省略
以下のコマンドではブロックの簡単な情報を見ることができます。
※ 最近のバージョンだとgetinfoだけだど、そんなコマンド無いよとエラーが帰ってきました。各バージョンで確認してみましょう。(https://bitcoin.org/en/developer-reference#address-conversion)
{
"version": 179900,
"protocolversion": 70015,
"walletversion": 169900,
"balance": 0.17838729,
"blocks": 1442251,
"timeoffset": 0,
"connections": 8,
"proxy": "",
"difficulty": 11974980.94624031,
"testnet": true,
"keypoololdest": 1541155356,
"keypoolsize": 1000,
"paytxfee": 0.00000000,
"relayfee": 0.00001000,
"warnings": ""
}
アドレスを作ろう
テストネットコインをゲットするために、まずはアドレスを作りましょう。以下のコマンドを入力します。
2NEfQRrL8JbsYPiGcxEcHJsdbs99PFov1nu
ちなみにアドレスには好きなタグ付けをつけることができます。またタグは後でつけることも可能ですし、変更することもできます。
$ bitcoin-cli getnewaddress mochi
2N1PpDxoLVsZ2EupmwiL7G5KETjpzM6oc19
ちなみにちなみに、Bitcoin Core0.16からsegwitアドレス。つまりP2SHのアドレスがデフォルトになったらしいです。なので、P2PKHのアドレスが欲しいです!という方はlegacyを追加するとできます。(参照:bitcoin core rpc/ getnewaddressでp2pkhアドレスを得るには - Qiita)
※P2PSHとP2PKHがよくわかりません!という方はこちらを参照するといいかと:ビットコインおけるトランザクションスクリプトの仕組みとその種類
$ bitcoin-cli getnewaddress "" legacy
mq4fMveBxM5rdRZsarVnFmDs5MvgKvX4hp
テストネットコインをゲットしよう
いよいよテストネットコインをゲットしましょう。
色々入手方法はありますが、今回はBitcoin testnet3 faucetを利用します。もちろんテストネットコインなので無料でもらえます。
先ほど作ったアドレスを入力し、「I'm not a robot」にチェックを入れましょう。
すると以下の画面が表示されます。今回は大体0.08345864BTCが送られました。ちなみに下の方に「使わないなら以下のアドレスに返してね」と書いてありますね。どうもテスト用とはいえ無限ではないようです。
ちゃんと送られているか確認してみます。
ちゃんと送られていますね。ただすぐに使えるというわけではなく、まずは検証待ち状態になります。しばらくすると利用可能に取り込まれて使えるようになります。
(同期が終わるまでは受け取ることはできません。もし同期前に先ほどの画面で送信処理をした場合は同期後に反映される形になります。自分はそれを知らず「なんで送れないんだよ!!」とイライラしてました。)
ターミナルでも確認してみます。
$ bitcoin-cli listtransactions
[
{
"address": "2N1PpDxoLVsZ2EupmwiL7G5KETjpzM6oc19",
"category": "receive",
"amount": 0.08345864,
"label": "mochi",
"vout": 1,
"confirmations": 2,
"blockhash": "0000000000096be5be01b856ff0d4768dc2ecafd37b7bfa80aa4ab674c1c9849",
"blockindex": 25,
"blocktime": 1541503652,
"txid": "71ea648cd5754293174df7deec085e8fbf8accffd71da618e88da68e48aaec06",
"walletconflicts": [
],
"time": 1541502885,
"timereceived": 1541502885,
"bip125-replaceable": "no"
}
]
送金してみよう
では先ほどのアドレスにいくらか返してあげましょう。
コマンドは「bitcoin-cli sendtoaddress 送信先アドレス 送信量」です。
$ bitcoin-cli sendtoaddress mv4rnyY3Su5gjcDNzbMLKBQkBicCtHUtFB 0.001
f6794e5c161d6ab423826a9514bfb4af02c83fdc6b7ced687d9d87e1efc723df
するとトランザクションのハッシュ値が出てきます。どうなっているかBitcoin Testnet Block Explorer | BlockCypherで確認してみます。上部にある検索欄にトランザクションハッシュ値を入力します。
するとこんな感じで送金したアカウントの所持金、手数料、何分前のものか、承認数などが出てきます。
まとめ
アップデートの度にコマンドが変更するのか、自分のバージョンでは"Method not faund"と表示されることが多々ありました。超めんどくさいので何とかしていただきたいo(`ω´ )o
コマンド一覧はこちらから見れます→https://bitcoin.org/en/developer-reference#address-conversion
間違い、疑問点、不明点などあればお気軽にコメントくださいm(_ _)m
参考資料
・アカウントとアドレス - ウォレット - Bitcoin ClockUpMemo
・MacにBitcoindをインストールしてテスト送金をしてみる - Qiita
・ビットコインおけるトランザクションスクリプトの仕組みとその種類
・https://bitcoin.org/en/developer-reference#getinfo
・bitcoin core rpc/ getnewaddressでp2pkhアドレスを得るには - Qiita
・bitcoin-cliを使ったBitcoinAPI入門 - Qiita
・https://bitcoin.org/en/developer-reference#address-conversion
・Bitcoin(Mainnet, Testnet)への接続方法 - Qiita
・ブロックチェーン・プログラミング 仮想通貨入門 (KS情報科学専門書)
//改めて検索すると結構同じ内容のブログがありますね。バージョンアップ早いので、ここら辺いっぱいあるの助かる。