PoWにおける多数決方式とハードフォーク

2023年7月6日(木)
梅田 弘之(うめだ ひろゆき)
第4回の今回は、ブロックチェーンの改ざんに関わるハードフォークとビザンチン将軍問題について説明します。

はじめに

前回は、ビットコインの取引情報の暗号化やブロックチェーンの分岐などについて説明しました。今回はブロックチェーンがなぜ改ざんしにくいのか、それでもハードフォークが発生するのはどのような場合か、ビザンチン将軍問題とは何かについて解説します。

改ざん防止

ところで、なぜわざわざナンスの発見という難しい問題を与えているのでしょうか。それも、その作業自体は全く無意味です。金鉱なら発掘作業という正当な作業に対して金を見つけるという報酬が得られるわけですが、ナンスの発見には何の意味もありません。取引情報の「不正チェック」と「記録」という本来の作業をみんなで行っているのに、そこに対して報酬はなく、賽の河原に石を積むような虚しい作業をさせているのはなぜなのでしょう。

こうやってあらためてPoW(Proof of Works)の本質を問うと、意外と説明が難しいものです。

実は、ビットコインでヘビーなワークを与えている理由は2つあります。1つは、前ブロックのハッシュが含まれるチェーン構造です。もし、過去のブロックの改ざんを行ったなら、それ以降のすべてのブロックのナンス発見作業を単独で行わなければなりません。ナンス発見を難しくすることでこの作業の困難度を高め、実質的に改ざんを防止しているのです。

それなら、過去のブロックではなく現在のブロックを狙えば良いのでは? はい、その方が改ざんが成功する確率は高くなります。そして、それを防止するためというのがもう1つの理由です。

前回「長いチェーンが正当」というルールをベースにした多数決について説明しました。これを今度は重いワークとの関係で説明しましょう。図1は、前回でチェーンの分岐の説明に使用したものとほぼ同じです。実は悪意がある不正グループが行う作業は、自然発生で起こる分岐(フォーク)と同じことになります。

改ざんによるフォーク(分岐)

図1:改ざんによるフォーク(分岐)

悪意のある不正グループが偽の取引情報を作成したとしましょう。この場合に行う作業は善良なグループと同じで、正当なチェーンとは別の不正ブロック(ナンスは正しいが、不正な取引情報が入っているブロック)を#900002として分岐させます。不正グループがこのブロックを破棄されないようにするには、正当なチェーンに対抗してマイニングを続けてチェーンを伸ばさなければなりません。

不正グループ以外の善良なマイナーたちはみんなで競い合って正当なチェーンにブロックを接続しているのですから、不正グループに圧倒的な計算能力がない限り勝ち目はありません。必死に不正な取引情報を含むブロックを作成したとしても、長さで負けてその取引情報が取り消されてしまうわけです。

もちろん、不正グループに圧倒的な計算能力があるとしたら勝ち目があるかも知れません。しかし、仮にすごい計算能力を持ったとしたら、それを活かして正当にマイニング報酬で稼ぐ方が合理的だとも言われています。そして、この「圧倒的な計算能力がない限り」という部分が上記の理由になります。圧倒的な計算能力が必要なのは、当たりナンスを発見する作業が大変だからです。逆に言えば、作業が簡単なら不正グループもポコポコブロックを繋げて行き、善良なグループを負かす可能性が出てきます。

51%攻撃リスク

ビットコインのリスクとしてよく挙げられるのが「51%攻撃」です。これは、PoWのコンセンサスアルゴリズムが多数決をベースにしていることから来るリスクです。もし、不正グループの計算能力がマジョリティの51%を越えてしまったら、不正な取引を作成して、それを自分たちで認めてしまうことができそうです。さらにブロックチェーンの長さ競争にも勝てば、発掘報酬と不正取引情報混入の「両手に粟」になります。

心配される背景はあります。最近のマイニングは、マイニング専用チップASICを搭載した処理能力の高いコンピュータを1箇所に集め、グループでマイニング作業を行うマイニングプールの存在が際立っています。マイニングに成功するのが上位グループで占められる傾向も強くなっており、彼らのいくつかが結託したら51%攻撃ができるのではと危惧する人がいるのです。

まあ、そんなことが発覚したらコインの価値が激減し、そもそも不正なので捕まります。独占するだけのコスト(消費電力や設備投資)を考えたならば、とても現実的ではないと私は思っています。

ビザンチン将軍問題

実はビットコインのPoWは、ビザンチン将軍問題を解決した代表例と言われています。P2Pネットワークの合意形成モデルとしてよく出てきますし、将軍とか登場してちょっと楽しいので説明しておきましょう。

ビザンチン将軍問題(Byzantine Generals Problem)とは、1980年代に数学者レスリー・ランポート氏が考案した問題です。図2のように古代ビザンチン帝国(東ローマ帝国)の首都をオスマン帝国の9人の将軍が取り囲んでいます。攻めるか撤退かを多数決で決めたいのですが、それぞれ離れた場所にいるため会議で集まることができず、相互に伝令を伝え合うしかありません(P2Pモデルです)。

ビザンチン将軍問題

図2:ビザンチン将軍問題

戦局は微妙で、将軍たちが全員で攻撃すれば勝てるのですが、一部の部隊だけで攻撃をしかけると負けてしまう状況です。多数決には全員従うという取り決めになっているので、攻撃したい派が多いと分かれば撤退したい派も一緒に攻撃して勝利を収めることができます。

スマホもSNSもない時代ですから、伝令が敵に捕まったりしてメッセージが届いたか分からない場合もあります。このため全員が確実に他の将軍の意思をすべて共有しているとは限りません。

さらに、将軍たちの中には裏切り者がいる可能性もあります。例えば攻撃派が4人、撤退派が4人と意見が拮抗していたとして、裏切り者が攻撃派の将軍には「攻撃」、撤退派の将軍には「退却」と伝えたらどうなるでしょうか。その場合、攻撃派も撤退派も自分たちが過半数以上だと思って攻撃派だけで攻めて、負けてしまいます。裏切り者が複数いた場合は、より簡単に分裂を起こすことができます。

この問題は、もともとは分散ネットワークにおけるビザンチン故障とビザンチンフォールトトレランス(fault tolerance)をテーマにしたものです。ビザンチン故障とは、分散ネットワークで故障が発生した際に、システム全体にそれが伝わって予測不能な不具合を起こす障害です。

フォールトトレランスは障害が発生したときにその影響を最小限にすることで、対障害性と呼ばれています。分散ネットワークで障害(作為もしくは不作為)が発生した際に、故障を起こしたノード以外で正常にシステムが運用し続けるための条件を示しています。

ビザンチン将軍問題に対し、ビットコインではPoWの「長いブロックを正とする」という多数決で対応しています。たとえ悪意のあるものが偽のチェーンを形成しようとしても、この統一ルールのもとで正しい意思で運用が続くように設計されているのです。

もう1つ、フォールトトレランスの面でも関係しています。ビットコインはパブリック型のシステムなので、ノードが任意に参加したり離脱したりできます。万一、ノードのコンピュータがクラッシュしても、システムは正常に動き続けるのでしょうか。

実は、このようなフォールトトレランスはP2Pの強みです。取引情報の蓄積や新ブロックの合否判定は他のノードがやってくれているので、データが欠落することはありません。これは、オスマン軍の伝令が戻ってこなかったときでも多数決で合理的な決断がなされる仕組みに相当します。

ノードがクラッシュしていたマイナーは、再びコンペに戻れるのでしょうか。はい、そのような場合には他のノードの持つ最新のブロックチェーン情報が上書きされる仕組みになっているので、何ごともなく再スタートできます。

ハードフォーク

ブロックチェーンの分岐をフォークと言います。マイニング成功が同時発生して起こる分岐や互換性があるプログラム変更で起こる一時的な分岐はソフトフォークと呼ばれています。一方、ハードフォークはブロックチェーンが永遠に枝分かれする現象で、関係者の資産に大きく影響を及ぼす一大事です。

「え、ハードフォークなんて起きることがあるの?」はい、これまでずっとブロックチェーンの安全性を説明してきたのでハードフォークが起きることは想像しにくいですね。実はビットコインでもハードフォークが何回も発生しているのですが、どのようなときに起きるのでしょうか。

プログラムのバージョンアップ

ブロックチェーンはP2Pネットワークですが、みんなで仲良く運用し続けているのはルール(仕様)に基づいたプログラムを各ノードがインストールして実行しているからです。最近(Web 2.0)のコンピュータシステムはクラウドサービスが主流ですが、サービス提供者という中央管理者がいないので「インストール」という以前の概念が復活しているのです。

ビットコインも根本はプログラムなので、セキュリティ強化や利便性向上のためにバージョンアップがあります。互換性があるバージョンアップであればハードフォークは発生しません。いっとき旧バージョンを使い続けるマイナーが残っていても同じチェーンにブロックを積むことができます。

しかし、互換性がないバージョンアップに対して新旧で主張が分かれた場合は、チェーンの枝分かれが発生します。ソフトウェアを更新しないグループは「新しいチェーン」にブロックを積めないので、「従来のチェーン」にブロックを積み続けることになります。一方、更新したグループは「新しいチェーン」にブロックを積み始めます。2つのチェーンが並列してブロックを伸ばす状態になり、従来バージョンの仮想通貨と新バージョンの仮想通貨の2つの通貨に分れてしまうのです。

ビットコインコミュニティ

「え、なんで新バージョンだけを正当チェーンとしないの?」はい、当然そう思うのですが、そこがP2Pの難しいところです。そもそも、誰がプログラムをバージョンアップしようと言い出しているのでしょうか。実は、ビットコインは中央管理者がいないので、ビットコインコミュニティというグループが話し合いでバージョンアップの是非などを決めています。

P2Pなので、バージョンアップ方針で意見が決裂した場合、誰かが「新バージョンにしよう」と決めることも「多数決で多い方にしよう」と決め方を決めることすらもできません。利害が絡むので話し合いで解決できるとは限らないのです。そして、旧バージョン派が「互換性を維持して今のチェーンを少し改良して続けよう」と主張し、新バージョン派が「このままじゃ行き詰まるので互換性を損なってでも新方式を導入しよう」と考えた場合にハードフォークが発生するのです。

ビットコインのハードフォーク

ハードフォークが発生しても、双方の仮想通貨を使うユーザーがそれぞれ一定数以上いれば、どちらの仮想通貨も価値を持ち続けられます(通貨の価格は時価総額で表されます)。一方、分裂して誕生した通貨が期待したほど人気がなく、価値が低迷して失敗(エアドロップ)することもあります。

ビットコインは、スケーラビリティに対する方針の違いにより2017年8月にハードフォークを起こしています。分裂の原因はスケーラビリティ問題に対する対応方針です。

ビットコインのハードフォーク

図3:ビットコインのハードフォーク

ビットコインは世界最初の仮想通貨として人気を博して取引する人がどんどん増え、今でも数多くの仮想通貨の中で時価総額はぶっちぎりの1位です。しかし、それを記録するブロックのサイズは1MBまでであり、かつPoWの仕組み上10分に1ブロックしか処理できません。

その制限により取引情報がトランザクションプールに溜まりがちとなり、手数料を低く設定した取引情報がなかなかブロックに積んでもらえない現象が発生しました。このために、手数料が高騰したり、コインの決済に時間がかかるという目に見える問題が発生していたのです。株と同じく、価格が値上がりして取引が活発に行われる局面において顕著でした。

この課題を解決する方法で意見が別れました。一方のグループは、ブロックのサイズは互換性のある1MBのままとし、SegWitと呼ばれる技術により1ブロックに積める取引情報を増やそうとするものでした。もう一方は一部のマイナーたちが主導したグループで、そもそも1MBという制限が小さすぎるので、この際、ブロックサイズの上限を大きくするという案です。

両者の主張の溝が埋まらなかったため、後者を主張していたマイナーたちが「じゃあ、我々は新しい通貨としてやってゆくよ」としてブロックサイズを8MBとしたビットコインキャッシュ(BCH)が誕生したわけです。なお、ビットコインキャッシュのブロックサイズは拡張可能にしており、現在は32MBとなっています。

実は、この他にもビットコインXT、ライトビットコイン、ビットコインゴールド、ビットコインダイヤモンドなど、ビットコインはさまざまなハードフォークを起こしており、一定の成功を収めている通貨もあれば失敗に終わったものもあります。

イーサリアムの方は、2016年に発生したTHE DAOという盗難事件への対応でコミュニティの意見が分かれ、イーサリアムクラシック(ETC)という通貨が誕生しています。現在、ビットコインキャッシュの時価総額が2.47Bドル(330億円)の29位、イーサリアムクラシック(ETC)の時価総額が2.92Bドル(392億円)の23位で、どちらのハードフォークも(いまのところ)うまくいっているようです。

まとめ

第4回の今回は、以下の内容について学習しました。

  • PoWでヘビーなワークを与えている理由は、過去ブロックの改ざんだけでなく現在ブロックの改ざん対策でもあること
  • 51%攻撃はPoWが多数決をベースにしていることからくるリスクだが、経済的合理性がないので現実的には可能性が低いこと
  • ビザンチン将軍問題は、P2Pネットワークにおける障害発生時のフォールトトレランスを多数決論理で表したものであること
  • ブロックチェーンの分岐にはソフトフォークとハードフォークがあり、ソフトフォークは1つのチェーンに戻るがハードフォークは永遠に分かれる(新通貨が発生)こと
  • ハードフォークは互換性のないバージョンアップを行う際に、参加者の意思が新旧に別れたときに発生すること
  • ビットコインのスケーラビリティ問題(取引手数料のアップ、決済の遅延)を解決するため、ビットコインチェックというハードフォーク(新通貨発行)が行われたこと

次回は、世界中で膨大な消費電力を消耗するPoWの問題を解決するために、PoSというコンセンサスアルゴリズムが生まれ、さらにPoSの課題を補う方式としてPoIが誕生したことなどを、PoWからPoSに移行したイーサリアムを例に説明します。お楽しみに!

著者
梅田 弘之(うめだ ひろゆき)
株式会社システムインテグレータ

東芝、SCSKを経て1995年に株式会社システムインテグレータを設立し、現在、代表取締役会長。2006年東証マザーズ、2014年東証第一部、2019年東証スタンダード上場。

前職で日本最初のERP「ProActive」を作った後に独立し、日本初のECパッケージ「SI Web Shopping」や開発支援ツール「SI Object Browser」を開発。日本初のWebベースのERP「GRANDIT」をコンソーシアム方式で開発し、統合型プロジェクト管理システム「SI Object Browser PM」など、独創的なアイデアの製品を次々とリリース。

主な著書に「Oracle8入門」シリーズや「SQL Server7.0徹底入門」、「実践SQL」などのRDBMS系、「グラス片手にデータベース設計入門」シリーズや「パッケージから学ぶ4大分野の業務知識」などの業務知識系、「実践!プロジェクト管理入門」シリーズ、「統合型プロジェクト管理のススメ」などのプロジェクト管理系、最近ではThink ITの連載をまとめた「これからのSIerの話をしよう」「エンジニアなら知っておきたいAIのキホン」「エンジニアなら知っておきたい システム設計とドキュメント」「徹底攻略 JSTQB」を刊行。

「日本のITの近代化」と「日本のITを世界に」の2つのテーマをライフワークに掲げている。

連載バックナンバー

ITインフラ技術解説
第10回

世界を1つのグラフデータベースとするトポロジー

2023/11/29
第10回の今回は、セマンティックWebの壮大なロマンと、それを実現するための技術について解説します。
ITインフラ技術解説
第9回

Layer Cakesで見る「セマンティックWeb」の技術要素

2023/11/9
第9回の今回は、Web3のテーマの1つであるセマンティックWebについて、「Layer cake」の第1層と第2層に示された技術要素について解説します。
ITインフラ技術解説
第8回

「DeFi」と「ハイプ・サイクル2023」

2023/9/28
第8回の今回は、ブロックチェーンを基盤とした分散型金融の「DeFi」と、毎年ガートナー社が公開する「ハイプ・サイクル2023」で注目されるテクノロジーについて解説します。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています