【ビットコイン】1ブロックに含まれる情報について調べてみた【マークル木】
ビットコインなどの仮想通貨では、トランザクション(取引)の束を「ブロック」という単位で扱い、「ブロック」をつなげたものを「ブロックチェーン」と呼び、1つの公開台帳として管理しています。
今回は、ビットコインにおいて、1つの「ブロック」の中にどのような情報が入っていて、また、どのように「ブロック」が管理されているかを調べてみました。
ビットコインのブロックチェーンにおいて、各ブロックには、以下の3つの情報が含まれています。
- 1つ前のブロックヘッダーのハッシュ値(Hash Value)
- トランザクションデータ(マークル木)
- ナンス(Nonce)
Contents
1つ前のブロックヘッダーのハッシュ値
サトシ・ナカモトの論文によると、ビットコインの1ブロックは以下のような構造になっています。
ブロック(Block)の中にブロックヘッダー(Block Header)という部分があると思います。このブロックヘッダー部分には、
- Prev Hash(1つ前のブロックヘッダーのハッシュ値)
- Nonce(ナンス)
- Root Hash(マークル木のルート)
の3つの値が入っています。
注意する点は、ブロックヘッダーにはマークル木(複数のトランザクションの束)のルートのハッシュ値のみが含まれていることです(マークル木全体は含まれていない)。
そして、Prev Hash(1つ前のブロックヘッダーのハッシュ値)は、ブロック全体ではなく、ブロックヘッダーのハッシュ値になります。
トランザクションデータ(マークル木)
次は、トランザクションデータを管理しているマークル木について説明します。
マークル木(Merkle tree)とは、ハッシュ木とも呼ばれ、「ハッシュ値を用いて、大きなデータの要約結果を格納する木構造」のことです。
英語版ウィキペディアのDavidgothbergさん – en.wikipedia からコモンズに AzertyFab が CommonsHelper を用いて移動されました。, パブリック・ドメイン, リンクによる
各データ(Data block)を、ハッシュ値(Hash)の変換し、それぞれのペアでハッシュ値を足し合わせて新たなハッシュ値(Hash0, Hash1)に置き換えることによって要約していきます。
繰り返し要約を行っていくことにより、最終的に1つのハッシュ値(Top hash)を得ることができます。
ビットコインの場合、各データ(Data block)が1つのトランザクション(取引)となり、最終的に得られるハッシュ値(Top hash)がブロックヘッダーに含まれる Root Hash(マークル木のルート)に相当します。
ナンス(Nonce)
ビットコインでは、トランザクション(取引)の承認は各ブロック単位で行われます。
承認の仕組みとして「プルーフ・オブ・ワーク(Proof of Work)」という、労働(CPUの計算)により発言権を与えられることになっています。
ナンスとは、PoW(労働) の成果の結果を証明するための値となります。
関連記事
-
【イーサリアム】 公開鍵暗号について調べてみた。
仮想通貨の1つであるイーサリアムでは、公開鍵暗号という技術が使われています。 公開鍵暗
-
初心者でも分かるビットコインの仕組みについてまとめてみた。
ビットコインは,時価総額が1位で最も有名な仮想通貨です. 仮想通貨の時価総額の見方について
-
【仮想通貨】新しいトランザクション(取引)の追加方法【ブロックチェーン】
仮想通貨で用いられているブロックチェーン技術において、新しいトランザクション(取引)をどのよ
-
【Solidity】 イーサリアムでコントラクトを生成してみた。
スマートコントラクトプログラミングの高級言語の1つである Solidity を使って、イーサ
-
【ビットコイン】ハッシュ関数(SHA-256・RIPEMD-160)について調べてみた。
ビットコインなどの仮想通貨で使用されているハッシュ関数(hash function)という技
-
【ビットコイン】承認されたブロックを見てみる【ブロックチェーン】
ビットコイン(BitCoin)の公開台帳であるブロックチェーンについて、新たに承認されたブロ
-
【仮想通貨】デジタル署名と公開鍵暗号の違いは!?
ビットコインなどの仮想通貨のブロックチェーン技術で用いられている「デジタル署名」「公開鍵暗号
-
【イーサリアム】クライアントソフト geth を使ってみた。
イーサリアムのクライアントソフト geth をインストールして使ってみました。 クライ
-
【イーサリアム】 ハッシュ関数(Keccak-256)について調べてみた。
仮想通貨の1つであるイーサリアムで用いられているハッシュ関数「Keccak-256」について
-
【仮想通貨】デジタル署名について調べてみた【ブロックチェーン】
ビットコインなどの仮想通貨のブロックチェーンで用いられているデジタル署名(Digital s