見出し画像

【本】森川夢佑斗「ブロックチェーン入門」感想・レビュー・解説

内容に入ろうと思います。
本書は、「ビットコイン」などの仮想通貨の中で使われた技術であり、現在では仮想通貨以外の応用法が様々に検討され、世の中を激変させるのではないか、と考えられている「ブロックチェーン」についての本です。

僕は最近ちょっと「ブロックチェーン」に関心があって、ちょっとずつ情報を仕入れるようにしているんだけど、本書は、「ブロックチェーン」がなんなのかまったく分からないような人でも読める入門書だと思います。

「ブロックチェーン」というのは、「インターネット上で中央集権的じゃなくても信頼できるシステムを作り出せる仕組み」という感じです。

例えば、フリマアプリの「メルカリ」のことを考えてみましょう。現在「メルカリ」で「ブロックチェーン」が使われているわけではありませんが、「中央集権的」の説明をしようと思って例に上げました。

「メルカリ」は、個人同士の売買の間に入ります。個人間の売買であれば、一番早いのは個人同士でやり取りすることでしょう。しかし、そう簡単ではありません。まず、インターネット上で簡単にお金を送る仕組みがまだありません(手数料が高かったり、信頼度が低かったりします)。それに、個人同士だと、何かトラブルがあった時に泣き寝入りするしかなくなるかもしれません。だから「メルカリ」が間に入って、お金の処理やもしもの時のトラブルに対処しているわけです。これが、「メルカリ」という「中央集権的」な存在を間に挟むシステムです。

「ブロックチェーン」というのは、この個人間にいる「中央集権的」な存在を無くしても信頼出来るシステムを構築出来るものとして注目されています。

「ブロックチェーン」の特徴として、

・特殊なデータ構造
・公開鍵暗号方式
・コンセンサスアルゴリズム

の三つが挙げられます。そしてこの中でも、「ビットコイン」を生み出した「サトシ・ナカモト(未だに正体が明らかになっていない謎の人物です)」が組み込んだ「プルーフ・オブ・ワーク(POW)」というコンセンサスアルゴリズムが非常に秀逸で、これが「ブロックチェーン」というシステムを、改竄や不正が出来ないものにしているのです。

では「POW」とは何かという説明をしていきたいと思います。そのために、「サトシ・ナカモト」が生み出した「ビットコイン」の仕組みを説明しようと思います。


「ビットコイン」は、10分毎に、その間のすべての取引データを「ブロック」と呼ばれる箱のようなものに入れます。で、この「ブロック」に名前をつけなければいけません。そして、この「ブロック」に名前を付けることが出来た人が、ご褒美として「ビットコイン」をもらえる、という仕組みになっています。このプロセスを「マイニング」と呼びます。

では、どんな風に名前を付ければいいでしょうか?

ここで「ハッシュ関数」というものが登場します。これが何なのかは僕にもちゃんと分かっていませんが、とにかく「仮想通貨」や「ブロックチェーン」の話ではこの「ハッシュ関数」がよく登場します。

ある数値を「ハッシュ関数」の中に入れると、「ハッシュ値」という答えが出てきます。で、この「ハッシュ値」の一つが、「ブロック」の名前になるんですけど、では何の数値を入れるでしょうか?それが、1つ前の「ブロック」の「すべての取引データ」です。

この点はまだうまく説明できませんが、「ブロック全体の情報(ここには、10分毎の取引データや、そのブロックの名前も含まれます)」を、数値(こんな感じだそうです→1f2258g36a1147v2c558h2174s6f5)に変換できるんだそうです。で、その数値に変換した取引データを「ハッシュ関数」に入れると、ある「ハッシュ値」が出てくるわけです。

しかし、ただ「ブロック全体の情報」を数値に変換したものを「ハッシュ関数」に入れるだけでは、誰でも簡単に「ブロック」に名前を付けることが出来てしまいます。なので、「ブロック」につける名前にはある条件があります。それは、「先頭に0が◯個(個数はその時々で変わる)つかなければならない」というものです。

例えば、先程の数値(1f2258g36a1147v2c558h2174s6f5)を「ハッシュ関数」に入れると、「000d5287r56fd247g56a2147」という「ハッシュ値」になるとしましょう。「ブロック」の名前は、先頭に0が10個続かないとダメ、となっていたら、この「ハッシュ値」は相応しくないことになります。とはいえ基本的には、「ハッシュ関数」に入れる数値一つに対して「ハッシュ値」が一つ対応することになります。だからこのままでは、別の「ハッシュ値」を導くことは出来ません。

そこで、「ナンス値」というものが出てきます。様々な「ナンス値」を数値と一緒にして「ハッシュ関数」に入れることで、0が先頭に10個続く「ハッシュ値」を探す、というわけです。

例えば、イメージではこんな感じです。

1f2258g36a1147v2c558h2174s6f5 + 0215(ナンス値)→01dr8574a65d958rtl
1f2258g36a1147v2c558h2174s6f5 + 5s68(ナンス値)→36s00d258a547r54cv

1f2258g36a1147v2c558h2174s6f5 + 3ss8(ナンス値)→0000004se85f4a96df4



1f2258g36a1147v2c558h2174s6f5 + 888q(ナンス値)→0000000000d5ff6y8a5

これで、数値に「888q」という「ナンス値」を加えることで、先頭に0が10個つく「ハッシュ値」を見つけ出すことが出来ました。

さて、ここまでの話をおさらいしましょう。

今、「POW」という仕組みの説明をしているのでした。この仕組みは、10分毎の取引データをまとめた「ブロック」に名前を付ける競争を皆でして、一番早かった人に報酬として「ビットコイン」が与えられる、というもので、「マイニング」と呼ばれています。

「ブロック」の名前は、「一つ前のブロック全体の情報から作られた数値」に「ナンス値」を加えることで、「先頭に0が◯個付く」という条件をクリアする「ハッシュ値」が相応しいものとして認められるわけです。で、この計算は、パソコンをガシガシ使って総当たりで計算しないと出来ません。だから、世界中の人が躍起になってこの競争に参加して、見事条件を満たす「ナンス値」を見つけることが出来れば、「ビットコイン」を「マイニング(発掘)」出来る、というわけです。

これで「POW」の説明は終わりですが、何故この「POW」が画期的な仕組みなのかを次に説明していきましょう。

もう一度おさらいすると、

【「ブロック」の名前は、「一つ前のブロック全体の情報から作られた数値」に「ナンス値」を加えることで、「先頭に0が◯個付く」という条件をクリアする「ハッシュ値」が相応しいものとして認められる】

わけです。では、ある「ブロック」の取引データを改ざんしたらどうなるでしょうか?

今、「改ざんされる前のブロック全体の情報から作られた数値」を、先ほどと同じく「1f2258g36a1147v2c558h2174s6f5」としましょう。これに「888q」という「ナンス値」を加えることで、次の「ブロック」の名前が「0000000000d5ff6y8a5」となったわけです。

では、「改ざんされた後のブロック全体の情報から作られた数値」はどうなるでしょうか?もちろん、「1f2258g36a1147v2c558h2174s6f5」とは違う値になります。ということはそれによって、次の「ブロック」の名前も「0000000000d5ff6y8a5」とは違う名前に変えなければ改竄したことがバレてしまいます。なんとかそれを、計算して相応しい名前に変えられたとしましょう。しかし、「ブロック全体の情報」には、「ブロックの名前」も含まれるので、「ブロックの名前」が変わってしまえば、「ブロック全体の情報から作られた数値」が変わり、それによってさらにその次の「ブロックの名前」が変わってしまう、ということになるわけです。

つまり、「ブロック」の情報のどこか一箇所でも改ざんしてしまえば、それ以降すべての「ブロック」の名前を相応しい名前に変更し続けなければ、改ざんしたことがバレてしまう、ということです。このような仕組みになっているから、「ブロックチェーン」というのは、不正や改ざんが極めてしにくいと考えられており、これを使うことで「中央集権的」なシステムを排除できると考えられているわけです。

「ブロックチェーン」には他にも、優れた仕組みが組み込まれています。

「ビットコイン」の「ブロックチェーン」では、誰かが相応しい「ナンス値」を発見したら、他の人がその「ナンス値」が相応しいかを計算し、「マイナー(マイニングする人のこと)」の過半数がその「ナンス値」を承認すれば、ブロックに名前が付くことになります。この「過半数が承認する」というところが重要です。この場合の「過半数」というのは、「人数」のことではなく「コンピューティング能力」のことを指します。パワフルなコンピュータを使っている人の方が、そうでない人より存在感が大きい、ということです。

この仕組みを逆手にとって、こんな不正を働くことができそうです。つまり、「マイナー」の全コンピューティング能力の51%以上を自分が保有して(つまり、超強力なコンピュータを何千台と繋げて)、本当は相応しくない「ナンス値」を「これが相応しい!」と自分が主張してしまう、というやり方です。「ナンス値」が相応しいかどうかは、過半数が承認すればいいわけで、自分がその過半数を占めてしまえば、実際には相応しくない「ナンス値」でも正しい「ナンス値」と認めさせることが出来るわけです。

でも、実際にはそうはなりません。何故なら「ブロックチェーン」というのは「P2P」という、多数のコンピュータ(ノード)が連結したシステムであり、つまり「ビットコイン」というのは「参加する人がいるから存在するもの」だからです。確かに原理的には、51%以上のコンピューティング能力を保有して支配することは出来ますが、そうなると、「ビットコイン」に参加する人が誰もいなくなり、結局手に入れた「ビットコイン」が無価値になってしまうのです。この「51%アタック」と呼ばれる問題は、実際には「ブロックチェーン」に組み込まれたインセンティブシステムがうまく働いて、回避することが出来るのです。

とはいえ、難しい部分もあります。例えば「ハードフォーク」と呼ばれるものです。これは、「互換性のないシステム変更」を指す用語です。バージョン1からバージョン2へ変更が行われる際、全員がバージョン2に移行してくれればいいですが、バージョンに留まる人も出てきます。バージョン1とバージョン2は互換性がないので、つまりこの時点で通貨が分裂する、ということになってしまうのです(実際にそういう例が過去にあった)。このように、「ブロックチェーン」や「仮想通貨」の仕組みも、まだまだ完璧ではありません。

本書では、そんな「ブロックチェーン」を、非常に分かりやすい言葉で説明してくれます。技術やシステムをちゃんと理解してもらおうというより、「ブロックチェーン」の根幹的な部分と、「ブロックチェーン」によって何が出来るのかという部分に焦点が当てられている感じです。本書を読めば分かりますが、実際に様々な応用事例が検討されていて、実際にプロジェクトとして動き出しているものもあります。元々は「ビットコイン」という仮想通貨の中で生み出された「ブロックチェーン」という仕組みですが、今では「仲介業者が存在しないままサービスを提供するシステム」として活用が期待されていて、その目的で設計された「イーサリアム」というシステムがかなり注目を集めています。他にも、著作権保護や電力供給、土地登記や仕事の仕方、サプライチェーンの改革など、様々な応用が検討されています。

個人的にはとても興味がある技術なので、これからも知識を拡げていきたいと思います。


サポートいただけると励みになります!