マイニングによって台帳に書きこまれる主なデータは、マイナーによって選択された複数の取引データからなるブロックと、取引データから算出された利用者ごとの残高を示すUTXO(Unspent Transaction Output)です。
ブロックは複数存在し、ビットコインの創生時に作成されたジェネシスブロックから最新のブロックまでを作成順に追記する形で保存されます。
ブロックの中身
個々のブロックは次の要素で構成されています。
フィールド名 | サイズ(byte) | 内容 |
---|---|---|
ブロック・ヘッダ | 80 | このブロックの内容を示す様々なメタ・データ |
ブロック・サイズ | 4 | ブロック・サイズ |
取引カウンタ | 1~9(可変) | 格納されている取引データの数 |
取引データ | 可変 | ビットコインの送受信データ |
ブロック・ヘッダの中身
ブロック・ヘッダは次の要素で構成されています。
フィールド名 | サイズ(byte) | 内容 |
---|---|---|
バージョン | 4 | 利用しているビットコインのバージョン数 |
前のブロックのハッシュ値 | 32 | 前のブロック中のブロック・ヘッダのハッシュ値 |
マークル・ルート | 32 | 格納している取引データのハッシュ値 |
タイムスタンプ | 4 | ブロックが生成された大まかな時刻 |
ディフィカルティ | 4 | ブロック生成の難易度 |
ノンス | 4 | PoWの当たりくじ |
ブロック・ヘッダには3つの主要なメタデータが格納されています。
- 前のブロック・ヘッダのハッシュ値
先頭の文字に連続したゼロが現れます。
このハッシュ値を通じてブロックチェーンは原始のブロックから最新のブロックまでが数珠つなぎで関係付けが行われます。 - マークル・ルート(Merkle Root)
ブロックに格納する取引データを多段階でハッシュしたものとなります。
このマークル・ルートを通じて取引データとブロック・ヘッダの関係付けが行われます。
-ノンス(Nonce)
ノンスはマイニング報酬を得るために行われるPoW(Proof of Works)の当たりくじです。
これを含めたブロック・ヘッダから、次のブロックのハッシュ値を計算します。