ブロックチェーンが分岐!正しい方を決めるには?|DApps(ブロックチェーンを活用したアプリケーション)のことなら

TOP  コラム  ブロックチェーンが分岐!正しい方を決めるには?

ブロックチェーンが分岐!正しい方を決めるには?

2018.11.28

コラム

ブロックチェーンが分岐!正しい方を決めるには?

公平・民主的に正しい方を決めるのに多数決が使えない?
ブロックチェーンは、インターネットを介してつながるオープンなネットワーク上で、参加する複数のコンピュータ(ノード)が、互いに同じデータを保持・共有し、その正しさを常に検証・担保し合うかたちで維持管理していく仕組みです。

トランザクションと呼ばれる取引などやりとりに関するデータを、一定量でまとめた「ブロック」とし、前後のつながりに特別な関係性をもたせることで、鎖状のひとつなぎになった記録とすることから、ブロックチェーンと名付けられました。

これまでのデータ記録・管理方法では、特定の事業者など管理権限をもったサーバーに情報が集中し、そのサーバー性能やサービスの質、仕様に依存的であるという問題がありました。

こうした仕組みの場合、普段は気にすることなく利用できても、管理者都合でサービスが停止されたり、メンテナンスで使えない時間が度々発生したり、アクセスの集中やサイバー攻撃、物理的故障、天災などの理由で、突然機能しなくなるというリスクがあるのです。こうした場合、ユーザーは一方的に不利益を被り、最悪の場合、大切なデータを失ってしまうことになります。

一方、ブロックチェーンは、そもそも特定の権限を有する管理者を置かない仕組みで、ノード皆が平等で対等な地位にありますから、このようなリスクは存在しません。どこかで異常が発生したり、通信が遮断されたりしても、動作するノード、ネットワークからデータを復元できますし、通常運用を継続することができます。

さらにブロックとチェーンのつながりの仕組み、暗号技術の組み合わせによる独特な手法から、悪意のあるユーザーがデータを改ざんしたり、削除したりしようとしても、整合性がとれずすぐに検知されて不正が明らかになるため、そうした行為が事実上不可能な仕組みともなっています。

このように、不特定多数の誰もが自由に参加でき、優れて高い透明性をもっているほか、高い耐改ざん性、信頼性、ゼロダウンタイムを実現する安定性をもつのがブロックチェーンです。まさにインターネットの開かれた民主性を理想的に活かし、さまざまに応用可能な技術概念として、それをかたちにしたものといえるでしょう。

しかし、こうしたブロックチェーンですが、本来1本の鎖(チェーン)でなければならないところ、仕組み上、ときに分岐してしまうことがあります。複数に枝分かれすると、どちらが正しいのか、担保すべきデータの信頼性・正確性が揺らいでしまいます。

しかも、正しいチェーンを決め、参加者の合意形成を図る際、単純に発想される公平な手法である多数決は利用することができないのです。なぜそうなるのか、ではどうするのか、今回はこのポイントを解説します。

分岐の発生するワケ
ブロックチェーンでは、全トランザクションの記録に関する承認と検証、記録の同期、管理がネットワークに加わる全ノードによって行われています。

データを格納するブロックには、トランザクションデータと1つ前のブロックのデータをハッシュ関数にかけて要約した「ハッシュ値」、そして「ナンス」と呼ばれる使い捨ての特別な値などが収められます。

ナンスは、ハッシュ値がごく小さい、条件を満たした最適な値になるような数で、発見するには膨大な計算を総当たり的に行う必要があります。この作業が「マイニング」で、発見すると新たなブロックを生成でき、発見したノードは報酬を得ることができます。

通常ならば、データのアップロードとブロックの生成作業が並行して続けられ、1つのブロックがいっぱいになれば、次のブロック、次のブロックと生成・承認の流れが進んでいきます。

しかし、ほぼ同時といえるタイミングで別々のノードからナンスが発見され、複数のブロックがマイニングされたり、悪意あるノードが故意に不正なブロックを生成したりした場合、チェーンが一時的に枝分かれすることがあります。これが分岐の発生で、その後もそれぞれのチェーンで計算処理が進められていくため、本来1本の鎖であるはずのブロックチェーンが、ある一定期間分岐した状態になるのです。

また、これ以外にもブロックチェーンの仕様変更、ルール変更など運営方針をめぐって、計画的に起こされる分岐もあります。いずれも管理者のような権限をもった存在がありませんから、事態の収拾はネットワーク全体の合意で図るしかありません。

単純な頭数での多数決は不可能、計算的に考えて長さで決定
しかしこの分岐を解消させる合意形成では、ブロックチェーンのような不特定多数が参加するパブリックチェーンの場合、ネットワーク上のノードがいったいどれだけ存在するのか、その全体数を把握することがきわめて困難であるため、多数決をとることはできません。

そこでブロックチェーンでは、より長い方をメインチェーン、正しいチェーンとして信頼し、短く枝分かれしたものは無効にするというルールを採用しています。それぞれに計算を続けた結果、一定以上の差がついた時点で短い方を破棄、長い方に収束させるのです。

長さが長いということは、それだけ多くのブロックが連結されているということです。ブロックの多いチェーンは、それだけ多くの計算量がかけられたものであり、いわば計算量ベースでの多数決で信頼性、正しさを確保しているということになります。

計算量の多さだけで信頼できるのか、不思議に思われるかもしれませんが、破棄されるチェーンをマイニングしていたノードは報酬を受け取れなくなるため、ネットワーク上で価値観を共有するノードは、自然と選択されるであろう長い方、信頼性の高い正しい方に与し、計算を行うと考えられます。通常のノードは、全体の利益に資するものを自然に選択するのです。

仮に、悪意をもって不正なチェーンを正しいものにさせようとすると、こうした多くのノードが行う計算の総力を上回るスピードで、不正な生成を続け、チェーンを延ばし続けなければなりません。数で劣ると想定される悪意のあるノード(攻撃者)が、それだけの計算資源を確保し、投下するのは、およそ不可能であり、メリットもないため非現実的です。

こうしてブロックチェーンは一時的に分岐しても、一定時間が経過すれば解消され、再び単一のチェーンとして共有されるところとなり、その信頼性、高い耐改ざん性や堅牢性は、維持されるようになっています。

▼DApps総研
https://dapps-info.com/

(画像は写真素材 足成より)