最終更新:
【仕組み解説】ブロックチェーンはどうやって改ざんを防いでいるのか — 分散台帳の仕組みを図解
前のハッシュでつながる記録
ブロックチェーンって「改ざんできない」ってよく聞くけど、どういう仕組みなの?
取引の記録をブロックにまとめて、ハッシュという値で鎖のようにつなぐ仕組みだよ。ビットコインでは複数のコンピュータが記録を検証し、どの履歴を採用するか決める。「絶対に書き換えられない」のではなく、書き換えを検出し、偽の履歴を受け入れさせにくくしているんだ。
ブロックの中には何が入っているの?
ハッシュ値って、どうやって書き換えを見つけるの?
ハッシュはデータから計算する「指紋」のような値だよ。安全な暗号学的ハッシュでは、書き換えても同じ値になるデータを意図的に探すのは非常に難しい。過去の取引を変えると通常はそのブロックのハッシュも変わり、後続が参照している値と食い違う。ただし、照合は必要だし、ハッシュの鎖だけで再計算を防げるわけではないんだ。
じゃあ後ろのブロックも全部計算し直せばいいんじゃないの?
でも、参加者が結託したら不正ができるの?
お金以外にも使えるの?例えば荷物が届いたら自動で支払うとか?
スマートコントラクトなら、決めた条件に応じた処理を書けるよ。ただし荷物が届いた事実をチェーン自身が知るわけではなく、外部情報を取り込むオラクルなどが必要。その情報が間違えば処理も誤るから、記録の改ざん対策と、入力情報が本当かどうかは分けて考えよう。
なるほど、使えば何でも信用できるわけじゃないんだね!
そのとおり。履歴を共有して検証する仕組みと、合意を支える条件がそろってこそ意味があるんだ。誰が検証するのか、攻撃者がどの程度の資源を持てるのか、外部の情報を誰が保証するのかを考える必要がある。中央管理で十分な用途もあるから、目的に合わせて選ぼうね。
「記録が変わった」と「記録が本当」は別
たとえば荷物の受け渡し記録を共有するとします。「受け取った」という記録を後から書き換えたら気づけることと、実際に荷物が届いていたことは、別の問題です。ブロックチェーンの改ざん対策を理解するときは、この違いを出発点にすると整理しやすくなります。
図のH1は、ブロック1から計算したハッシュを短く表す記号です。ブロック1を書き換えて値が変われば、ブロック2が持っている「前のハッシュ」と食い違います。ただし後ろも再計算される可能性があるため、ビットコインではPoWと履歴の検証も関わります。
読んだ後は、①誰が記録を検証するか、②書き換えた履歴を採用させにくくする条件は何か、③現実の出来事を誰が入力するか、を一つずつ確認してみましょう。計算で指紋を作る考え方はハッシュ値、方式の違いはPoWとPoSで補えます。