8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

今回はブロックチェーンのブロックの構造について紹介します。
できる限り「Short & Simple」を心がけます。
なお、私もブロックチェーン初学者なので、内容に誤り等ありましたらご指摘いただけると幸いです。

ブロックの構造

ブロックは、大きく分けて2種類のデータで構成されている。

  1. そのブロックに関する情報(メタデータ)を含むブロックヘッダ
  2. そのブロックに含まれるトランザクションのリスト

Bitcoinにおけるブロック構造は以下のとおり。

サイズ フィールド名 説明
4バイト Block Size この次のフィールドからブロックの最後までのデータサイズ(単位はバイト)
80バイト Block Header nonceなどブロック自身に関するいくつかの情報
1-9バイト Transaction Counter ブロックに含まれるトランザクションの数
可変 Transactions ブロックに記録されるトランザクションのリスト

ブロックヘッダ

3種類のメタデータが含まれる。

  1. 1つ前のブロックのハッシュ値
  2. マイニング競争に関係するメタデータ(difficulty、タイムスタンプ、nonce)
  3. ブロック内の全トランザクションを要約した情報(マークルツリーのルートハッシュ)

(「マイニング」や「マークルツリー」については別途記事を書こうと思います。)

Bitcoinにおけるブロックヘッダ構造は以下のとおり。

サイズ フィールド名 説明
4バイト Version ソフトウェア/プロトコルのバージョン番号
32バイト Previous Block Hash 親ブロック(1つ前のブロック)のハッシュ値
32バイト Merkle Root ブロック内の全トランザクションに対するマークルツリーのルートハッシュ
4バイト Timestamp ブロックの生成時刻
4バイト Difficulty Target ブロック生成時のproof of workのdifficulty
4バイト Nonce proof of workで用いるカウンタ

ブロックのハッシュ値

ブロックに関する情報の中で最も重要なものの一つとしてブロックハッシュがある。
これは、ブロックヘッダに対してSHA-256(ハッシュ関数)アルゴリズムを用いて2回ハッシュ化して得られる32バイトの値であり、各ブロックにユニークに与えられる識別子である。
※ハッシュ値の計算のインプットには「ブロックヘッダのみ」が利用される

なお、Bitcoinにおける最初のブロック「genesisブロック」のハッシュ値は以下である。

000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

参考文献

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?