ノード間の計算結果が違ったらブロックチェーンはどうなる?|DApps(ブロックチェーンを活用したアプリケーション)のことなら

TOP  コラム  ノード間の計算結果が違ったらブロックチェーンはどうなる?

ノード間の計算結果が違ったらブロックチェーンはどうなる?

2018.11.26

コラム

ノード間の計算結果が違ったらブロックチェーンはどうなる?

皆で行う計算に違いが生じたら?不正があったら?
次世代のインフラとして活用が大いに期待されるブロックチェーンですが、その仕組みがどのように動いていくのか、まだあまり理解できていないという方も多いでしょう。関心はあるけれど、専門用語が多くて理解できない、途中で挫折したという方もあるかもしれません。ここではそうした方にも、ブロックチェーンへの理解を深めていただけるよう、基礎から解説を行っています。

ブロックチェーンは、不特定多数の参加者で形成されるネットワークで、互いにデータを管理する台帳を持ち合い、確かさを承認・保証し合って維持していく仕組みです。中央集権的な特定の管理者を置かず、皆が平等な地位で計算処理を行い、ノードと呼ばれる全参加コンピュータが同じ内容の台帳を保持します。

台帳の1ページにあたるデータの塊をブロックとし、作成・追加されるものについてネットワークで検証を行い、正しいと判断されたブロックだけがチェーンにつながれていく、こうして鎖状につながった、優れた耐改ざん性を有する一連の記録が、高い透明性をもって永続的に維持管理されていくのがブロックチェーンなのです。

大雑把に説明すると、こうした仕組みで成り立っているブロックチェーンですが、ここである疑問が生じます。ネットワーク上の全ノードが計算を実行し、処理するという基本作業の結果に違いが生じてしまうことはないのでしょうか。また悪意のある何者かがあえて間違いを仕込み、不正データを承認させたり、不正にブロックを追加させたりする攻撃を仕掛けられた場合、どうなってしまうのでしょう。

一部に故障や攻撃で深刻な障害が発生しても、他のノードからデータ復旧を図ることができるなど、管理者を置かないことで特異点を存在させず、システム運用が止まることもない仕組み、ゼロダウンタイムを実現させているブロックチェーンですが、こうした点が解決されていなければ、たちまち混乱に陥ってしまいます。

なぜそうはならず、ブロックチェーンの運用が可能になっているのか、今回はその秘密を探ります。

計算結果が違うこともあり得る!それでも大丈夫な仕組みとは?
ブロックチェーンのブロックには、記録するトランザクション(取引)データの他に、1つ前のブロックデータをハッシュ関数にかけた結果として得られるハッシュ値やナンスといったさまざまなデータが含まれています。

ナンス(nonce)というのは、“Number used once”を省略したもので、その名の通り一度だけ使用される使い捨ての数字です。この特別な数字は、ブロックの生成に必要不可欠なもので、そのブロックチェーンの条件を満たすようなハッシュを作るポイントになっています。

この特別な数字であるナンスを発見するには、膨大な計算を総当たり的に行うしかないため、各ノードが皆で計算資源を投入し探していきます。この作業がマイニングと呼ばれるものです。そして最初に発見したノードがネットワークに知らせ、ブロックを生成、他のノードがそれを認めるという流れになるのですが、時にほぼ同時といえるタイミングで、別々の計算結果としてナンスが発見され、異なるノードから1つのチェーンに2つ以上のブロックが生成されてしまうことがあります。

その結果、ブロックチェーンは一時的に分岐した状態になります。これでは台帳としての正しさが失われる、混乱が発生すると心配されますね。しかし、特別な権限を有するものや管理者は存在しませんから、まずは各ノード、そのまま計算を進めていくことになります。

計算結果の異なる枝分かれしたそれぞれで、次のブロック生成と検証、承認が試みられていきますが、ノードはそれぞれ適切と思う方につき、運用を進めます。すると時間の経過とともに長さに差が生じてきます。ブロックチェーンでは、ここで長い方を正式なメインチェーンとして採用する仕組みをとっています。

短い枝分かれのチェーンは無効として削除処理する決まりで、これにより1つのチェーンに収束、再び全体の合意がとれた状態が取り戻されるのです。より多くのノードが認めるチェーンが信頼性で勝る、正しいと取り扱えるものだという考え方ですね。

偶然の分岐でない、意図的な攻撃による分岐も、これによって防がれます。なぜなら不正なブロックの作成と追加、さらにそれをより長いチェーンにしていくことは、大量のリソースとコストを必要とし、他方につくノードの総力を上回るスピードで計算処理を行わねばならないからです。他のノードが次々に正当なチェーンを延ばす中、不正なチェーンをより長くするのはきわめて困難です。

ネットワーク上のノードは、そのブロックチェーンに支えられる価値と、マイニングで得られる報酬の観点から考えれば、悪意のあるノードに対し、善良なノードの方が圧倒的に多いのが当然と考えられます。そのため長さによる選択で正しいチェーンが自然淘汰的に選ばれ、合意が図られる、皆の価値を皆で担保するシステムとして常に機能を続けるとみることができるのです。

一見、不完全な仕組みのようですが、大量の計算資源がなければブロックの生成は不可能であること、マイニングで報酬が得られることから、基本的にブロックチェーンを攻撃すること自体、成功がきわめて困難であるだけでなく、攻撃者にとっても大きな損失になり、注ぎ込むだけの対価は得られないものとなっています。そのためオープンな不特定多数の参加するネットワークでも、安全な環境を保つことができているのです。

いかがでしたか。ブロックチェーンのもつ巧みな仕組みの一部が理解されたかと思われます。こうした知恵と既存の技術の組み合わせにより、画期的なシステムとなっている点こそ、ブロックチェーンの注目すべき大きなポイントかもしれません。

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

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