ブロックチェーンのデータ構造

出典:経済産業省
ほかの技術知識

 P2Pネットワーク上で機能する ブロックチェーンを利用する技術(分散型台帳技術やビットコイン)について勉強する中で「ブロックチェーン」そのものについて掘り下げたときのメモ。

ブロックチェーンの4つの構成要素
1.ピア・ツー・ピア(P2P)ネットワーク
2.コンセンサス・アルゴリズム(PoW、PoS、PDFTなど)
3.電子署名・ハッシュ関数
4.スマートコントラクト

データ構造

 ブロックチェーンの「台帳」では、台帳が作成されて最初に発生した取引から最新の取引に至るまでの全ての取引の履歴を「ハッシュ」で短いデータにしたもの を全参加者で共有している。

 ※金銭的な取引を例に考える。

 ブロックチェーンでは「AさんからBさんに1,000円渡した」というような取引の情報を格納する単位を「ブロック」と呼び、1つのブロックに複数の取引が含まれている。そして、月締めの出納帳で、今月の頁の1行目に前月の残高を前記繰越で記入するように、新しい「ブロック」は1つ前の「ブロック」の情報を反映することで始まる。
「ブロック」の連結数を増やしていくことで、取引情報が詰まった「ブロック」が時系列に繫がってチェーン(鎖)になっていく。

耐改ざん性の仕組み

 原則として中央管理者が不在のP2Pネットワーク上で機能するブロックチェーンでは、①各取引に不正がないこと、②ブロック間の連結に不正がないこと、をブロックチェーン自身のデータを保持する仕組みによって担保する必要がある。改ざんを防ぐ基本技術として、公開鍵暗号方式と暗号学的ハッシュ関数を利用する。

ブロックチェーンのデータ構造。耐改ざん性を考慮する場所は2か所ある。

各取引の耐改ざん性

  • 送信者が、対象データのハッシュ値を秘密鍵で暗号化したものを署名として取引相手に送る
  • 受信者が署名を公開鍵で復号してハッシュ値が一致すると検証成功となる-->対象データを送信者が認めた、という証拠になる

ブロック間の耐改ざん性

 新しいブロックに引き継ぐためのハッシュ(ブロックのハッシュ)を作る材料として「ブロック内の全取引を要約した情報」「前ブロックのハッシュ」「ナンス」という3つの情報が必要となる。このうち、「 ブロック内の全取引を要約した情報 」「前ブロックのハッシュ」は固定値だが、「ナンス」の値は決まっていない。新しく作る「ブロックのハッシュ」の値は何でもよいわけではなく、たとえば「最初のn桁が全て〇〇となっていること」のような一定の条件があるので、この条件を満たすために、ナンスの値を調整する。

条件に合うハッシュ値を作るための「ナンス」を探す行為をマイニングという
「ナンス」を探すのがマイニング

 適切なナンスを探す作業を「マイニング」と呼ぶ。これは完全な運頼みの作業で、総当たり的にひたすら計算をするしかない。そのため、ナンスを導くには途方もない数の試行が必要となり、それを実行するサーバーの処理能力と時間、そして膨大な電力が消費される。


 ブロックチェーンのデータ構造に依拠する耐改ざん性を前提として、チェーンの伸び方の「正しさ」を判定するアルゴリズムである「コンセンサスアルゴリズム」を考えることになるが、それについてはまたそのうちに。