とってもやさしいビットコイン

とってもやさしいビットコイン

ビットコインの知識が全くない初心者の方でもビットコインがどういうものなのか分かりやすく理解できるブログを目指してます。

ビットコインの合意形成アルゴリズム②

f:id:jyutakugyoseiku:20170624203607p:plain

 

分散型であるビットコインの「合意形成アルゴリズム」について、ビットコインの合意形成アルゴリズム①の続きです。まずはでビットコインがどのような合意形成の問題があり、それをクリアする為にどのような方法を取っているのかを知っていただければと思います。

 

 

bitFlyer ビットコインを始めるなら安心・安全な取引所で

 

前回のおさらい

 

①の記事ではビットコインの合意形成の難しさ、参加者のうちの誰がどのような形でブロックの作成権限を得るのかについて述べさせていただきました。

 

ビットコインというP2Pネットワークシステムの中では

・一つの事柄(例えばブロックが不正なものかどうか判断をする事)を決定する場合、中央がいないので皆で決定していかなくてはならない

という問題がありました。

 

それに対し

・ブロックを作成する権限をランダムに与える(誰が権限を得られるか分からない)

・ランダムではなく最も仕事を行った参加者(ノード)に権限を与える

・作成されたブロックを他の参加者が検証する事で不正があるかどうかを判断する

 

というルールを利用する事で合意形成を図る、という説明をしました。

 

しかし、これだけではやはり完全な正しい合意形成はできません。なぜなら

 

1 毎回同じ悪意のある参加者が大量の仕事量をこなした場合、毎回不正なブロックが作成されてしまう

2 他の参加者が不正を許す(又は悪意のある参加者が多数だった)場合検証は正しく行われない

 

という問題があるからです。しかしビットコインシステムではこれら二つを解決するべくルールを設けております。今回はこの二つの問題にどうビットコインが対応しているのかについて解説をしていきます。


スポンサー

 

 

ブロックを作成する「仕事」

 

ブロックを作成する権限を得る為には「仕事量」が必要です。前回の記事では「ランダムに決められる」のではなく「仕事量によって決められる」と述べました。しかし、この「仕事」の正体を知る事で実は「仕事量をこなさなければ権限は得られないが、ランダム要素がある」という事を理解する事ができます。

 

この次のブロックを作成する権限に「仕事量」と「ランダム要素」を入れる事で先ほど述べた問題点である「1 毎回同じ悪意のある参加者が大量の仕事量をこなした場合、毎回不正なブロックが作成されてしまう」を解決する一つの手がかりになります。

 

では、参加者がブロックを作成する権限を得る為の「仕事」とはどのようなものなのでしょうか。

 

参加者はあるビットコインのシステムが出す「問い」に「答え」を導き出す事でブロック作成権限を得ます。この「答え」を出す作業が「仕事」になります。

 

「問い」は簡単に言えば

・x(ある文字列)を演算にかけた時にy以下になるxを求めよ

というものです。

 

ある演算にかけてy以下になるようなxを探し出す事ができるとブロック作成権限を得られます。

「ある演算」の中身は文字列を異なる数値に変換するものです。その時に算出される数値は予測する事ができません。

 

例えばy=100と設定されていた時、xは何になればy≦x(演算)を満たすのかを参加者は考える事になります。しかしxを演算にかけて出てくる「答え」は予測する事が出来ません。なので一つ一つ試していく事になります。x=10000で演算を通すと156が得られたとします。これではy≦x(演算)を満たしません。

 

続いて参加者はx=10001で試したりx=9999で試します。この作業を100≦x(演算)になるまで続けるのです。

 

これが「仕事」の正体です。一つ一つ試す以外に方法はありませんが、この試すスピードが速ければ有利になりますし遅ければ不利になります。これにより「仕事量」が多い参加者が勝つ確率が上がるのです。

 

しかし、あくまで「確率が上がる」だけです。何故なら一回で100≦x(演算)の答えを見つける事ができるかもしれないからです。ここが「仕事量」と「ランダム要素」が合わさっているという理由です。仕事量をいくらかけてもたまたま答えを見つけ出せる可能性は出てきます。

 

もちろんこれは確立なのでもし100の仕事量をこなせるAと2倍の仕事量200をこなせるBがいた時2倍Bはブロック作成権限を得る事ができますがAも3回に1回はブロック作成権限を得る事ができます。(合計300のうちAは100を保有している為3回に1回は答えを先に導き出せる可能性があり、長期的に仕事をしていけばおおよそそのくらいの回数になっていく)

 

これにより例え仕事量がある悪意のある参加者がいたとしても問題点1の「毎回同じ悪意のある参加者が大量の仕事量をこなした場合、毎回不正なブロックが作成されてしまう」の状態になりにくいシステムが作られているのです。

 

ただし、1つのノード(参加者)が全体の約30%の仕事量をこなされてしまうとこの「問いと答え」ルールがあったとしてもシステムは不安定になります。ですのでビットコインのシステムでは「多くの(善意な)参加者がいる」事が合わせてセキュリティ・正しい合意形成を行う為の条件になります。(少ない参加者という条件ではより容易に全体の30%の仕事量を得られてしまう為)

 

ある演算の正体

 

上記で触れた「演算」は「ハッシュ関数」と言います。ビットコインでは多くの場面でこの演算が利用されます。ハッシュ関数を理解するのは初心者の方には少し困難なものですがこれを知ればより仮想通貨について理解が深まり、より様々な情報を得るきっかけになるでしょう。

 

ハッシュ関数についてはこちらから⇒ハッシュ関数って何?

 

インセンティブで正しい合意形成へ

 

さて、ここまでのシステムで残る問題は「2 他の参加者が不正を許す(又は悪意のある参加者が多数だった)場合検証は正しく行われない」というものです。

 

これを解決する事によって正しい合意形成が行われる可能性がかなり上昇します。何故ならここまでで

・ランダムに選ばれた参加者がブロックを形成する

・選ばれるには「仕事」をしなければならないので悪意のある参加者を容易に増やせない(ノードを乱立させても意味がない)

・そのブロックを他の参加者が検証する事で不正なブロック(不正取引の入るブロックなど)を無視して正しいブロックのみが生き残る

という流れが完成するからです。

 

今までの分散型システムでは技術によって解決をしようとし、上手くいきませんでした。そこでビットコインは「インセンティブ」を参加者に与える事によってこの問題を解決しようと試みております。

 

ビットコインは

・「ブロックを作成した参加者」に「報酬」を与える

・「最長のブロックチェーン」を正しいブロックチェーンとする

というルールを設定する事で正しいブロック・取引のみが分散型システムでも決定されるという「合意形成アルゴリズム」を作りました。

 

ブロック作成と報酬

 

上記で示したような仕事を行い、ブロック作成権限を得ると「報酬」が手に入ります。報酬は「新規発行ビットコイン」と「取引手数料」です。「報酬」についてここでは詳しくは説明をしませんのでこちらビットコイン「マイニングの報酬」の仕組みをお読みいただければと思います。

 

この「報酬」を設定する事により何が起こるのかと言えば「参加者がブロックを早く作成したくなる」という「競争」が生まれます。「競争」が生まれると何が起こるか。それは「仕事量」の増加です。皆が「報酬が欲しい」と思うならばこぞって仕事量を増やそうとするでしょう。

 

そして不正なブロックを作成してしまうと他の参加者によって無視をされますのでせっかく増やした仕事量も無駄なものになります。「仕事」は高性能な設備とそれを利用するコストがかかっているので無視をされたらたまったものではありません。インセンティブが導入される事により他のノードに「不正だ」と言われないよう正確なブロックを作成するようになります。

 

最長のブロックチェーンのみ生き残る

 

「最長のブロックチェーンを正しいブロックチェーンとする」というルールでとどめを刺します。

 

そのルールが仮になかったとすれば参加者はどのような動きをするでしょうか。それは「前のブロックが不正だろうととにかく自分のブロック作成の事を考えて検証を正しくしない」という現象が生まれます。

 

しかし、①の記事で見たように不正ブロックの次にブロックを作成した参加者が無視をする場合「不正ブロックを無視して一つ前のブロックに新たなブロックを繋ぐ」という行動を取ります。

 

f:id:jyutakugyoseiku:20170624201416p:plain

 

そしてその次の参加者は分岐したブロックのどちらに新たなブロックを繋ぐか選択を迫られます。

 

もし自分のブロックを不正なブロックに繋いでしまった場合、「不正なブロックがあるからこっちのチェーンには繋がない」という参加者の方が多くなると不正なブロックと共に自分の作成したブロックともども無視をされ続け、最長のブロックチェーンに入れず報酬も受け取れない、という状態になってしまうのです。

 

f:id:jyutakugyoseiku:20170624202135p:plain

 

この現象が起きてしまうとこれもまた報酬が受け取れずコストの無駄になってしまいます。この「インセンティブ」+「最長ブロックチェーンのみ有効」というルールにより他の参加者は不正ブロックを無視し、正しいブロックのみを選択し続けます。

 

これらのシステムが絡み合う事でビットコインの「正しい合意形成」が成り立ち、続いていくのです。

 

合意形成アルゴリズムは完璧か?

 

ビットコインは分散型システムの中に「インセンティブ」等の経済観念を取り入れる事で合意形成に成功したと言えます。しかし、この合意形成は完璧なものでしょうか?

 

ここに私はビットコインの面白さがあると思っております。合意形成が正しく機能するのは人間がビジネスとしてインセンティブを元に動いている時です。これを無視する人間が出てくればいとも簡単に(コストは安価ではないので実際は困難ですが理論的には簡単に)壊れます。

 

またビットコインの価格が暴落したらどうでしょうか。コスト≧報酬であればこれまた正常な合意形成は不可能になります。ブロック作成のコストはビットコインの価値の源泉です。価値が下がればコストも減らさざるを得ません。コストが減れば悪意のあるノードを立てやすくなります。

 

理論的に考えると8年間正しい合意形成が保たれているのは奇跡です。しかし現実として合意形成(ブロックチェーンに関する合意形成)は保たれてます。今後どうなるのか、考察する事は今後の仮想通貨のみならずテクノロジーの在り方を予測する大いなる参考になるのではと思います。

 

また、記事中に出てきた「ブロックを作成する参加者」が行っている事を「マイニング」と言います。この「マイニング」を理解する事もまたビットコイン・仮想通貨を理解する事に繋がりますので興味があれば学んでいただければと思います。

参考:初心者も分かるビットコインのマイニングとは

 

関連記事

ビットコイン取引を10分にするdifficultyとは

ブロックの頭には全ての情報が詰まっている!?

 

 bitFlyer ビットコインを始めるなら安心・安全な取引所で

最初に手に取るビットコインの教科書

最初に手に取るビットコインの教科書