Highway Consensus Protocol

コンセンサスとは?

コンセンサスは、どの分散型ネットワークでもバックボーンとなります。非中央集権ブロックチェーンでは、不同性のエンティティがある不変の事実への同意を行うメソッドを必要としています。これは、トランザクションのバリディティを決定し、衝突の解決とネットワークがチェーンに追加するブロックをファイナライズすることに関与しています。コンセンサスプロトコルは、全てのアクターが分散型ネットワーク内で遵守しなければならないメカニズムとルールのセットです。

これらのルールは、ネットワーク上で送信されたメッセージのタイプを、送信時と処理方法の概要となっています。ブロックチェーンのコンテキスト内では、コンセンサスプロトコルがネットワークがチェーンにどのブロックを追加するか、そしてどの順番で追加されるかを決めています。これにより分散されたレジャー状態が決まり全てのノードがその状態に合意したことを確証します。

コンセンサスメカニズムは、ブロックチェーンがどの様に以下の要件を満たすのかを決めています。

  • Safety – 全ての正直なノードによる最終的なファイナルバリューへの合意。システムは、ブロックチェーンの同じheightにて異なる2つのブロックを報告する正直なノードが2つ存在しない方法でセットアップされます。
  • Liveness – システムは継続的に稼働し、新しいブロックを無期限にチェーンへ追加します。

Highway Consensusとは?

Casperネットワークは、Highwayというコンセンサスプロトコルを使用し、ネットワークのSafetyとLivenessの要求項目を確証しています。Highwayは、部分的に同期されているネットワークを必要とするビザンチンフォールトトレラントプロトコルです。

どのようにCasper MainnetはHighwayを使用しているのか?

Casper Mainnetは、Proof-of-Stakeネットワークであり、オンチェーンオークションコントラクトがHighwayに基きバリデータの参加を決定しています。プロトコルは、ボンドもしくはアンボンドのどちらかの状態のノードによる非中央集権ネットワークを活用しています。コンセンサスプロトコルにアクティブに参加しているノードは、CSPRトークンをステークしなくてはならず、バリデータノードとして認知されます。

上位100人の入札者は、オークションコントラクトによってera毎に選択され、その時点のEra +2 となる2つ先のeraのバリデータとなります。ネットワークの成功時に大きいステークを持つノードがコンセンサスへの到達時により大きいweightを持っていることになります。Highwayは、必ずしもバリデータを選択するためにプルーフ・オブ・ステークの方法を要しておらず、理論的には異なるモデルのプライベートネットワークと共に使用可能です。バリデータ達は、フォルト数や正しくないノードがネットワーク内にいるノードの合計数に対して3分の1を超えない限りは機能し続け、Casper Networkを稼働させます。フォルトでないノードは正直(honest)なノードです。殆どの場合、システムは、全ノード数の3分の2以上が活発にコラボレートしコンセンサスを満たすものであるとされています。それ故、平均より強いファイナリティの保証は、全てのノードが正直であるその期間で起こります。ブロックのフォルトトレランスは、プロトコルの継続として3分の1を超えて増加します。全てのバリデータが正直であれば、100%に到達します。

動的な四捨五入の長さ

ハイウェイプロトコルでは、四捨五入の長さは正直なバリデータによるいくつかの四捨五入のやり取りを経て全てのメッセージがゴシップされる合計時間をノードにとって適切であることを確証し動的に定められます。これにより、全てのメッセージがチェーンへのブロック追加をタイムリーに保守され適切にゴシップされていることを確証することでシステムが稼働を維持していることが分かります。

Era

eraのコンセプトは、参加しているノードがバリデータのローテーションも行う際にHighwayによる必要なストレージ容量の削減を可能にすることです。Highwayの新しいインスタンスは、現在のネットワークのメトリックスによって2時間毎もしくは大体220ブロック毎に実行されます。

  • Data Reduction(データ量の削減) – 確実なブロックのファイナライジングにて使われている古い “metadata” がもう使えず、ブロックチェーン上に格納されたデータの不変性を妥協することなく排除されます。
  • Banning Equivocators(エクイボケーターの除外) – 前回のeraにてエクイボケーションとみなされた不正直なノードは、新しいeraの参加者から除外されます。これにより、過去のエクイボケーションに対する処方を行う必要性がなくなる為、正直なノードが新しいeraをいい状態で開始することができます。
  • Rotating Validators(バリデータのローテーション) – ボンドしたノードは、各eraのバリデータスポット上に入札し、次以降のera(N+2)にて上位100の高額入札者としてバリデータになれます。

どの特定のeraにおいても、ノードオペレーターはコンセンサスメカニズムである次以降のera(N+2)に入札してバリデータになります。era内の各タイムスロットは、バリデータのリーダーも決定します。先頭のバリデータは、チェーンに追加される新しいブロックを提案し、そのブロックはネットワーク内のノード間にてゴシップされます。このメッセージによってGHOST (Greedy Heaviest Observed Sub-Tree) ルールによって、先頭バリデータのブロックへのインプリシット(暗黙の)参照が示されています。このプロセスが内部連携された十分なメッセージパターンによって一旦クリティカルマスに到達すると、他のブロックへの入れ替えは不可の状態となります。選択されたブロックは、ファイナライズされたとみなされチェーンに追加されます。

あるeraの最後のブロックは、switch blockであり次のeraの初期状態を形成します。新しいHighwayインスタンスは新しいeraで始まり、switch block内の情報と新しい候補となるバリデータセットを使用します。eraのバリデータを決めるオークションプロセスについての詳細は、コンセンサスエコノミクスに記述しております。

ファイナリティ

ファイナリティは、ブロックがチェーンに追加された後、代替や指し戻し、そしてキャンセルされることがないことをネットワークが確証した時に起こります。これはコンセンサスを介して起こり、全てのトランザクションがブロック内にて起こるようにトランザクションが変更されないことを確定させます。ファイナリティ後、ノード間の不均等を引き起こすダブル署名を行うには、全体のバリデータの3分の1以上を必要とします。このイベントでは、ネットワークをシャットダウンしマニュアルでの再起動が必要となります。

Casperネットワーク上では、トランザクションはファイナライズするブロックを含むそのブロックと一緒にファイナライズされます。リスクの追放をエクイボケート(曖昧に)するバリデータは、そのネットワークのバリデータセットから除外されます。よって、エクイボケートするノードが悪意のある行為による報酬を失うリスクをとったとしても、正直なノードは参加への報酬は受け取ります。

Highwayのファイナリティを検知するクライテリアは、Summitというメッセージのパターンが存在していることです。以前の CBC Casperのファイナリティクライテリアはより到達が難しく検知のための計算によりコストがかかる状態でしたが、それから改善されました。Summitは、多項式に検知されている際、調整可能なフォルトトレランスの利便性を事前に取得します。