bitcoindを立ち上げる
まずはbitcoindを立ち上げます
bitcoindのビルド方法は過去の記事を参考にしてください
bitcoindを起動
コマンドプロンプトを起動します。
今回は-regtest
を引数に追加します。
> cd ~/bitcoin-bodule/bin
> bitcoind -regtest
bitcoin-cliを動かす
getblockchaininfo
-regtest
では、ブロック高が0となります。
> bitcoin-cli getblockchaininfo
{
"chain": "regtest",
"blocks": 0,
"headers": 0,
"bestblockhash": "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206",
"difficulty": 4.656542373906925e-010,
"mediantime": 1296688602,
"verificationprogress": 1,
"initialblockdownload": true,
"chainwork": "0000000000000000000000000000000000000000000000000000000000000002",
"size_on_disk": 293,
"pruned": false,
"softforks": [
{
"id": "bip34",
"version": 2,
"reject": {
"status": false
}
},
{
"id": "bip66",
"version": 3,
"reject": {
"status": false
}
},
{
"id": "bip65",
"version": 4,
"reject": {
"status": false
}
}
],
"bip9_softforks": {
"csv": {
"status": "defined",
"startTime": 0,
"timeout": 9223372036854775807,
"since": 0
},
"segwit": {
"status": "active",
"startTime": -1,
"timeout": 9223372036854775807,
"since": 0
}
},
"warnings": "This is a pre-release test build - use at your own risk - do not use for mining or merchant applications"
}
getblockcount
この状態で試しても当然返り値は0です。
> bitcoin-cli getblockcount
0
新しいブロック生成を生成してみる
5ブロック生成してみます。
※処理はほぼ一瞬です
> bitcoin-cli generate 5
[
"60943d938696f7b00966add8bc04f62a4ffaf184fc81c9a43a527280f09da72f",
"5aa8d0d54e44aa2ff0843c68f27e760bb849543d0d277c00053877a1ccd6a2e8",
"06f59e56950920c5f5f15f8092defa74204c992c6098bf6d551466a59ab60df1",
"2672b2e0a6a34b19a004d1910f4f218116cd402cb579604f8b97713ee1f9ee11",
"7938c4a495eac0fef1fbd0f45d38b2fa628d672c66fe4c6834fce17a3a67247a"
]
> bitcoin-cli getblockcount
5
残高を確認してみます。
> bitcoin-cli getbalance
0.00000000
残高は0でした。
これは、マイニング報酬は100ブロック承認後に利用可能になるからです。
Confirmation - bitcoin wiki より
Freshly-mined coins cannot be spent for 100 blocks. It is advisable to wait some additional time for a better chance that the transaction will be propagated by all nodes. Some older bitcoin clients won’t show generated coins as confirmed until they are 120 blocks deep.
では追加で100ブロック生成してみます。
> bitcoin-cli generate 100
[
"5890239fc90086e5eb31e5953b33f72bde6a9f2297804e9b32201e0917e9f901",
"284d6c1cd6ee8e6a4bdcd710d2c527371ceecdcd458cd360db4f8a6495b36c0f",
...中略...
"25c9a907cdaa7b0c806193ce835c5f46415dc97d68c85df90e95e553736202ca",
"1ab35aad779904b8577f656d0ed45830889ea43c2031c8662d1904f94e0cfe08"
]
> bitcoin-cli getblockcount
105
> bitcoin-cli getbalance
250.00000000
5ブロック分の報酬が反映されていることが確認できました。
アドレスを生成
-regnet
用のアドレスを生成してみます。
> bitcoin-cli getaccountaddress address1
2Mx47cD9dak12nF3dkTFK21FzXvEvmZo2iF
> bitcoin-cli getaccountaddress address2
2NGEbE3QGLcaF8TY2kK1aTKfmLKBc6CJWzz
生成したアドレスを確認してみます。
> bitcoin-cli listaccounts
{
"": 250.00000000,
"address1": 0.00000000,
"address2": 0.00000000
}
生成したアドレス宛に送金してみる
まずは生成したアドレスの公開鍵を取得してみます。
> bitcoin-cli getaccountaddress address1
2Mx47cD9dak12nF3dkTFK21FzXvEvmZo2iF
address1
に100BTC送金してみます。
> bitcoin-cli sendtoaddress 2Mx47cD9dak12nF3dkTFK21FzXvEvmZo2iF 100
168c68122a1562019ba12fc6425d605d9ea7ff7ed5a43657bc4d0c9fa42227c7
成功するとトランザクションが発生します。
アドレスの残高を確認してみます。
> bitcoin-cli listaccounts
{
"": 149.99991680,
"address1": 0.00000000,
"address2": 0.00000000
}
listaccounts
の引数を省略すると、承認数1以上のトランザクションのみが反映された情報が表示されます。この時点では承認数が0のためaddress1
の残高は0です。
> bitcoin-cli listaccounts 0
{
"": 149.99991680,
"address1": 100.00000000,
"address2": 0.00000000
}
引数に0を追加してあげることによって、address1
へ100BTC移っているのが確認できました。
トランザクションの確認
先ほど送金した際に発生したトラン座を調べてみます。
> bitcoin-cli gettransaction 168c68122a1562019ba12fc6425d605d9ea7ff7ed5a43657bc4d0c9fa42227c7
{
"amount": 0.00000000,
"fee": -0.00008320, #手数料
"confirmations": 0, #承認数
"trusted": true,
"txid": "168c68122a1562019ba12fc6425d605d9ea7ff7ed5a43657bc4d0c9fa42227c7", #トランザクション
"walletconflicts": [
],
"time": 1521038477, #トランザクション生成日時(UNIX時間)
"timereceived": 1521038477,
"bip125-replaceable": "no",
"details": [
{
"account": "", #送金元アカウント
"address": "2Mx47cD9dak12nF3dkTFK21FzXvEvmZo2iF", #送金先アドレス
"category": "send", #送金
"amount": -100.00000000, #送金量
"label": "address1", #送金先アカウント
"vout": 1,
"fee": -0.00008320, #手数料
"abandoned": false
},
{
"account": "address1", #受信アカウント
"address": "2Mx47cD9dak12nF3dkTFK21FzXvEvmZo2iF",
"category": "receive", #受信
"amount": 100.00000000, #受信量
"label": "address1", #受信アカウント
"vout": 1
}
],
"hex": "0200000003321daed87ba234ef565230df2bf82fc4bc3a5ff3dc36b52b94b86a9b5d47b4b70000000049483045022100f0e38f365431c51aba67f81f3b474d7bb340dcfcea8c55930a4e773bad9f426502200255bfca97a942e687c7069e2865f659f337cd409dd690603d8d462c6a3b4e1b01feffffff59b2d88b3d71a20cb7dfb12f5cbf3b45733707911fbd92aabe6185060cdbaa8b000000004847304402201308bc7848225e8f275527b25851d5135afbe7b26b33230205ef1462c10c7fd10220619db1f67d5c071af37bad88e80a7cf0ee99638114137deeaea09d1309172ad301feffffff8e1275ba76c956c0bd88ddcae9730e5e240573bcf46ed380fe30471d106464fe0000000048473044022055e23063848736c3566e6674c2e9316a06561dd2dca5c5ae4ab0bf607e7c2c900220361333abd3dc37202f4f74817204812d0489a6ad6458b2f24d23637107f8b61f01feffffff0280d1052a0100000017a914abdc4e515bbcd5a037b9e90796d13c5676001c618700e40b540200000017a91434beba232514f5522f8f55c1b856ee88907bfa9b8769000000"
}
まだこのトランザクションはブロックに取り込まれていません。
> bitcoin-cli generate 1
[
"148f0b1b6ee388b84cdb8df4ad841806b5df7ba045018c006b72611725a434e5"
]
> bitcoin-cli gettransaction 168c68122a1562019ba12fc6425d605d9ea7ff7ed5a43657bc4d0c9fa42227c7
{
"amount": 0.00000000,
"fee": -0.00008320,
"confirmations": 1,
"blockhash": "148f0b1b6ee388b84cdb8df4ad841806b5df7ba045018c006b72611725a434e5",
...中略...
}
1ブロック新たに生成し、トランザクションを確認してみると"confirmations": 1,
となっているのが確認できました。
> bitcoin-cli listaccounts
{
"": 199.99991680,
"address1": 100.00000000,
"address2": 0.00000000
}
listaccounts
を試してみると、承認数が1のためaddress1
の残高が表示されています。
※generate 1
で1ブロック生成したため""
の残高も50BTC増えています。