【Web3学習 #06/30】ブロックチェーンはなぜ改ざんしにくいのか
3本目の最後で、私はこう書きました。
「みんなが同じものを持っているから」までは分かりました。
でも、なぜそれで書き換えられないのかを、人に説明できるほどは分かっていません。
今回は、その続きです。
1本目でも、3本目でも、私はこの問いを「まだ分からないこと」として書きました。
二回書いて、二回とも先に進めていません。
その前に、「ハッシュ」で止まりました
調べ始めて、すぐに止まりました。
どの説明にも「ハッシュ」という言葉が出てきます。
でも、それが何なのかが分かりません。
先に、そこを調べました。
ものすごく簡単に言うと、こういうものでした。
データから作る、そのデータ専用の指紋のようなもの。
たとえば「こんにちは」という文字を、ハッシュ関数という仕組みに通します。
すると、決まった長さの文字列が出てきます。
これが、そのデータの指紋です。
次に、「こんにちは」を「こんにちわ」に変えてみます。
たった1文字の違いです。
でも、出てくる指紋は大きく変わります。
もう一つあります。
出てきた指紋から、元の「こんにちは」を簡単に逆算することはできません。
図にすると、こうなります。
元のデータ
↓
ハッシュ関数
↓
データを表す「指紋」言葉を分けておきます。
・ハッシュ関数:指紋を作る仕組みのほう
・ハッシュ値:出てきた指紋の、正式な呼び名
大きく変わるのは、指紋のほうです。
今の私は「データ専用の指紋のようなもの」と理解しています。
自分で試してみました
ここまでは、読んでなんとなく分かった、というくらいでした。
そのあと、実際に手を動かしてみました。
今回は「SHA-256」というハッシュ関数で試しています。
よく使われているもののひとつのようです。
ハッシュ関数には種類があって、出てくる指紋の長さも違います。
SHA-256の場合は、64文字でした。
文を一つ入れて、指紋が出るのを見ます。
そのあと、1文字だけ変えます。
出てきた指紋は、大きく変わりました。
64文字のうち、56文字が違っていました。
こうなるのか、と思いました。
読んで知っていたことと、目で見たことは、別でした。
「ブロック2も、同じように書き換えればいいのでは」
ここから、実際に改ざんを試してみます。
ブロックを3つ並べて、鎖のようにつなげました。
1つ目のブロックの「こんにちは」を「こんにちわ」に変えます。
すると、つながりが合わなくなりました。
ここで、私はこう思いました。
「じゃあ、ブロック2にある『こんにちは』も『こんにちわ』に変えればいいのでは」
同じように直せば、つじつまが合うはずだ、と。
でも、これは勘違いでした。
ブロック2に、ブロック1の文がコピーされているわけではないのです。
ブロック2に入っているのは、ブロック1の指紋のほうでした。
3本目で「新しいページには、1つ前のページとつながっていることを確認できる情報が入っている」と書きましたが、その情報の正体が、これです。
ビットコインの論文の4章にある図にも、ブロックの箱の中に「Prev Hash」という欄があります。
前のブロックの指紋、という意味です。
「じゃあ、その指紋を書き換えればいいのでは」
では、次です。
ブロック1を書き換えると、ブロック1の指紋が変わります。
でもブロック2には、変わる前の指紋が書いてあります。
だから合わなくなるわけです。
なら、簡単な話に思えます。
「ブロック2に書いてある指紋のほうを、新しいものに書き換えればいい」
ところが、ここで詰まりました。
ブロック2の中身を書き換えると、今度はブロック2自身の指紋が変わります。
ブロック2の指紋も、別のものになってしまうのです。
すると、ブロック3が「前の指紋が違う」となります。
だからブロック3も直す。
すると、ブロック3の指紋も変わる。
ブロック4も直す。
ブロック5も。
一つ直すと、その後ろが全部ずれていきます。
ここまで手を動かしてみて、私はこう感じました。
次のブロックを改ざんするのは、非常に難しい。
「合いません」と言うのは、誰なのか
ここで、もう一つ引っかかりました。
私の実験で「つながりが合いません」と出したのは、手元の画面です。
本物のネットワークでは、それを誰が言うのでしょうか。
イーサリアムの公式サイトに、こう書いてありました。
記録を受け取ったコンピューターは、送られてきたものをそのまま信じるのではなく、自分のところでも中身を確かめています。
ルールに合わないものは、そこで捨てられます。

3本目で「ノード」という言葉を「同じ記録を持っている仲間の1台」と書きましたが、その1台1台が、これをやっているわけです。
3本目で私は「みんなが同じものを持っているから」と書きました。
でも、持っているだけでは理由になりません。
持っているのではなく、それぞれが確かめている。
3本目の私は、ここが抜けていました。
「では、後ろを全部やり直せばいいのでは」
ここまで来て、やっと、こう思いました。
「後ろのブロックを全部計算し直せば、改ざんできるのではないか」
ビットコインの論文の4章に、その答えがありました。
あるブロックを変えるには、そのブロックの計算をやり直す必要がある。
そして後ろにブロックがつながっていくので、その手間には、それ以降のブロックを全部やり直す手間が含まれる、と。
ここで、私は言葉を分けて考えるようになりました。
データそのものを書き換えることと、それを正しいつながりとして通すことは、別です。

書き換えた履歴を有効なものとして成立させようとすると、そのブロックから後ろのぶん、計算をやり直すことになります。
では、その「やり直す計算」とは何でしょうか。
ビットコインでは、新しいブロックを足すときに、条件に合う指紋が出るまで、値を変えながら何度も計算しています。
試す → 条件に合わない
試す → 条件に合わない
試す → 条件に合わない
……
やっと条件に合った → ブロックを追加3本目で書いた「マイニング」が、この作業です。
この仕組みを、正式には「Proof of Work」といいます。
日本語では「仕事量による証明」などと訳されるようです。
今の私は「新しいブロックを足すために、わざと大変な計算をさせる仕組み」と理解しています。
つまり、改ざんした人は、指紋を書き直すだけでは済みません。
書き換えたところから後ろのぶん、この大変な計算を全部やり直すことになります。
しかも、その間にも、ほかの人たちが作っている記録のほうは先へ進んでいます。
追いかけながら、追い越さなければいけないわけです。

でも、全部が「Proof of Work」なのでしょうか
ここで気をつけたいことがあります。
「ブロックチェーンが改ざんしにくいのは、Proof of Work があるからだ」とは書けません。
3本目でも触れましたが、すべてがマイニングというわけではないからです。
イーサリアムは、いま「Proof of Stake」という別の仕組みを使っています。
改ざんを難しくする仕組みは、すべてのブロックチェーンで同じではないようです。
ここは今回、これ以上は追いませんでした。
追いかけると、また知らない言葉がたくさん出てきそうだったからです。
まとめ ―「できない」ではなく「正しい記録として通すのが難しい」
今回、いちばん意外だったことを書きます。
私が読んだ範囲では、公式の資料は「改ざんは不可能だ」という書き方をしていませんでした。
ビットコインの論文は、確率で書いています。
イーサリアムの公式サイトも、「不可能」ではない言い方をしていました。
私が調べる前に思っていたのは、「そういう技術だから、書き換えられない」でした。
でも、実際はこうでした。
書き換えること自体は、できる。
ただし、後ろを全部作り直さないと、つながりが合わない。
作り直すには、大変な計算をやり直すことになる。
その間にも、ほかの記録は先へ進んでいる。
そのうえ、受け取った側が確かめて、合わないものは捨てる。
だから、過去を書き換えた記録を「正しい記録」として通すのが難しい。
悪いことをしようとする人がいない、という話ではありません。
いても通らないようにしてある、ということでした。
1本目で、私はこう書いていました。
「中央管理ではない=絶対に安全」という単純な話ではありません、と。
今回調べてみて、なぜ改ざんしにくいのかが、よく分かりました。
次に知りたいこと
今回のハッシュの話は、読むだけだと私も分かりませんでした。
同じところで止まっている方がいたら、一度ご自分の手で試してみると、見え方が変わるかもしれません。
そして、ここまで調べて、もう一つ思ったことがあります。
これだけの手間をかけて守られているものは、何なのでしょうか。
3本目で、私はこう書きました。
ビットコインには紙のお札も硬貨もなくて、ブロックチェーンに「この人が1ビットコイン持っている」と記録されているだけです、と。
記録があるだけです。
それなのに、値段がついています。
次に知りたいのは、「ビットコインは、なぜただのデータなのに価値があるのか」です。
次は、そこを調べます。
Web3のことを、53歳の初心者が調べながら書いています。
noteに書ききれなかったことや、あとから間違いに気づいて直したことを、ときどきメールでお送りしています。
登録していただくと、すぐに特典をお送りします。
「怪しい」と思ったときに自分で確かめられる、公式ページの一覧です。
金融庁や警察庁のページを、場面ごとにまとめました。
▼登録はこちら
https://mail.os7.biz/add/LNa6
※登録すると確認のメールが届きます。そのメールのリンクを押すと、登録が完了します。
※配信は不定期です。いつでも解除できます。
