こんにちは!ブロックラビット編集部です。今回は初の前編後編という取り組みですが、最後までお付き合いいただければと思います!本記事は後編です!
カメレポートとは、当日行われた議論の一部を取り上げ、Block Rabbit編集部が独自の見解と情報を盛り込んだ深堀レポートです。
重要な前提知識”ハッシュ関数”
いきなり、訳の分からない単語を出してすいません。
しかも関数とは、数学!?と身構える方もいるかもしれませんが、安心してください。中身までは説明しないので、意外と簡単です!
”森川聖”という単語をハッシュ関数にかけると、F65….という値が出てきます。これをハッシュ値といいます。
このハッシュ関数には面白い特徴が2つあって、
- 元のデータ(図の場合は”森川聖”)をいれてもハッシュ値の桁数は同一
- 少しでも元のデータを変更すると、全く違うハッシュ値になる
どういうことかと言いますと、下記図をご覧ください。
森川聖→森川しょう、にしただけで全く違うハッシュ値になりましたね!
でも桁数は変わっていません。
少しでも元のデータを変えてしまうと、ハッシュ値が全く違うものになるということは改竄に活用できるため、このハッシュ関数がブロックチェーンの根幹として活用されています。
これ以降の話でもよくでてくるので、是非覚えておいてください!
第一部のおさらい
~ブロックチェーンとは何かの前に、なぜブロックチェーンが求められているのか? |
---|
一極集中を打破するために、分権運動の機運が高まった。その分散型システムを可能にする技術としてブロックチェーンが注目を浴びた。 |
~ブロックチェーン(分散型システム)とは?~分散型システムの課題 |
しかし、分散型システムにはクリアするべきハードルが2つある。それは、
|
~信頼性とビザンチン将軍問題 |
ブロックチェーンはうまく信頼性を担保するために、
という、2つのアプローチでビザンチン将軍問題を解決している。 |
分散型システムの信頼性をうまく支えている
- 初期コストを強いて、参加者の数をある程度制限する、閾値を設ける
- 悪いことをするよりも、普通に正しいことをしたほうが得をするような動機づけ
この2つって実際どのような仕組みでそうなっているのか、ということを後編では説明させていただきます!
マイニングにはコストがかかる!
いきなり、知らない単語を出してしまいましたが、この”マイニング”と呼ばれる機能が実は、上記の2つである”初期コスト”と”動機づけ”を担っているのです。
マイニングとは、”計算”です。
何を計算しているかというと、”取引の記録が正しいのか”計算しています。それは非常に難解な計算で、人が普通に計算できるものではありません。したがって、このマイニングを行うためには超高性能のCPU(GPU、ASIC)のような機器を揃えなければなりません。そして、マイニングは24時間365日行われているので、ずっと電気を消費しなければならないのです。
つまり、”初期コストを強いて、参加者の数をある程度制限する、閾値を設ける”
この初期コストとは、機器への投資と電気代を指します。ちなみにGPUは一台数十万円、一台のGPUを動かし続けた場合、電気代*は一ヶ月数万円にもなります*。(*国によってだいぶ異なります。)
機器を揃えて、ネットにあるソフトウェアさえダウンロードすれば誰でもできますが、ある程度の初期投資がいるのです。
それでは、何故人々はそこまでして、マイニングをするのでしょう。
それは、マイニングをすると報酬が貰えるからです。
取引のデータをまとめたものをブロックといい、一つのブロックに1MBのデータが入ります。
容量に達すると、そのブロックの全ての取引データが合っているのか確認・承認するために計算(マイニング)をします。その計算において、一番最初に答えを出し、皆に共有して、尚且つ正解であるとされれば、その人(マイナー)は報酬を手にすることができるのです。このマイニング競争が約10分に1回行われているのです。ちなみに2018年11月現在の報酬は12.5btc(約1000万円)で、人々がそれを目当てに集まってくるわけです。マイナーが沢山入ってくるということは、取引が合っているのか検証する人も増えるということなので、システムの信頼性は上がります。
しかし、ここで生じる疑問は何故みんな悪さをしないのか、という点です。しかし、この点においても非常に巧妙なゲーム理論が用いられているのです。
例えば、悪い人がいたとして不正なデータを記録しようとします。仮に一番最初に答えを出したとしても、もし他の人達がその答えは間違っていると言って悪い人の答えが承認されなければ、悪い人は報酬はもらえません。この答えの承認は多数決で行われ、マイニングをしている人たちの過半数以上が提示した答えが正しいとされます。
マイニングをしている人たちは、出来る限り正しい答えを出そうと努力します。何故ならば自分も過半数に入りたいと思った場合、他の人の行動を考えるとやはり正しい記録をして報酬を得たいと思っていると想定するのが合理的だからです。
しかし、ここにおいて談合を組んで不正をしようとするグループが過半数を占めたとします。そうなると、人々はそのようなシステムを使わなくなり、結果として彼らが得る報酬自体の価値が下落してしまいます。過半数を牛耳るために折角膨大な額の機器を購入し、電気代を支払ったのに、得にならないのです。
”悪いことをするよりも、普通に正しいことをしたほうが得をするような動機づけ”がしっかりと設計されているのです。
正しいことをしたほうが得をするのもそうですが、不正を働くには通常よりも難易度の高いことをしなければならないのですが、この点は次に説明します。
マイニングは難しい!だから安全
マイニングは計算で、普通の計算ではないと前章で説明しました。超高性能なCPUが世界中で何百万台と動いていても、その答えを出すのに10分程かかるのです。
この難易度がブロックチェーンの信頼性の支えとなっています。
ただでさえ、世界中でマイニング競争をしている中、ブロックの中のデータを改ざんして、新しく出てくる数値を誰よりも早く見つけることは非常に難しいのです。
何故ならば、データの集まりであるブロックは下記図のように繋がっているからです。
ここでようやくハッシュ値の話を沢山しますので、忘れてしまった方は一番上まで戻って復習してください!笑
各ブロックにはハッシュ値というものが付与されています。そして、その次のブロックは必ず前のブロックのハッシュ値を用いて、そのブロックのハッシュ値が決定されます。
ここで、思い出してほしいのですが、ハッシュ値の特徴として、少しでも元のデータの中身を変えてしまうとハッシュ値が全然異なるものになるということです。
それぞれのブロックのハッシュ値は繋がっているので、もし図の1st Block内のデータを変えた場合には、1st Blockのハッシュ値が変わります。そして、それを用いて決定された2nd Blockのハッシュ値も変わり。。。と言うような形で元のデータを変えた以降のハッシュ値を全て計算し直す必要があるのです。
もう一度言いますが、世界中でマイニング競争をしている中で、過去のブロックのデータを変えて、更に最新のブロックのものを計算するのはほぼ不可能なのです。
これが、ブロックチェーンが改ざんに強いと言われる所以です。
マイニングが担保する信頼性とインセンティブの設計は非常に精巧な仕組みであることをご理解いただけたかと思います!
でも、信頼性を担保するにはマイニングだけでなく不十分で、ブロックチェーンにはもう一つ重要な技術が応用されているのです。
信頼性と電子署名
マイニングは、参加するための閾値(初期コスト)を設けて不正を抑制し、更には、巧妙なインセンティブ設計で不正を制し、正当な行いを奨励するような報酬を設け、尚且つその機能自体の難易度から抗改ざん性を実現していると、前章で説明しました。
しかし、信頼性を謳う上で非常に基本的なことをマイニングでは、カバーできていないのです。それは、例えばAさんがBさんに100円を送金する場合、その取引が本当にAさんが引き起こしたものなのか?それを証明する必要があるのです。銀行に行った場合は、あなたしか持っていないはずのキャッシュカードもしくは通帳を持って操作できているから、それはあなた自身が引き起こした取引だといえます。
ブロックチェーンにおいては電子署名というものを用いて、これを解決しています。
電子署名とは、いわばデジタルのハンコです。公的な書類を提出するときにはハンコもしくはサインをして、あなた自身が作成したと表明することで、有効な書類を作成しますよね?あのハンコやサインをデジタル上で担っているのが電子署名です。
下記図をご覧ください。これはユーザーが近くするものではありませんが、裏のシステムではこのような情報の交換が行われています。
今、AさんがBさんに『1BTCをBに送金』という内容を送るとします。
Aは『1BTCをBに送金』という内容をハッシュ関数にかけて、青ボックスのハッシュ値を出します。そして更にAしか持っていない秘密鍵(Aしか知らない関数)で更に暗号化して、赤ボックスの電子署名を作成します。
Aは、内容『1BTCをBに送金』だけでなく、赤ボックスの”電子署名”そして秘密鍵とペアの公開鍵という3つをBに送ります。
それら3つを受け取ったBは、それがAから本当に送られてきたものか検証します。
具体的には、受け取った電子署名を公開鍵で復号化(暗号を解く)すると出てくるのハッシュ値を照らし合わせます。何と照らし合わせるかと言うと、Bが受け取った内容『1BTCをBに送金』をハッシュ関数にかければ、同じハッシュ値が出てくるはずですので、そちらを参照します。
電子署名を公開鍵で復号化したハッシュ値と、元のデータをハッシュ関数にかけて出したハッシュ値はAから送られてきたもならば同一のはずです。
もし、誰かが2人の間に入って元のデータを書き換えてしまったとします。
すると、Bが電子署名を復号化して得たハッシュ値と、改ざんされたデータをハッシュ関数にかけて得たハッシュ値は異なってしまい、これはBが送った内容とは異なる、もしくはこれはAから送られてきたものではないと判断できます。
ここでも、元のデータを少しでも変えてしまうとハッシュ値が大幅に代わってしまうハッシュ関数の特性をよく活用しており、この電子署名技術のお陰で、しっかりと当人が引き起こした取引なのか、その中身は変えられていないのかという2点を判別することが可能となり、完全な信頼性を担保しているのです。
ブロックチェーンとは?
長々とブロックチェーンを構成する要素について、触れてきましたが詰まるところブロックチェーンとは何なのか?
ブロックチェーンとは、
『マイニング』『電子署名』『ハッシュ』
の3つの核となる技術によって”信頼性” と”インセンティブ設計” を担保することで、様々な利害関係者が参加することができる分散的に稼働するシステムです。
今までは様々な利害関係者が参加する完全に分権的な環境で” 信頼性 ” と” 総意を形成するインセンティブ” を構築する方法がありませんでした。
しかし、ブロックチェーンの到来によって極端な話、互いに信用していなくてもシステムは滞りなく稼働する仕組みができたのです。
これは既存のシステムでは、間違いなくできなかったことですし、今後機械同士が直接やりとりを行っていく中で、電子的な”信頼”は必要不可欠となることは明白です。
今回説明させていただいたブロックチェーンは基礎中の基礎で、今はまた違う仕組みを取り入れたブロックチェーンVer2.0、Ver3.0が沢山あります!
本記事でそれらを理解するための型ができたかと思いますので、是非他のブロックチェーンも調べて理解を深めていってください!