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

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

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

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

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

Contents

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(労働) の成果の結果を証明するための値となります。

関連記事

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

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

記事を読む

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

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

記事を読む

【イーサリアム】 ホリエモンが2014年当時にイーサリアムの可能性に気付いていた!?

ホリエモンこと堀江氏が、2014年の自身のブログで「イーサリアムやべぇ。。。」というタイトル

記事を読む

初心者でも分かるビットコインの仕組みについてまとめてみた。

ビットコインは,時価総額が1位で最も有名な仮想通貨です. 仮想通貨の時価総額の見方について

記事を読む

【イーサリアム】 公開鍵暗号について調べてみた。

仮想通貨の1つであるイーサリアムでは、公開鍵暗号という技術が使われています。 公開鍵暗

記事を読む

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

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

記事を読む

【Solidity】 イーサリアムでコントラクトを生成してみた。

スマートコントラクトプログラミングの高級言語の1つである Solidity を使って、イーサ

記事を読む

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

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

記事を読む

【イーサリアム】クライアントソフト geth を使ってみた。

イーサリアムのクライアントソフト geth をインストールして使ってみました。 クライ

記事を読む

【MetaMask】イーサリアムのウォレットを使ってみた【テスト環境】

今回、イーサリアムのウォレットの1つである MetaMask(メタマスク)を使って、テストブ

記事を読む

無料動画編集ソフト AviUtl で mp4 形式の動画を読み込み・出力する方法【Windows】

今回は、無料動画編集ソフト AviUtl で mp4 形式の動画を読み

【Cubase】イヤホンから音がでないときの対処方法。

Cubase でイヤホンから音がでなくなったときの対処方法のメモです。

【Cubase】特定のトラックを無効にする方法。

今回は、Cubaseで特定のトラックのみを無効にする方法について紹介し

【転移学習】学習済みVGG16 による転移学習を行う方法【PyTorch】

今回は、PyTorch を使って、学習済みのモデル VGG16 を用い

【PyTorch】畳込みニューラルネットワークを構築する方法【CNN】

今回は、PyTorch を使って畳込みニューラルネットワーク(CNN)

→もっと見る

PAGE TOP ↑