4. Blockchain Basics & Consensus
MIT OpenCourseWare で公開されている【Blockchain and Money】の授業を日本語で解説しています。第4回のテーマは、ブロックチェーンの基礎とコンセンサスです。
今日のStudy Question
ビザンチン将軍問題や Proof of Work、マイニングとは何か?
ブロックチェーンにおける経済的インセンティブはどのように機能しているのか?
Proof of Work 以外にはどんなコンセンサス・プロトコルがあるのか?
第4回の授業では、2008年にサトシ・ナカモトが発表した論文のうち、コンセンサス・プロトコル関連の内容について解説していきます。
ビザンチン将軍問題
かつてビザンチン帝国という国があり、この帝国の5名の将軍で、ある都市を攻め落とすため包囲している状態になりました。
攻め落とすには5つの部隊の一斉攻撃が必要で、1部隊でも欠けた状態では敗退してしまいます。そのため「全軍一斉攻撃」か「全軍撤退」かを将軍たちで合意しなければならず、いずれの方針にするかは多数決で決定することになります。
しかし、各部隊が離れた位置で包囲している状態のため集まって話すことができません。
つまり、ビザンチン将軍問題とは
「分散されたネットワークにおいてどのように合意形成を行うか」
という問題なのです。ブロックチェーンにおいては、これがコンセンサス・プロトコルの問題に繋がってきます。
Proof of Work
1997年、サトシ・ナカモトによってビットコインが発表される11年前に、アダム・バックという実業家が Proof of Work を世界で初めて提案しました。
しかし、いきなりブロックチェーンに活用された訳ではなく、当時はスパムメールやDoS攻撃(サーバーに大量のデータを送りつけるサイバー攻撃)に対処する方法として提案されました。仕組みとしては以下のようなプロセスになります。
1 . メールを送る際に、そのメールのハッシュ化を義務付ける
2. ハッシュ化には “leading zeros” のルール(ハッシュ値の最初の数文字を0にしなければならない)を適用する
3. メールを送るたびにコンピューターによる “leading zeros” を満たしたハッシュ関数の計算が必要になる
これにより、 一通のメールだったら2~3秒の計算で済みますが、大量のスパムメールやDoS攻撃のデータを一気に送ることは難しくなるのです。
Proof of Work をビットコインに応用
サトシ・ナカモトは、分散型ネットワークにおける合意形成の基準として Proof of Work を採用したのです。SHA256というのはハッシュ関数のひとつで、“leading zeros” を満たしながらブロックヘッダーをハッシュ化します。
この作業をマイニングといい、一番最初にマイニングに成功したマイナーに報酬が出るのです。
わかりやすい例を紹介します。
左のデモでは、全てのブロックにおいてハッシュ値の最初の4文字が0になっており、 “leading zeros” を満たしています。
そのため、正しくハッシュ化されている証として全てのブロックが緑色になっています。
そこで、真ん中のブロック内の情報を書き換えてみます。Coinba(se)の部分がAnder から Garyに変更されました。
すると、この変更に応じてハッシュ値が変更されるためその後のブロックにも影響し、書き換えたブロック以降の全てのブロックが赤色になりました。
これにより、ブロックを改ざんしたら一目で分かってしまう仕組みとなっているのです。
こちらの詳細は “How Blockchain Works” という MIT の別の動画で解説されています。以前の記事でまとめていますので、そちらをご覧ください。
Proof of Work をチェーンで繋ぐとどうなるか
Proof of Work に基づいたマイニングによって生成されたブロックは、チェーンに繋がれることで初めて「ブロックチェーン」となります。つまり、
合意によって形成されたチェーン = 最も長いチェーン(メインチェーン)
となるのです。このスライドでは黒いブロックで繋がれたチェーンが最も長いチェーンなので、こちらがメインチェーンです。
紫のブロックは、マイニングされたものの合意を得られなかったブロックです。しかし、一番最初のマイニングではなかったため、そのブロックの後にはチェーンは続きません。これを孤立ブロックと言います。
では、孤立ブロックに入ってしまった取引は消えてしまうのでしょうか?
答えは、Noです。メモリープールというバックアップのような場所に記録されているので復元できます。メモリープールについては、後でもう一度出てきます。
Proof of Work の難点
ビットコインではブロックは10分おきに生成され、全てのブロックは異なるハッシュ値でないといけないため、その度に “leading zeros” を満たすのは大変なことです。
ビットコイン始祖のブロックのハッシュ値は10桁の “leading zeros” で始まりました。しかし、上のように現在(2018年9月18日)のマイニングには18桁の “leading zeros” が必要になっています。
こちらは、ビットコインマイニングの難しさ指数を表しています。現在のマイニングは、2009年当初のジェネシスブロックの時よりも7兆倍難しくなっているのです。
そしてそれはつまり、マイニングを行うのにより多くの電気使用量が必要になるということを意味しています。
マイニング技術の進化
マイニングの難易度も年々上がっていますが、マイニングを行うための技術の発展も著しいです。
2009~2010年 CPU (Central Processing Units)
CPUは、パソコン上のハードウェアやソフトウェアから受け取る全ての指示を処理するパーツです。毎秒200~2000万ハッシュの処理が可能です。
2010~2013年 GPU (Graphics Processing Units)
GPUが登場すると、3Dグラフィックス描写に関する計算処理もできるようになり、毎秒2000万~3億ハッシュの処理が可能になりました。
2013~2018年 ASICs (Application Specific Integrated Circuit)
ASICは、マイニングを行うためだけの配線回路基板で、毎秒4~16兆ハッシュの処理が可能です。現在のビットコインマインングの主流になっています。ひとつ3000ドルくらいで、アマゾンにも売ってるらしいです。
売ってました。
しかし現在は、一人でマイニングを行うソロマイニングはとても困難なものになっています。中国にはマイニング工場があり、ウォータークーリングシステム付きでASICを何千個も使用してマイニングを行なっているからです。
このように、マイニングを行なって報酬を得るためには莫大な電気使用量が必要になります。ビットコインマイニング全体の電気使用量はアイルランドやデンマークの国家電気使用量に匹敵するほどです。
マイニングプール
個人によるマイニングは困難なため、複数のマイナーが協力してマイニングを行う仕組みがあります。これをマイニングプールと言います。
マイニングプールには報酬の割合を管理するマイニングプール・オペレーターがおり、得られた報酬を各採掘者の貢献度(ハッシュパワー)に応じて分配することになっています。これによってビットコイン経済において報酬(富)が満遍なく行き渡るのです。
こちらはマイニングプールのシェア率です。世界中にこれだけ多くのマイニングプールがあるんですね。
独自通貨(トークン)
独自通貨は、コミュニティにおいて Proof of Work が機能するための「インセンティブ・システム」です。そのため、ほとんどのブロックチェーンが通貨の供給を管理するなどの金融政策を取っています。
ビットコインの場合
ビットコインでは、それぞれのブロックごとにマイニング報酬が発生します。2009年当初は1ブロックににつき50BTCから始まり、210,000 ブロック毎に報酬の価格が半減することになっています。
現在のブロック報酬は12.5BTC/ブロック(7500ドルくらい)、インフレ率は4.1%です。発行されるビットコインを積算すると約 2,100万BTCとなり、2140年には発行上限に達することになっています。
イーサリアムの場合
イーサリアムもブロックごとに報酬が発生します。1ブロックににつき5ETHから始まり、開発段階に応じて減少してきました。
(動画の2018年9月18日時点では3ETHでしたが)現在は2ETHs/ブロック、インフレ率は7.4%となっています。しかし、現在検討されているEthereum 2.0が実現すれば、今後新たに動きがありそうです。
余談ですが、授業の中で生徒から以下のような質問が出ました。
ビットコインは通貨なのか?
通貨の要素を持ったアセット(資産)でしかないのか?
この議論に関して、イギリス銀行総裁のマーク・カーニー氏は
“Cryptocurrency ではなく cryptoasset と呼ぶべき”
とコメントしていますが、授業の講師であるゲイリー・ゲンスラー教授は次のように解凍していました。
“ 通貨と呼ぶかアセットと呼ぶかは君たちに任せるが、中央集権的な機関をもたないデジタル通貨は実現可能だということ。それがビットコインのイノベーションだ。”
カッコいい。
ネットワーク
ブロックチェーンは中央集権的な機関が存在しない分散型のネットワークです。これを構成するプレイヤーは、以下のように分類することができます。
・フルノード:全てのトランザクションを検証するノード
・剪定ノード:過去の不要なトランザクションブロックを削除するノード
・軽量ノード・SPV (Simplified Payment Verification)ノード:ビットコインネットワークに参加するものの、ブロックの検証はできず、ウォレット機能しか持たないノード
・マイナー: Proof of Work(ハッシュ関数の計算)を行う
注意すべき点は、マイナーの仕事は Proof of Work(ハッシュ関数の計算)を行うことであり、マイナー = フルノードではないということです。
そしてネットワークには、これらのプレイヤーが使う以下のようなツールがあります。
・マイニングプール:複数のマイナーが協力してマイニングを行う仕組み
・ウォレット:トランザクションの送受信、公開鍵&暗号鍵のペアを作成
・メモリープール:未承認の取引が一時的に記録される場所
Proof of Work 以外のコンセンサス・プロトコル
コンセンサス・プロトコルというのは、
ブロックを検証するノードを、ランダムに選出するための仕組み
Proof of Work の場合、どのノードが一番最初にハッシュ関数の計算をすることができたかという「Work(労力の証明)」を基準にしています。
つまり、「ブロックを認証する人(報酬を受け取る人)を証明する基準」が “ Proof of 〜 ” になるという訳です。
Proof of Stake
Proof of Stake は、コインを持っている量(Stake)に応じて、ブロック承認の成功率を決めるコンセンサス・プロトコルです。ビットコインのソースコードをベースに改造を加えた、アルトコインの一つであるピアコイン(Peercoin)で初めて導入されました。
Proof of Work の問題点の一つとされている「51%問題」(悪意のある特定の個人やグループに採掘速度の51%以上を支配されると、不正に二重支払いが可能になってしまう問題)に対して有効と言われています。
Proof of Burn
Proof of Burn は、誰にも分からない使用不可能なアウトプットを持つ取引記録を作成し、送金したその金額をBurn(消滅)させたことを証明することによって、同額の価値を持つ新しい通貨を得ることができるというコンセンサス・プロトコルです。カウンターパーティ(Counterparty)という仮想通貨で導入されました。
Proof of 〜 シリーズについては、これらの他にもいくつかタイプがあり、こちらのサイト(Proof of Work, Proof of Stake, Proof of Burn)で詳しく解説されています。
今日はビットコインの3つの特徴のうち「コンセンサス・プロトコル」を解説しました。ビザンチン将軍問題、Proof of Work、マイニング、独自通貨を取り上げました。
暗号化技術と並んでブロックチェーンの核心となるテーマなので、少しボリュームが多かったですね。次回は、ブロックチェーンの基礎の最終回、トランザクションについて解説していきます。