day3. コンセンサスアルゴリズム

ブロックチェーンはコンセンサスアルゴリズムと呼ばれる合計生成のための仕組みに基づいて動いています。このガイドでは、そのアルゴリズムについて解説していきます。

ブロックチェーンはコンセンサス・アルゴリズムと呼ばれる合意形成のための仕組みに基づいて動いています。このガイドでは、そのアルゴリズムについて解説し、ブロックチェーンの中のメカニズムを明らかにします。

目次

コンセンサス

「コンセンサス・アルゴリズム」とは、分散システムやネットワークにおいて、異なる参加者間で合意を形成するために使用されるアルゴリズムです(コンセンサスは合意、アルゴリズムは問題を解決する手順の意味の英語)。ブロックチェーンの場合、ネットワークに参加しているノードは、特定のアルゴリズムに基づいて、新しいブロックを生成します。生成されたブロックは他のノードによって検証されながら、ネットワーク全体に伝播していきます。ネットワーク全体では、データの整合性を保ちながら、データの改竄や攻撃を防いでいます。

最も有名なビットコインで使われている「ナカモトコンセンサス」の場合、PoW(後述)、最長チェーン優先ルール、Sybil耐性といった要素(特徴)を持っています。

最長チェーン優先ルールとは?
攻撃者が、あるブロック以降でデータを改竄しようとした場合、ブロックチェーンは2つに分岐します。この場合には、常にチェーンの長さがより長い方を正しいものとみなします。
後述のPoWの場合、長いチェーンにするにはより大多数より多い計算能力が必要となり、現実的にはかなり難しいです。

Sybil耐性とは?
ある攻撃者が多数のアカウントをもった状態で不正行為を行おうとしてもそれを行えないことをSybil耐性があると呼びます。後述するPoWの場合、コンピュータ計算が必要となり、多数のアカウントでそれを行おうとすると大規模な投資が必要となり、現実的ではありません(つまり、Sybil耐性があります)。また後述のPoSにおいても同様に多数のアカウントのそれぞれで多数の資産を担保とする必要があることから、非常に困難です。

一般的なコンセンサス・アルゴリズムの例としては、「Proof of Work」や「Proof of Stake」等があります。これらのアルゴリズムは、ネットワーク上のノードが合意形成して、共通のトランザクション履歴や状態を維持するために使用されます。

PoW – Proof of Work

PoWでは、ブロックチェーンに新たなブロックを追加するために、マイナー(miner=鉱夫の意味)と呼ばれる参加者たちが計算=問題を解く作業(マイニング)を行います。この計算は、前回のデータ構造で登場したナンスという値を求めるための計算処理になります。参加者は競って、正しいナンス値を求め、正解者がブロックを追加することができ、またその報酬(ブロック報酬およびトランザクション手数料)を得ることができます。

ブロックが追加される際には、他のノードは順番に正解が正しいかを検証します(すでにナンス値の入っているデータのハッシュ値を求めるだけで検証が可能です)。これによって、ネットワーク全体に新しいブロックが広がっていきます。

以上のように、ブロックを追加する際には、問題を解くという計算作業があるため、不正ができない(Sybil耐性)、マイナーは報酬を得ることができ、モチベーションがある、他のノードは検証を容易にでき、正しさをすぐに証明できる、といった特性を持っています。

PoWを採用する代表的なブロックチェーンとしてビットコインがあります。

PoS – Proof of Stake

PoWの課題の一つとして、多量のコンピュータ計算が必要であるという点があります。ブロックチェーン・ネットワークを維持するためには、多量の電力を消費する必要があり、環境への悪影響が懸念されるという点があります。
この課題を解決するために、PoSという仕組みが考案されています。PoSでは、計算量という価値を提供するかわりに、トークンを担保として差し出します(Staking)。以下のようなメカニズムで働きます。

  • ランダムにブロックを生成するノードが選ばれる
  • 他のノードが検証者(Validator)となって、そのブロックが正しいかどうかを検証(承認)する
  • 検証者はその報酬を得る

検証者は、担保として差し出しているトークンの量も勘案して、選出されます。
仮に悪さをした場合、担保として差し出しているトークンは抹消されます。

PoSを採用する代表的なブロックチェーンとしてEthereum2.0(The Merge以降のEthereum)があります。

PoWとPoSの違いを図解で示しています。
PoWとPoSの違いを図解で示しています。

ご意見をお聞かせください!

web3チュートリアルシリーズについてのご意見を是非お聞かせください。

この記事、または、web3チュートリアル全体について、是非、あなたのご意見をお聞かせください。
アンケートはこちらからご回答いただけます。

無料相談承ります

ITの専門家が無料相談を受け付けます。web3以外のテーマでもOKです。

オンラインでの無料相談を承っています。ご希望の方は、お問い合わせフォームよりご連絡ください。
ITの専門家があなたのご質問にお答えいたします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

After joining IBM in 2004, the author gained extensive experience in developing and maintaining distributed systems, primarily web-based, as an engineer and PM. Later, he founded his own company, designing and developing mobile applications and backend services. He is currently leading a Tech team at a venture company specializing in robo-advisory.

コメント

コメントする

CAPTCHA


目次