bitcoin-cliコマンド【getblockchaininfo】

2018-11-10

getblockchaininfo

ブロックチェーン処理に関するさまざまな状態情報を含むオブジェクトを返却する。

引数

なし

実行例

$ bitcoin-cli getblockchaininfo
{
  "chain": "main",
  "blocks": 547665,
  "headers": 547665,
  "bestblockhash": "00000000000000000013ef51d3608fc3112eb24c47343a6b32ed6bff680ad100",
  "difficulty": 7182852313938.317,
  "mediantime": 1540722878,
  "verificationprogress": 0.999998118290147,
  "initialblockdownload": false,
  "chainwork": "000000000000000000000000000000000000000003cc69f46ab5dd28e3ad947e",
  "size_on_disk": 214963789581,
  "pruned": false,
  "softforks": [
    {
      "id": "bip34",
      "version": 2,
      "reject": {
        "status": true
      }
    },
    {
      "id": "bip66",
      "version": 3,
      "reject": {
        "status": true
      }
    },
    {
      "id": "bip65",
      "version": 4,
      "reject": {
        "status": true
      }
    }
  ],
  "bip9_softforks": {
    "csv": {
      "status": "active",
      "startTime": 1462060800,
      "timeout": 1493596800,
      "since": 419328
    },
    "segwit": {
      "status": "active",
      "startTime": 1479168000,
      "timeout": 1510704000,
      "since": 481824
    }
  },
  "warnings": ""
}

出力内容

chain (string)

BIP70で定義されている現在のネットワーク名(main、test、regtest)

blocks (numeric)

自サーバで処理済みとなっているブロック数
※ “-reindex”などを実施中はカウントが”headers”と相違する

headers (numeric)

自サーバで検証済みとなっているヘッダー数

bestblockhash (string)

自サーバで処理されている現在のブロックのハッシュ値

difficulty (numeric)

現在の難易度

mediantime (numeric)

自サーバで処理されている現在の最良ブロックの median time

verificationprogress (numeric)

検証の進行状況(0…1)

initialblockdownload (bool)

このノードがInitial Block Downloadモードであるかどうかの推定。

chainwork (string)

アクティブチェーン全てを生成するのに必要なハッシュの期待数(16進数)

size_on_disk (numeric)

ディスク上のblock(blk*.dat)とundo files(rev*.dat)の推定サイズ ※undo files(rev*.dat)はfork時に再編成するために利用する

pruned (boolean)

ブロックがプルーニング(剪定)を受けている場合は “true”

pruneheight (numeric)

最も低いブロック高(プルーニングが有効な場合のみ)

automatic_pruning (boolean)

自動プルーニングが有効な場合は “true”(プルーニングが有効な場合のみ)

prune_target_size (numeric)

プルーニングによって使用されるターゲットサイズ(自動プルーニングが有効な場合のみ)

softforks [ ] (array)

進行中のソフトフォークの状況(現在はBIP9で行われているのでこの項目は過去にアクティベートされた情報のために残しているのだと思われる)

id (string)

ソフトフォーク名

version (numeric)

ブロックバージョン

reject { } (object)

強制執行の状況が表示されるオブジェクト

status (boolean)

閾値に達した場合、trueになる

強制執行というのは、「この閾値を越えた後は過去のバージョンのブロックは取り込まれない」という情報。閾値に関する情報は現在は表示されておらず、ステータスのみになっている。また、過去にISMでソフトフォークが進行中は、 “enforce” という項目もあったようだ。その頃のQAを掲載しておく。
Softforks details in a 0.12 full node

bip9_softforks { }  (object)

進行中のBIP9ソフトフォークの状況

id { } (string)

ソフトフォーク名

status (string)

ソフトフォークの状況。次のいづれかが表示される。
“defined”,  “started”,  “locked_in”,  “active”,  “failed”

bit (numeric)

このソフトフォークに信号を送るために使用されるブロックバージョンフィールドのビット[0-28]。(ステータスが “started” の場合のみ表示される)

startTime (numeric)

“bit” が有効になった時間。ブロックの median time で最も近い(最小)時間。

timeout (numeric)

ロックされていない場合、失敗したと見なされたブロックの median time。

since (numeric)

ステータスが適用される最初のブロック高。

statistics { } (object)

BIP9ソフトフォークのシグナリングに関する集計情報(ステータスが”started”の場合のみ表示される)

period (numeric)

BIP9シグナリング期間となるブロック長。

threshold (numeric)

アクティベートに必要となる、バージョンビットセットを持つブロックの数。(閾値)

elapsed (numeric)

現在の期間の開始から経過したブロック数

count (numeric)

現在の期間に設定された、バージョンビットを持つブロックの数。

possible (boolean)

現在の期間に、アクティベーションの閾値を通過するのに十分なブロックが残っていない場合、falseが表示される。

warnings (string)

あらゆるネットワークとブロックチェーンの警告。

Initial Block Downloadがわかりそうでわからない

softforkとbip9_softforkについて

ソフトフォークには過去から現在までに以下の3種類の方法で行われている。

  • flag day activation (フラグデイ)
  • IsSuperMajority (ISM)
  • version bits (BIP9)

それぞれの詳しい内容は、グノシーさんのブログがすごいわかりやすかったので、そちらを参照。ビットコインのフォークとアクティベート方法のまとめ

“getblockchaininfo” の “softfork” は、ISMで行われたソフトフォークで、過去に使われていたソフトフォークの方式。最新のソフトフォークは “bip9_softfork” に表示されているソフトフォーク。(ただし、現在進行中のソフトフォークはない)次にソフトフォークが発生し、かつ新たな方式が採用されていない場合は、”bip9_softfork”に新しい情報が追加されると思う。

また、flag day activation (フラグデイ)に関する情報は、このコマンドで表示される情報には存在しない。前述のブログを参照してもらえばわかる通り、フラグデイの場合は猶予期間のないバージョンアップだったので、ソフトフォークの状況をレポートする必要性がなかったためだろう。