ブロックチェーンはなぜ改ざんできないのか?仕組みをわかりやすく解説!
今回は、「ブロックチェーンの仕組み」について解説します!
以前紹介した「ブロックチェーンとは何か」という記事から、少し踏み込んだ解説になります。
少し技術的な部分にも触れながら、ブロックチェーンの仕組みについて詳しく解説していこうと思います。
最後は「なぜ改ざんに強いのか」ということも解説します。
それでは気合を入れて、解説していきます。
ブロックチェーンはなぜ改ざんできないのか?
ブロックチェーンの改ざんが非常に困難な理由は大きく分けて二つあります。
それは以下の二つです。
「改ざんしたブロックとそれ以降のすべてのブロックについてマイニングを行う必要がある」
「自分一人のデータを変えたところで周りの人のブロックチェーンは変わらない」
「自分一人のデータを変えたところで周りの人のブロックチェーンは変わらない」については、以下の記事が参考になると思います。
是非こちらも一緒にご覧ください。
本記事では、「改ざんしたブロックとそれ以降のすべてのブロックについてマイニングを行う必要がある」という、ブロックチェーンのデータ構造の特徴・仕組みについて解説していきます。
ブロックチェーンの構造
ブロックチェーンの仕組みを理解する上で、非常に重要となってくるのが、「ブロックチェーンの構造」です。
ブロックチェーンとは、その名の通り「ブロック」が「チェーン状につながっている」というデータ構造になります。
こんなイメージですね。
では、その一つ一つのブロックが「どのような要素から構成されているか?」を解説します。
ブロックの3要素
まず、ブロックの中身ですが、ここでは主に3つの要素を取り出して考えます。
その要素とは、
- 「トランザクション情報」
- 「前のブロックのハッシュ値」
- 「ナンス」
この3つになります。(これら以外にも「タイムスタンプ」などがあるのですが、ここでは、ブロックチェーンの根幹を担っているこの3要素について解説します。)
それぞれの要素が、「どのようなものなのか?」「どのような役割を担っているのか?」について詳しく見ていきましょう。
ブロックの要素①:トランザクション情報
まず、ブロックには、「トランザクション情報」というものが入っています。
これは、ブロックチェーンの中で保管する「データ」そのものになります。
言い換えれば、「伝えたいデータ」「メインのデータ」です。
ブロックチェーン技術が使われている有名な仮想通貨「ビットコイン」でいえば、「AさんからBさんへ1ビットコイン送金します。」といった取引データになりますね。
ブロックの要素②:前のブロックのハッシュ値
次に、「前のブロックのハッシュ値」というものがあります。
これは、ブロックチェーンの「チェーン」に相当する重要な要素で、超重要な要素です。
まずは、こちらの図をご覧ください。
下のほうに書いてある「ハッシュ値」というのは、そのブロックの情報を暗号化した値です。
この「ハッシュ値」は、一つ一つのブロックについて計算される値で、そのブロックのほぼすべてのデータをもとに計算されます。
ハッシュ値の生成は、以下のようなイメージです。
そして、あるブロックのハッシュ値は、その次のブロックに保存されます。
それがブロック内に書かれている「前のブロックのハッシュ値」になります。
ちょっとややこしいですが、要は、
「ブロックは、その一つ前のブロックのハッシュ値を保持している」ということです。
ブロックを3つ表示するとこんな感じ。
ひとつ前のハッシュ値が次のブロックにもつながっているというイメージが持てるのではないでしょうか。
また、この「ハッシュ値」というものには、面白い特徴があります。
それは、「ブロックの情報が少しでも変わると、全く異なる値に変わる」という特徴です。
つまり、データをちょこっと変えただけでも、ハッシュ値は全く違う値に変わってしまうということです。↓
この変更は次のブロックにも影響します。
その次のブロックに含まれる「前のブロックのハッシュ値」が変わってしまうのです。↓
そうすると、右のブロックの情報が変わってしまったのですから、当然、右のブロックのハッシュ値も全く異なる値に変わるのです。
このように考えると、
あるどこかのブロックの情報を少しでも変えると
それ以降のブロックの情報(特にハッシュ値)が変わってしまう
というのがわかります。
この「前のブロックのハッシュ値」を持つことが、前のブロックとのつながりになり、チェーンの仕組みとなっているのです。
ブロックチェーンは、このデータ変更が後ろのブロックにも影響するという特徴を利用して、データの改ざんを困難にします。
しかし、「ハッシュ値が変わったからなんなの?」と思うでしょう。
実は、このハッシュ値こそがブロックチェーンの鍵となっているのです。
次は、ハッシュ値と深く関係のある「ナンス」について見ていきましょう。
ブロックの要素③:ナンス
最後に、ナンスというデータを説明します。
まず、ひとつひとつのブロックは、ハッシュ値が計算されるといいました。
そのハッシュ値には、ある特別な制約があります。
制約をクリアしていないハッシュ値を生成するブロックは、改ざんされたブロックと判断されてしまうため、どうにかしてその制約を満たしたハッシュ値にする必要があります。
その時に使われるのがナンスです。
ナンスとは「ブロックのハッシュ値を調整する値」です。
新しいブロックを生成するときは、制約をクリアしたハッシュ値を生成するように、この「ナンス」の値を変えてブロックのハッシュ値を調整するということをしています。
この処理が「マイニング」で、これらの処理を行う組織などが「マイナー」と呼ばれています。
この「ナンス」「マイニング」「ハッシュ値に関する特別な制約」については以下の記事で詳しく解説しています。
マイニングは、ブロックチェーンの仕組みを理解するのには欠かせない処理ですので、ぜひご覧ください。
ブロックチェーンが改ざんできない仕組み
まず、ブロックチェーンには、どこかのブロックの情報を改ざんした場合、そのブロック以降のハッシュ値が変わるという特徴がありますね。
それは、ブロックが「前のブロックのハッシュ値」を保持しているからでした。
そうすると、その改ざんしたブロックを含め、それ以降のすべてのブロックのハッシュ値の制約が崩れます。
ハッシュ値が制約を満たしていないブロックは正常なデータとして認められません。
なので、それらのブロックすべてに再度「マイニング」を行わないといけません。
しかも、マイニングは非常に高性能のコンピュータが時間をかけて行う処理です。
また、どんどん新たなブロックが生成されてはブロックチェーンの最後尾につながっていくため、個人がいくら頑張ってマイニングをしても、ブロックの生成に追いつかないのです。
これが、膨大なコンピュータパワーで時間を使ってまでマイニングをする理由です。
まとめると、
過去のブロックのデータを書き換えるには、
「改ざんしたブロック以降のすべてのブロックについてマイニングを行う必要がある」
のです。そして、
「頑張ってマイニングをしても、ブロックの生成速度に追いつくことが非常に困難」
これが、ブロックチェーンが改ざんに強いといわれている理由です。
もし高性能のコンピュータを集めて、ブロックチェーンの改ざんを企むくらいなら、そのコンピュータパワーを使ってマイニング報酬を得たほうが良いです。
仮にデータを改ざん後に、それ以降のすべてのブロックのマイニングを行うことができたとしたらどうでしょうか。
そうすると、すべてのブロックはハッシュ値について制約を満たすことができ、単体で見れば正常なデータなのです。(改ざん成功?)
ですが、ブロックチェーンは「分散型台帳」とも呼ばれるデータの管理方法をしています。
つまり、その改ざんしたブロックチェーンは、「みんなが持っているうちのたった一つのもの」だということです。
ほかの人が持つブロックチェーンは元の正常なデータのままなのです。
つまり、「お前のデータだけ違うじゃん」っていう状態になってしまいます。
せっかく頑張ってすべてのブロックをマイニングしたとしても、ほかのみんなとデータが違うから「そのデータは違うだろ」と判断されるのです。
この二つの理由が強力なセキュリティの壁となります。
とてもわかりやすい解説動画!
今解説したすべてを説明してくれている動画を紹介して、仕組みの解説は終わりにします。
私が一番わかりやすいと思ったのは、以下の動画です。
具体的に値を入れて、ブロックチェーンがどのように形成されているのかをとてもわかりやすく解説してくれています。
今説明した情報をある程度頭に入れてこの動画を見れば、大体の仕組みが理解できると思います。
まず、ブロックチェーンを理解するには、「実際にブロックチェーンの構造に触れてみること」が一番いいと思います。
最後に
今回は、「ブロックチェーンの構造・仕組み」について解説しました。
ブロックチェーンがなぜ改ざんされにくいのかを、構造や仕組みの部分から解説しました。
仮想通貨で使われているブロックチェーンですが、その仕組みを知っておくことは結構重要なことなのではないかと思います。
ほかにも、ブロックチェーンを使ったアプリなども登場していますから、ブロックチェーンの今後の成長に目が離せませんね。
本記事で分かりにくい点、間違っている点などあればぜひ教えてくださいませ。(@ima_maru)
以上「ブロックチェーンはなぜ改ざんできないのか?仕組みをわかりやすく解説!」でした!