【ビットコイン】1ブロックに含まれる情報について調べてみた【マークル木】

ビットコインなどの仮想通貨では、トランザクション(取引)の束を「ブロック」という単位で扱い、「ブロック」をつなげたものを「ブロックチェーン」と呼び、1つの公開台帳として管理しています。

今回は、ビットコインにおいて、1つの「ブロック」の中にどのような情報が入っていて、また、どのように「ブロック」が管理されているかを調べてみました。

ビットコインのブロックチェーンにおいて、各ブロックには、以下の3つの情報が含まれています。

  • 1つ前のブロックヘッダーのハッシュ値(Hash Value)
  • トランザクションデータ(マークル木)
  • ナンス(Nonce)

1つ前のブロックヘッダーのハッシュ値

サトシ・ナカモトの論文によると、ビットコインの1ブロックは以下のような構造になっています。

参照:Bitcoin 論文

ブロック(Block)の中にブロックヘッダー(Block Header)という部分があると思います。このブロックヘッダー部分には、

  • Prev Hash(1つ前のブロックヘッダーのハッシュ値)
  • Nonce(ナンス)
  • Root Hash(マークル木のルート)

の3つの値が入っています。

注意する点は、ブロックヘッダーにはマークル木(複数のトランザクションの束)のルートのハッシュ値のみが含まれていることです(マークル木全体は含まれていない)。

そして、Prev Hash(1つ前のブロックヘッダーのハッシュ値)は、ブロック全体ではなく、ブロックヘッダーのハッシュ値になります。

トランザクションデータ(マークル木)

次は、トランザクションデータを管理しているマークル木について説明します。

マークル木(Merkle tree)とは、ハッシュ木とも呼ばれ、「ハッシュ値を用いて、大きなデータの要約結果を格納する木構造」のことです。

Hash tree.png
英語版ウィキペディアDavidgothbergさん – en.wikipedia からコモンズに AzertyFabCommonsHelper を用いて移動されました。, パブリック・ドメイン, リンクによる

各データ(Data block)を、ハッシュ値(Hash)の変換し、それぞれのペアでハッシュ値を足し合わせて新たなハッシュ値(Hash0, Hash1)に置き換えることによって要約していきます。

繰り返し要約を行っていくことにより、最終的に1つのハッシュ値(Top hash)を得ることができます。

ビットコインの場合、各データ(Data block)が1つのトランザクション(取引)となり、最終的に得られるハッシュ値(Top hash)がブロックヘッダーに含まれる Root Hash(マークル木のルート)に相当します。

ナンス(Nonce)

ビットコインでは、トランザクション(取引)の承認は各ブロック単位で行われます。

承認の仕組みとして「プルーフ・オブ・ワーク(Proof of Work)」という、労働(CPUの計算)により発言権を与えられることになっています。

ナンスとは、PoW(労働) の成果の結果を証明するための値となります。

プルーフ・オブ・ワーク(Proof of Work)については、改めてまとめようと思います。

関連記事

【イーサリアム】日本円のチャートで比較する方法【イーサリアム・クラシック】

イーサリアム(Ethereum)は、2020年時点で、時価総額がビットコインに次ぐ第2位の仮想通貨で

記事を読む

【仮想通貨】デジタル署名と公開鍵暗号の違いは!?

ビットコインなどの仮想通貨のブロックチェーン技術で用いられている「デジタル署名」「公開鍵暗号」につい

記事を読む

【仮想通貨】ハッシュ関数(SHA-256)について調べてみた【ブロックチェーン】

ビットコインなどの仮想通貨で使用されているハッシュ関数(hash function)という技術につい

記事を読む

【仮想通貨】時価総額のランキングを円(JPY)で見る方法。

ビットコインやイーサリアムなどの仮想通貨の時価総額のランキングを 円(YEN)で見れる分かりやすいサ

記事を読む

【ビットコイン】承認されたブロックを見てみる【ブロックチェーン】

ビットコイン(BitCoin)の公開台帳であるブロックチェーンについて、新たに承認されたブロックの情

記事を読む

【仮想通貨】新しいトランザクション(取引)の追加方法【ブロックチェーン】

仮想通貨で用いられているブロックチェーン技術において、新しいトランザクション(取引)をどのように既存

記事を読む

【仮想通貨】デジタル署名について調べてみた【ブロックチェーン】

ビットコインなどの仮想通貨のブロックチェーンで用いられているデジタル署名(Digital signa

記事を読む

【仮想通貨】トランザクションについて調べてみた【ブロックチェーン】

ビットコインなどの仮想通貨では、取引をトランザクションで記述されます。 そのトランザクションの

記事を読む

【Python】 複数の辞書型の同じ key を持つ value を計算に用いる方法。

Python で、複数の辞書型を読み込んで、同じキー(key)を持つ数

【Python】 Series 型を dict(辞書型)に変換する方法。

Python で Series 型を dict(辞書型)に簡単に変換す

【Python】 DataFrame の特定の列で出現回数をカウントして降順でソートする方法。

Python で DataFrame 型の特定の列を指定して、対象列の

【テキストマイニング】 Amebaブログからデータ取得するための準備。

テキストマイニングを行うために、Ameba ブログ(アメブロ)のデータ

【Linux】 ローカルに Python をインストールする方法。

今回は、Linux サーバに、root 権限なしで、ローカルに Pyt

→もっと見る

PAGE TOP ↑