前回Bitcoinのインストールまで終わったので起動させていきましょう。
bitcoinには2つのテストモードがあるらしい。
- Testnet
テストようの仮想ネット。価値がないのでいろいろ失敗したりしても大丈夫。
バーチャルFXみたいなものか
- Regtest Mode
自分しか参加できない仮想ネットワークを作ってその中でテストします。
仕組みを学ぶなためにRegtest Modeから始めることにします。
以下のチュートリアルに従いながらやっていきます。
Developer Examples - Bitcoin
RegTestModeの起動と初期採掘
まずRegTestModeでデーモンを起動します
$ /usr/local/bin/bitcoind -regtest -daemon Bitcoin server starting
そうしたら最初の101個のBlockを作ります。
bitcoin-cli -regtest generate 101 [ "7849010159c75b2e3c991a175c985bcbe33a732aeabe482cef44dc636ea876fc", "209af3eaa5d74f02393f6d6d7f5f017479ae8c3e5ffcb3e1508dadcb18716e14", ・・・・ "6fda9ac651e0cef149af54befa9d8e6abc9a98e08367862092ab42cee7183d81" ]
この100このブロックがこれからの基礎として動きます。
またビットコインの採掘をしたことになるのでリワードとして50コインが貰えます。
みてみましょう。
$ bitcoin-cli -regtest getbalance 50.00000000
きたー!!今の[相場:http://ビットコイン相場.com/]だと5万円ぐらいなので現実世界だったら250万Get!!!
こりゃ皆さん頑張ってマイニングするわけですね。
bitcoinの使用
さて、リワードで50コイン貰ったので、さっそく使ってみましょう。
まず新しいアドレスを作ってShell変数の中に保存します。
[ec2-user@ip-172-31-18-152 bitcoin]$ bitcoin-cli -regtest getnewaddress mnUCSdxQVL53Xkuo27yXhyLnK5Cbn9aPta [ec2-user@ip-172-31-18-152 bitcoin]$ [ec2-user@ip-172-31-18-152 bitcoin]$ NEW_ADDRESS=mnUCSdxQVL53Xkuo27yXhyLnK5Cbn9aPta
そして保存した送信先に10コイン送付してみます。
bitcoin-cli -regtest sendtoaddress $NEW_ADDRESS 10.00 96aed86c1683f8a4251607672c032d8eb8ee249f99d0b48f09713e59f0bfee62
返ってきたhexはBitcoinのトランザクションIDです。
さておくれたかどうか見てみましょう。
$ bitcoin-cli -regtest listunspent [ ]
空っぽですね。なぜかというとlistunspentは確定したものしか見れないからです。
そこで引数に0を追加して実行して未確定のものも表示させましょう。
$ bitcoin-cli -regtest listunspent 0 [ { "txid": "96aed86c1683f8a4251607672c032d8eb8ee249f99d0b48f09713e59f0bfee62", "vout": 0, "address": "mhJsk49f56j3aUJuWTceNtLtAo6ZEQk8WP", "scriptPubKey": "76a91413a775e04db5bcf70ee5db5e771a84baa2b69c8c88ac", "amount": 39.99999808, "confirmations": 0, "spendable": true }, { "txid": "96aed86c1683f8a4251607672c032d8eb8ee249f99d0b48f09713e59f0bfee62", "vout": 1, "address": "mnUCSdxQVL53Xkuo27yXhyLnK5Cbn9aPta", "account": "", "scriptPubKey": "76a9144c4371587653acbaa2ae78ab40650651fd8193e588ac", "amount": 10.00000000, "confirmations": 0, "spendable": true } ]
未確定として見れましたね。
自分の口座が39.99999808になっているのは手数料を引かれているからでしょう。
$ bitcoin-cli -regtest getbalance 49.99999808
と確認してみると、トランザクションが未確定なので送金は行われていないがすでに手数料は取られているような扱いになってい模様。
ではトランザクションをブロックに書き込んでみてみましょう。
$ bitcoin-cli -regtest generate 1 [ "7962caa5b84f6bc2f31e1f070ea793da8c872e2deefd6b4b85ad2ff84c7a54d2" ] [ec2-user@ip-172-31-18-152 bitcoin]$ bitcoin-cli -regtest listunspent [ { "txid": "96aed86c1683f8a4251607672c032d8eb8ee249f99d0b48f09713e59f0bfee62", "vout": 0, "address": "mhJsk49f56j3aUJuWTceNtLtAo6ZEQk8WP", "scriptPubKey": "76a91413a775e04db5bcf70ee5db5e771a84baa2b69c8c88ac", "amount": 39.99999808, "confirmations": 1, "spendable": true }, { "txid": "96aed86c1683f8a4251607672c032d8eb8ee249f99d0b48f09713e59f0bfee62", "vout": 1, "address": "mnUCSdxQVL53Xkuo27yXhyLnK5Cbn9aPta", "account": "", "scriptPubKey": "76a9144c4371587653acbaa2ae78ab40650651fd8193e588ac", "amount": 10.00000000, "confirmations": 1, "spendable": true }, { "txid": "e4b8dfaee1494c0e1edcc87a29e54af18f4d7271e89fe97dfcb3a0af1bb033d2", "vout": 0, "address": "mqwdetiuWtCC4d1ZfNUGtHUVdpWtfz3YRC", "scriptPubKey": "2103602d4367713ca52d595683265345e8af899aeb2a90d7ff39f72b59c3c77079a7ac", "amount": 50.00000000, "confirmations": 101, "spendable": true } ]
無事にかけました、そしてトランザクションが確定しました。
そして採掘したので50コイン貰えたことがわかります。
おもしろですねー。