取引記録をブロックとして連鎖させ改ざんを困難にする分散台帳技術。
ブロックチェーンとは、取引記録をまとめた「ブロック」を鎖のように連鎖させ、改ざんを困難にした分散台帳技術のことです。分散台帳(=多数の参加者が同じ記録を共有する帳簿)なので、特定の管理者がいなくても取引を信頼できる形で残せます。
身近な例で考えると、1ページずつ封印しながら書き足していく帳簿に似ています。各ページの末尾には「前のページの内容を表す印(ハッシュ)」が書かれていて、後からどこか1ページを書き換えると、そこから後ろの印がすべて食い違ってしまうため、不正がすぐ見つかります。
上のツールでは5つのシナリオを切り替えられます。①ハッシュ連鎖と改ざん検出、②PoWマイニング、③分散合意とフォーク、④マークルツリー、⑤デジタル署名です。まずは①で▶ボタンを押し、ブロックがハッシュでつながり改ざんが検出される流れを確認してみてください。
連鎖を支えているのがハッシュ(=ハッシュ関数で求めた、データの指紋のような短い値)です。ハッシュには2つの大事な性質があります。
・同じ入力からは必ず同じ値になる
・入力が1文字でも変わると、まったく違う値になる(雪崩効果)
各ブロックは「直前のブロックのハッシュ(前ハッシュ)」を自分の中に含みます。つまり「前ブロックの自ハッシュ=次ブロックの前ハッシュ」が全部一致することで、順番の固定された鎖(ハッシュチェーン)ができます。これは前のブロックを指し示すという意味で、ノードが1つ前を指す連結リストの考え方にも似ています。
この仕組みのおかげで、1つのブロックの内容は、その後ろの全ブロックのハッシュに影響します。途中を書き換えると、そのブロック以降のすべてのハッシュを計算し直さないとつじつまが合わなくなり、これが改ざんを極めて困難にしています。シナリオ①のハッシュ照合表で、各ブロックがつながっているかを確認できます。
改ざんに強く、特定の管理者なしで信頼できる記録を残せるという特長から、ブロックチェーンは次のような分野で使われます。
・暗号資産(仮想通貨):ビットコインなどの送金記録を改ざんできない台帳として共有する。最初の代表的な応用例
・スマートコントラクト:契約の条件と実行を自動化したプログラムをチェーン上に置き、決められた条件が満たされたら自動で処理する仕組み
・流通の追跡・証明:食品や部品が「いつ・どこを通ったか」を記録し、産地や正規品であることを後から証明する
このようにブロックチェーンは、金融サービスとITを組み合わせたフィンテック(=Finance+Technology)を支える基盤技術の1つとして注目されています。「みんなで同じ帳簿を持ち、後から書き換えられない」という性質が、信頼を必要とするさまざまな場面で役立っているのです。
マイニング(採掘)とは、新しいブロックをチェーンに追加する権利を、計算競争によって決める仕組みです。中央の管理者がいない世界で「次に誰がブロックを書くか」を公平に決めるための工夫です。
その中心がPoW(Proof of Work=仕事量による証明)です。ブロックにはnonce(ナンス=自由に変えてよい使い捨ての数値)という欄があり、マイナーはここを変えながら、ブロック全体のハッシュが「先頭に決められた数だけ0が並ぶ値」になるものを探します。この0の個数が難易度で、多いほど見つかりにくくなります。
重要なのは「探すのは大変だが、確認は一瞬」という非対称性です。条件を満たすnonceを見つけるには総当たりで膨大な計算が要りますが、見つかったnonceを使えば、他の人は1回ハッシュを計算するだけで正しさを確認できます。膨大な計算を実際に費やした証拠(仕事量の証明)があるからこそ、その人がブロックを作る権利を持つと皆が納得できるのです。シナリオ②で、nonceを変えながら条件を満たす値を探す様子を確認できます。
ブロックチェーンには中央の管理者がいません。世界中の多数のノード(=参加するコンピュータ)が、対等な立場で同じチェーンのコピーを持ち合うP2P(ピアツーピア)ネットワークです。では、管理者なしでどうやって「正しいチェーンはどれか」を全員で一致させるのでしょうか。
ときどき、2人のマイナーがほぼ同時にブロックを採掘し、チェーンが一時的に枝分かれすることがあります。これをフォーク(分岐)といいます。このとき使われるのが最長チェーンルールです。
・最も長く伸びたチェーンを正とする
・短い枝のブロックは破棄される(オーファンブロック=本流から外れた孤立ブロック)
この仕組みは改ざんへの強さにもつながります。一度埋まったブロックを書き換えるには、それ以降を全部作り直し、さらに本流に追いついて追い越すブロックを採掘し続けなければなりません。それには参加者全体の過半数(51%以上)の計算力が必要で、現実には極めて困難です。これを51%攻撃と呼びます。シナリオ③で、フォークが最長チェーンルールで解消される様子を確認できます。
実際のブロックには取引が1件ではなく、何百〜何千件もまとめて入ります。これらを効率よく1つの値にまとめるのがマークルツリー(ハッシュの木)です。
作り方は単純です。
・まず各取引をハッシュ化して、木の一番下の「葉」を作る(H1〜H4)
・隣同士をペアにしてさらにハッシュ化し、一段上のノードを作る(H12, H34)
・これを繰り返して、最後にルートハッシュ1つにまとめる
このルートハッシュ1つが、ブロック内の全取引を代表します。ブロックのヘッダにはルートハッシュだけを記録すればよく、取引が1件でも変わればルートまで変わるので、ルートを照合するだけで改ざんの有無が分かります。さらに、ある取引が含まれることを確認するのに全件ではなく木の経路(マークルパス)のハッシュだけ調べればよく、検証がとても効率的になります。シナリオ④で、葉からルートへ木が組み上がる様子と改ざんの伝播を確認できます。
ハッシュチェーンは「記録の改ざん」を防ぎますが、もう一つ大事な問題があります。その取引が本当に本人によるものかです。これを保証するのがデジタル署名で、公開鍵暗号という技術を使います。
利用者は2つで1組の鍵を持ちます。
・秘密鍵:本人だけが持つ鍵。これで署名を作る
・公開鍵:誰に配ってもよい鍵。署名の検証に使う
秘密鍵で作った署名は、対応する公開鍵でしか正しく検証できない、という数学的な関係があります。
送信者は取引のハッシュを秘密鍵で署名し、取引と署名をセットでネットワークに流します。受け取った人は送信者の公開鍵で署名を検証し、取引から計算したハッシュと一致すれば「本人が出した・改ざんもされていない」と確認できます。逆に取引が書き換えられていればハッシュが食い違い、検証は失敗します。本人確認と改ざん検出を同時に実現できるのが署名の強みです。シナリオ⑤で、署名から検証までの流れを確認できます。