ブロックチェーンが改ざんできない仕組み
この記事はブロックチェーンAdvent Calendar2日目の記事です。
前の日:翻訳どうやってデジタル世界で信頼の自動化を実現できる?
ブロックチェーンの特徴である「改ざんできない仕組み」について、自分も含め「これからブロックチェーンを学んでいきたい」という人向けに図を交えながらまとめました。
1. まずはざっくりと
ブロックチェーンは、とても簡単に言うと「記録が詰まったブロックが連なっているもの」
このブロックは一定間隔でどんどん新しいものが追加されているのですが、その連なり方には特徴があって、ただ順番に番号が付けられているだけではなく全てのブロックが1つ前のブロックの情報を受け継いで作られています。
ブロックがチェーンのように連なっている、これがブロックチェーンです。
もう一つ、ブロックチェーンの特徴にブロックを1つ追加するのがとても大変だという点があります。
どれくらい大変かというと、世界中の多数のPCが一斉に処理をして約10分かけてやっと1つブロックを追加できる、というレベルです。
- 1つ前の情報を受け継いでブロックが作られている
- ブロックを1つ追加するのがとても大変
なぜこんな仕組みになっているのか?
これこそがブロックチェーンの改ざんを難しくしている、つまりブロックチェーンの信頼性を高めているポイントです。
どういうことか説明します。
例えば、過去のある時点ブロックに詰め込んだ記録を書き換えようとしたとします
1つ目の「1つ前の情報を受け継いでブロックが作られている」というルールを守るためには
そのブロック以降全てのブロックも書き換えないと辻褄が合わなくなってしまいます。
このルールに当てはまらないものは、チェーンの中に含まれることを許されません。
じゃあ頑張って書き換えれば改ざんに成功するのでは?
それを事実上不可能にしているのが「ブロックを1つ追加するのがとても大変」という仕組みです。
世界中のPCが10分かけてやっていることを、いち個人ないしいち集団がそれを上回るペースで行わない限り、新しいブロックの追加に追いつくことはできません。
以上の理由から、ブロックチェーンは改ざんが事実上不可能な、極めて信頼性の高い記録の仕組みといえます。
2. ちょっと深掘り
もう少しそれぞれの仕組みについて深掘ってみます。
ブロックの中身
ブロックはコンテナ型のデータ構造になっており、その中身はトランザクションと呼ばれる取引の記録と、いくつかのメタデータを持つブロックヘッダーで構成されています。
ブロックの容量には上限があり、その大部分はトランザクションが占めていますが、ブロックチェーンを構成するうえではブロックヘッダーが大事な役割を担っています。
ブロックヘッダーが持つメタデータ
- 1つ前のブロックの指紋(Previous block hash)
- 自身のブロック内にあるトランザクションの要約(Markle Root)
- マイニングに必要な情報
1つ前のブロックの指紋(Previous block hash)というのは、1つ前のブロックが持つブロックヘッダーのデータを、SHA256というアルゴリズムを使ってハッシュ化したもので、このハッシュと呼ばれる文字列はとても小さなデータサイズでありながら元のデータを識別することができる、人でいうと指紋のようなものです。
前半で「1つ前の情報を受け継いでブロックが作られている」と表現したのはまさにこの部分で、仮に1つ前のブロックに含まれるトランザクションの内容が違えば、その要約も変わり、ブロックヘッダーのデータ自体も変わるので生成される指紋も違ったものになります。
ブロックの追加
ブロックチェーンに新しくブロックを追加するには
- トランザクションをブロックに追加
- その要約をブロックヘッダーに記入
- 前のブロックヘッダーの情報から指紋を作成して自身のブロックヘッダーに記入
これで完了!!
というわけにはいきません。
実はブロックヘッダーに含まれるマイニングに必要な情報の中には、ブロックチェーンに新たにブロックを追加するための「条件」が含まれています。
その条件は
1つ前のブロックハッシュ(文字列)+ [とある値] をハッシュ化した時に、特定の文字列 になるような [とある値] を求めなさい
といったもので、詳細は省きますがハッシュ化というのは不可逆な処理のため
「2+[とある値]=5」なら[とある値]は「3」
というように逆算することができず、結果が特定の文字列になるまでひたすら総当りで[とある値]を変えて求めて行く必要があります。
この[とある値]は、わかってしまえば代入して答え合わせをするのは簡単なので、すでに追加されたブロックが正しいものかどうかは簡単に検証できるという仕組みになっています。
そしてこの正しい[とある値]を見つけて新たにブロックを追加することがマイニングと呼ばれるもので、この総当りで[とある値]を見つける作業に膨大な計算処理能力が求められるのです。
この仕組みのおかげでブロックチェーンは改ざんできないということが担保されています。
※ マイニングは報酬を求めて競い合っているので、仮に上述の改ざんを実現できるほどのハイスペックなマシンを持っているなら、マイニングをしてその報酬をもらえば良いということになります。
さいごに
まだまだ勉強不足なので表現が正確でない部分も多々あるかと思いますが、この内容を見て少しでもブロックチェーンに興味を持ち、もっと知りたいと思ってもらえたらと幸いです。