bitcoindを立ち上げる

まずはbitcoindを立ち上げます
bitcoindのビルド方法は過去の記事を参考にしてください

bitcoindを起動

コマンドプロンプトを起動します。

> cd ~/bitcoin-bodule/bin
> bitcoind

bitcoin-cliを動かす

コマンドプロンプトをもう一つ起動します。

> cd ~/bitcoin-bodule/bin
> bitcoin-cli getblockchaininfo

このように現在のブロック情報が返ってきます。

{
  "chain": "main",
  "blocks": 252787,
  "headers": 513478,
  "bestblockhash": "000000000000001ed72606fe0c520b4773ef3338660099b61753b8843505a4d6",
  "difficulty": 50810339.04827648,
  "mediantime": 1376806796,
  "verificationprogress": 0.07188864191224033,
  "initialblockdownload": true,
  "chainwork": "00000000000000000000000000000000000000000000009bcddab6a6fcd48aa4",
  "size_on_disk": 11569770343,
  "pruned": false,
  "softforks": [
    {
      "id": "bip34",
      "version": 2,
      "reject": {
        "status": true
      }
    },
    {
      "id": "bip66",
      "version": 3,
      "reject": {
        "status": false
      }
    },
    {
      "id": "bip65",
      "version": 4,
      "reject": {
        "status": false
      }
    }
  ],
  "bip9_softforks": {
    "csv": {
      "status": "defined",
      "startTime": 1462060800,
      "timeout": 1493596800,
      "since": 0
    },
    "segwit": {
      "status": "defined",
      "startTime": 1479168000,
      "timeout": 1510704000,
      "since": 0
    }
  },
  "warnings": "This is a pre-release test build - use at your own risk - do not use for mining or merchant applications"
}

エラーが出る場合

このようなエラーが出るときがあります。
ブロックが読み込まれていないので時間をあけて再度bitcoin-cliを動かしてみてください。
bitcoindは起動したままで

error code: -28
error message:
Loading block index...

適当なコマンドを試してみる

getblockchaininfo

上記でこのようなコマンドを試しました。

> bitcoin-cli getblockchaininfo

その返り値の一部です。

  "blocks": 252787,
  "headers": 513478,

headersというのは、現在のブロック高を示します。
blocksはそのPCに同期されているブロック高を示します。
bitcoindを起動させておくと、blocksheadersに追いついていきます。

getblockcount

同期済みのブロック高を返します。
執筆時の私の環境ではこのように返ってきます。

> bitcoin-cli getblockcount
252787

getblockhash

ブロックの番号を与えるとそのブロックのハッシュ値が返ってきます。

genesis block 0

> bitcoin-cli getblockhash 0
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

block 1

> bitcoin-cli getblockhash 1
00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048

同期していないブロックのハッシュを得ることはできません

> bitcoin-cli getblockhash 500000
error code: -8
error message:
Block height out of range

getblock

getblockhashで得たハッシュ値を引数に与えることによって、そのブロックの詳細を得ることができます。
block 0

> bitcoin-cli getblock 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
{
  "hash": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f",
  "confirmations": 364228,
  "strippedsize": 285,
  "size": 285,
  "weight": 1140,
  "height": 0,
  "version": 1,
  "versionHex": "00000001",
  "merkleroot": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
  "tx": [
    "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"
  ],
  "time": 1231006505,
  "mediantime": 1231006505,
  "nonce": 2083236893,
  "bits": "1d00ffff",
  "difficulty": 1,
  "chainwork": "0000000000000000000000000000000000000000000000000000000100010001",
  "nextblockhash": "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048"
}

block 1

> bitcoin-cli getblock 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048
{
  "hash": "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048",
  "confirmations": 367576,
  "strippedsize": 215,
  "size": 215,
  "weight": 860,
  "height": 1,
  "version": 1,
  "versionHex": "00000001",
  "merkleroot": "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098",
  "tx": [
    "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098"
  ],
  "time": 1231469665,
  "mediantime": 1231469665,
  "nonce": 2573394689,
  "bits": "1d00ffff",
  "difficulty": 1,
  "chainwork": "0000000000000000000000000000000000000000000000000000000200020002",
  "previousblockhash": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f",
  "nextblockhash": "000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd"
}

このブロック情報はBlockchain.infoなどでも確認することができます。

timeはUNIX時間です。

ブロックチェーンの構造として、ブロックNは常に直前のブロックであるN-1のブロックハッシュpreviousblockhashを保持する片方向リストの形をとります。
bitcoin-cli getblock [hash]の結果によってnextblockhashの値を知ることもできますが、これはメモリ上から算出しているだけで、ブロックデータ自体が次のブロック情報を知っているわけではない。

getconnectioncount

bitcoindコマンドなどでbitcoinのノードが起動すると、ノードP2P型ネットワークであるビットコイン・ネットワークと接続しようとします。

bitcoind起動直後、1ノードずつ接続されていきます。

> bitcoin-cli getconnectioncount
1

接続が安定すると、8ノード程度と接続された状態になります。

> bitcoin-cli getconnectioncount
8

getpeerinfo

接続している相手を確認することができます。

> bitcoin-cli getpeerinfo
[
  {
    "id": 1,
    "addr": "59.167.191.159:8333",
    "addrlocal": "153.177.13.197:33810",
    "addrbind": "10.0.1.11:51843",
    "services": "000000000000000d",
    "relaytxes": true,
    "lastsend": 1521030055,
    "lastrecv": 1521030055,
    "bytessent": 774972,
    "bytesrecv": 3551534641,
    "conntime": 1521022593,
    "timeoffset": -12,
    "pingtime": 1.036827,
    "minping": 0.211548,
    "version": 70015,
    "subver": "/Satoshi:0.15.1/",
    "inbound": false,
    "addnode": false,
    "startingheight": 513478,
    "banscore": 0,
    "synced_headers": 513489,
    "synced_blocks": 370239,
    "inflight": [
      370496,
      370510,
      370521,
      370537,
      370544,
      370551,
      370559,
      370566,
      370573,
      370581,
      370588,
      370596,
      370602,
      370609,
      370617,
      370624
    ],
    "whitelisted": false,
    "bytessent_per_msg": {
      "addr": 5790,
      "feefilter": 32,
      "getaddr": 24,
      "getdata": 763896,
      "getheaders": 1021,
      "ping": 1984,
      "pong": 1984,
      "sendcmpct": 66,
      "sendheaders": 24,
      "verack": 24,
      "version": 127
    },
    "bytesrecv_per_msg": {
      "addr": 34747,
      "block": 3550780192,
      "feefilter": 32,
      "getheaders": 1021,
      "headers": 12693,
      "inv": 638498,
      "ping": 2016,
      "pong": 1984,
      "sendcmpct": 66,
      "sendheaders": 24,
      "verack": 24,
      "version": 126
    }
  },
  
    ...中略
    }
  }
]

stop

bitcoindを終了させるときにはこのコマンドを打ち込みます。

> bitcoin-cli stop