Polkadotのコンセンサス原理を理解するための記事
PolkaWorld
2020-07-07 08:35
本文约3056字,阅读全文需要约12分钟
この記事では、ブロックチェーン システムにおけるコンセンサスの基本原則、コンセンサスが Substrate フレームワークのランタイムとどのように相互作用するか、フレームワークで利用可

編集者注: この記事は以下から引用しましたPolkaWorld(ID:gh_6c4c2038ddba)、Odaily が許可を得て複製したもの。

)、Odaily が許可を得て複製したもの。

ブロックチェーン ノードはコンセンサス エンジンを使用して、ブロックチェーンの状態に関する合意に達します。この記事では、ブロックチェーン システムにおけるコンセンサスの基本原則、コンセンサスが Substrate フレームワークのランタイムとどのように相互作用するか、フレームワークで利用可能なコンセンサス エンジンについて紹介します。

MDNICEエディター

ステートマシンと競合

  • ブロックチェーン ランタイムはステート マシンです [1]。現在の状態から将来の状態に遷移できるようにする内部状態関数と状態遷移関数がいくつかあります。ほとんどのランタイムでは、一部の状態には将来の複数の状態への有効な遷移がありますが、遷移は 1 つ選択する必要があります。

  • ブロックチェーンは次のことに同意する必要があります。

  • 「ジェネシス」と呼ばれる初期状態

最終(現在の)状態

遷移後の結果の状態について合意するには、ブロックチェーンの状態遷移関数 [2] のすべての操作が決定的である必要があります。

MDNICEエディター

競合の排除

集中システムでは、集中当局は状態遷移を確認した順に記録することで相互に排他的な選択肢の中から選択し、競合が発生した場合には競合する選択肢の中から最初のものを選択します。分散システムでは、ノードはトランザクションを異なる順序で認識するため、より詳細な方法を使用してトランザクションを除外する必要があります。問題をさらに複雑にしているのは、ブロックチェーン ネットワークはフォールト トレラントであるよう努めていることです。つまり、一部の参加者がルールに従わない場合でも、システムはコンセンサス データを提供し続ける必要があります。

  • Aura (Round Robin)

  • Substrate はいくつかのブロック構築アルゴリズムを提供し、独自のブロック構築アルゴリズムを作成することもできます。

  • PoW

BABE (スロットベース)

MDNICEエディター

フォーク選択のルール

フォーク選択ルールは、ブロックチェーンを取得して「最適な」チェーン、つまり拡張する必要のあるチェーンを選択するアルゴリズムです。 Substrate は、SelectChain を使用してこの概念を示します。

Substrate を使用すると、カスタムのフォーク選択ルールを作成したり、既製のものを使用したりできます。例えば:

最長連鎖ルール

最長チェーンのルール 簡単に言うと、最高のチェーンとは最長のチェーンです。 Substrate は、LongestChain 構造を備えたこのチェーン選択ルールを提供します。 GRANDPA は投票に最長連鎖ルールを使用します。

ゴーストルール

GHOST ルールでは、ジェネシス ブロックから開始して、最も多くのブロックが構築されているブランチを再帰的に選択することで各フォークが解決されます。

ブロック製作

PoW

ブロックチェーン ネットワーク内の特定のノードは、新しいブロックを生成できます。これはオーサリングと呼ばれるプロセスです。正確にどのノードがブロックを書き込めるかは、使用するコンセンサス エンジンによって異なります。集中型ネットワークでは、単一のノードがすべてのブロックを書き込むことができますが、完全にパーミッションレスなネットワークでは、アルゴリズムが各高さでブロックのプロデューサーを選択する必要があります。

ビットコインのような PoW システムでは、計算負荷の高い問題を解決する限り、どのノードでもいつでもブロックを生成できます。この問題を解決するには CPU 時間が必要なため、マイナーはコンピューティング リソースに比例したブロックしか生成できません。

Substrate は、PoW ブロック生成エンジンを提供します。

スロット

スロットベースのコンセンサス アルゴリズムには、ブロックを生成できる既知のバリデーターのセットが必要です。時間はさまざまなスロットに分割され、各スロットでは一部のバリデータのみがブロックを生成できます。各スロット内で、どのバリデータがブロックを書き込むことができるかの詳細はエンジンによって異なります。 Substrate は、スロットベースのブロック生成エンジンである Aura と Babe を提供します。

MDNICEエディター

ファイナリティ

どのシステムのユーザーも、トランザクションがいつ完了するかを知りたいと考えており、ブロックチェーンも例外ではありません。一部の従来のシステムでは、領収書が渡されるか文書に署名されるときにファイナリティが発生します。

これまで説明したブロック生成スキームとフォーク選択ルールを使用すると、トランザクションが完全に完了することはありません。より長い (またはより重い) チェーンが発生し、トランザクションが復元される可能性は常にあります。ただし、特定のブロック上に構築されるブロックが増えるほど、元に戻される可能性は低くなります。このようにして、ブロックの生成と適切なフォーク選択ルールにより、確率的な最終性が得られます。

一部のコンセンサス システムは、ブロック生成とファイナリティをリンクします。たとえば、ファイナリティはブロック生成プロセスの一部であり、ブロック N が完了するまで新しいブロック N+1 は生成できません。ただし、Substrate はこれら 2 つのプロセスを分離し、確率的ファイナリティを備えたブロック エンジンを単独で使用したり、決定的ファイナリティを実現するファイナリティ ガジェットと組み合わせて使用​​したりできます。

ファイナリティ ガジェットを使用するシステムでは、ファイナリティ ゲームの結果を考慮してフォーク選択ルールを変更する必要があります。たとえば、ノードは最も長いチェーンのサイクルを選択するのではなく、最も最近完了したブロックを含む最も長いチェーンを選択します。

基板のコンセンサス

Aura

MDNICEエディター

BABE

Aura[4] は、スロットベースのブロック生成メカニズムを提供します。 Aura では、既知の権限セットによってブロックが順番に生成されます。

MDNICEエディター

複数のバリデータが同じスロットにブロックを生成する可能性があるため、ネットワーク条件が良好な場合でも、フォークは Aura よりも BABE の方が一般的です。

PoW

MDNICEエディター

GRANDPA

MDNICEエディター

GRANDPA[6] はブロックのファイナリティを提供します。 BABE のような既知の重みの権限セットがあります。ただし、GRANDPA はブロックを生成せず、プロダクション エンジン (上記の 3 つなど) によって生成されたブロックの「ゴシップ」を聞くだけです。 GRANDPA バリデーターは、ブロック上ではなく、チェーン上で投票します。つまり、「最良」と考えられるブロックに投票し、その投票は以前のすべてのブロックに推移的に適用されます。 GRANDPA 当局の 3 分の 2 以上が特定のブロックに投票すると、そのブロックは最終的なものとみなされます。

MDNICEエディター

これらのコンセンサス機能に対応するために、Substrate には、ノードの外部 (コンセンサスが存在する場所) からランタイムに、またはその逆に渡されるメッセージである DigestItem という概念があります。

もっと詳しく知る

MDNICEエディター

  • BABE Research[7]

  • GRANDPA Research[8]

もっと詳しく知る

GRANDPA を含むすべての決定論的ファイナリティ アルゴリズムでは、少なくとも 2f + 1 個の障害のないノードが必要です。ここで、f は障害のあるノードまたは悪意のあるノードの数です。このしきい値がどこから来たのか、そしてなぜそれが理想的なのかについて詳しくは、欠陥のあるケースでのコンセンサスに関する独創的な論文 [9] または Wikipedia: ビザンチン エラー [10] をご覧ください。

オリジナル:https://substrate.dev/

すべてのコンセンサス プロトコルが単一の正規チェーンを定義しているわけではありません。一部のプロトコルは、同じ親ブロックを持つ 2 つのブロックに競合する状態変化がない場合に、有向非巡回グラフ [11] (DAG) を検証します。

PolkaWorld
作者文库