コンセンサスアルゴリズムとはブロックチェーンシステムのノードが 合意形成 と 意志決定 をするための動的メソッドです。
Symbol では、有名な Proof-of-Stake (PoS) プコンセンサスの改善バージョンである Proof-of-Stake Plus (PoS+) と呼ばれる革新的なメカニズムを利用します。
基本的な PoS コンセンサスアルゴリズムでは、ブロックチェーン内の新しいブロック生成は ノード所有者の富にのみ関連する 要因の組み合わせに基づいて、確率的にノードに割り当てられます。
PoS+ メカニズムはアカウントの利害関係も考慮しますが、 参加者の活動に基づいた 報酬を与えることにより、エコシステムの健全性も促進します。
アルゴリズムはアカウントの インポータンス を計算する際に、次のハーベスティングノードを選択するために最終的に使用される指標を考慮します:
Stake: 保有している ハーベスティングモザイク の合計量。残高が多い保有者はエコシステムの繁栄を見るインセンティブがあります。10,000 を超えるハーベスティングモザイクを保持しているアカウント (高価値アカウント) のみがハーベスティングに 適格 となります。
Transactions: アカウントによって支払われた 手数料 の合計。これによりアカウントはネットワークでアクティブになります。
Nodes: アカウントがノードによってハーベストされた手数料の 受取人 であった回数。したがってネットワークはノードを実行するアカウントにインセンティブを与えます。
すべての高価値アカウントについて、定期的にこれら 3 つの要素に基づいて インポータンススコア が計算されます。インポータンススコアはアカウントが次のブロックを ハーベスト する確率を決定します。
ネットワークは最初に、各インポータンス期間 (720 ブロック、約 6 時間 ネットワーク設定 の importanceGrouping
を参照) の終わりに、すべての高価値アカウントについて、次の 部分スコア を計算します:
Stake Score (\(S\)): 期末時点のアカウントの残高をすべての高価値アカウントの残高で割ったもの。
Transaction Score (\(T\)): アカウントによって支払われた手数料の合計を、期間中にすべての高価値アカウントによって支払われた手数料の合計で割ったもの。
Node Score (\(N\)): 期間中にアカウントがノード手数料の 受益者 であった回数を、すべての高価値アカウントがノード料金の受益者であった回数で割ったもの。
Activity Score (\(A\)): \(T\) と \(N\) スコアの平均は、それぞれ 80% と 20% で重み付けされ、アカウント残高で除算されます。アカウント残高で割ると、小さなアカウントがいくらか後押しされます。これはアカウントのインポータンススコアがアクティビティに依存し、ステークには依存しないためです。
最初に絶対アクティビティスコア (\(A'\)) が計算されます:
また、実際のアクティビティスコア (\(A\)) は \(A'\) をすべての高価値アカウントの絶対アクティビティスコアの合計で割って計算されます。
次に、上記の部分スコアに基づいてインポータンススコアが計算されます。
インポータンススコア \(I\) はアクティビティ係数 \(\gamma\) で重み付けされた \(S\) スコアと \(A\) スコアの平均が計算されます。
Symbol ネットワークにおいて \(\gamma\) は 0.05 (5%) です
最後に、すべての ハーベスティング適格 アカウントのうち、特定のアカウントが選択される確率は 直近 2 つのうち小さい方と定義されるインポータンススコア \(I\) の 有効なインポータンススコア に比例します。
注釈
スコアは 720 ブロック毎 (およそ 6 時間) で計算され、ハーベスティング可能性を計算する際、直近の 2 つのスコア で小さい方が使用され、アカウントへ最初に資産を提供する際、ゼロより大きい確率を得るには 12 時間 が必要です。
プライベートネットワークは、次の構成プロパティを変更することにより、 コンセンサスアルゴリズムをカスタマイズ できます。 ネットワーク設定 を参照してください。
プロパティ |
デフォルト |
説明 |
---|---|---|
|
720 ブロック |
インポータンスが計算される頻度。 |
|
10000 |
ハーベスティング対象となるために必要な最小残高。 |
|
0.05 |
アクティビティスコアの寄与 (\(\gamma\)) が 0 の場合、 PoS+ コンセンサスは、従来の PoS と同じように動作します。 |