このドキュメントでは、バリデーターに支払われるバウンティの決定方法と、各バリデーターのデリゲーター(該当する場合)に分配するSKALEネットワーク上の計算方法について説明します。これらの計算は、各エポックの終了後にネットワーク上のノードによってトリガーされ、実際の計算と分配はEthereumメインネット上で実行されているSKALEスマートコントラクトによって実行されます。

SKALEネットワークとバウンティの計算

開発者は、チェーンのサイズ(小、中、大)、チェーンの期間(6ヶ月、12ヶ月、24ヶ月)を選択してSKALEネットワーク上にチェーンを作成し、ネットワークリソースを提供するためにSKALEトークンをステーキングします。SKALEトークンは、SKALEコントラクトを介してEthereumメインネットにステークされます。毎月、このステークの中から一定額のトークンがバウンティプールに移動し、ネットワーク上のバリデーターに対する支払いに使用されます。

また、インフレーション(新規発行)イベントも毎月行われ、Ethereumメインネット上のコントラクトによって新しいSKALEトークンが作成され、バリデーターへの支払いのためにバウンティプールにプッシュされます。例えば、ネットワーク上に1,000人のバリデーターノードが存在し、全ノードが正常に機能している場合、各ノードはステーキングと新規発行によって構成されるバウンティプールから毎月バウンティを獲得します。

トークンがネットワーク上にステークされている期間に応じて支払いを調整するモディファイア・コンポーネントがあるため、バリデーターへの分配は必ずしも均等に行われるわけではないことに注意してください。例えば、12ヶ月間ロックされているトークンを持つノードの割合は、3ヶ月または6ヶ月間ロックされているノードよりも高くなります。6ヶ月と12ヶ月のデリゲーションは2021年に有効になります(正確な日付は未定) 。


専門用語

MSR:

ネットワークにノードを登録するために必要な最小ステーキング要件

エポック:

エポックとは、バウンティが計算され、バリデーターやデリゲーターへの支払い期間のことです。1つのエポックはUTCの月初めからUTCの月終わりの深夜に終了します。月の日数に関係なく、常に暦月であるため、「日数」の計算は行われません。デリゲーターはトークンを特定のバリデーターにデリゲーションしなければならず、エポックの開始前にバリデーターがデリゲーションを承認しなければなりません。エポックが開始されると、デリゲーターはバウンティの獲得を開始しますが、後述するようにバウンティが減少する可能性があります。

デリゲーション:

デリゲーションとは、ノードの実行に必要なステ―キング総額(担保)の一部を提供し、その見返りにバリデーションから得られるバウンティの一定割合を受け取ることを指します。デリゲーションはバリデーターとの合意のもとに行われ、ノード単位ではなくバリデーター単位で行われます。

デリゲーター:

デリゲーターとは、バリデーターとデリゲーション契約を結ぶ個人または団体のことを指します。バリデーターはデリゲーターからのデリゲーションを受け入れるか、自分でデリゲートするかを選択することができます。

デリゲーション期間:

デリゲーション期間とは、デリゲーターが選択したデリゲーション期間のことを指します。ローンチ時には、デリゲーション期間は2ヶ月に設定されていましたが、この時点でデリゲーターはデリゲートの継続について選択することができます。

アンデリゲーション:

アンデリゲーションは、バリデーターとのデリゲーション契約を撤回することを指します。エポック中にデリゲーションを行う際には、デリゲーターがアンデリゲーションを依頼しなければなりません。推奨されるアンデリゲーションの申請期間は、エポック終了の7日以上前とします。デリゲーターは、デリゲーションが終了すると、獲得したバウンティを含めた資金をバリデーターから出金することができます。(近い将来、アンデリゲーションの申請期限はエポック終了の3日前になり、この実装はオンチェーンになります)

バウンティ:

バウンティとは、ネットワークに登録されているノードごとに分配されるバウンティのことです。初期エポックの間、SLA要件を満たす各ノードは、同じバウンティの量を受け取ります。バウンティにはインフレ率が含まれており、将来的にはインフレ率に加えてチェーン・サブスクリプション料からの収入も含まれます。

手数料:

手数料はバリデーターによって設定され、デリゲーターのデリゲーション申請と受諾の一部として各デリゲーターが合意します。これは、バリデーターに授与されるバウンティの支払いからバリデーターが受け取る割合を指定するものです。この割合は、バウンティの支払い計算時に考慮されます。支払金額から手数料を差し引いた額が各デリゲーターに分配されます。

ノード作成ウィンドウ:

ノード作成ウィンドウは、エポックの最初の3日間です。バリデーターは、翌月に支払いを受け取るために、ノード登録ウィンドウ内にノードを登録する必要があります。このウィンドウの後に行われたノード登録も許可され、支払いに含まれます。ただし、支払いは2ヶ月後となります。

バリデーターとデリゲーターの出金

エポック終了の1時間前(午前0時 UTC)に、バリデーター手数料とデリゲーターバウンティの計算が行われ、エポック終了時にバリデーターとデリゲーターは出金することができます。(ノード登録ウィンドウ内にノードが登録されている場合に限ります)

バリデーターとデリゲーターによる出金は、Ethereumメインネット上で動作するディストリビュータ・コントラクト上の関数を介して実行されます。バリデーターは「withdrawFee」コールを利用して手数料に応じたバウンティを受け取り、デリゲーターは「withdrawBounty」コールを利用してデリゲーション・バウンティを受け取ります。


注意事項

  • WithdrawBountyとWithdrawFeeは、獲得したバウンティはいつでも呼び出すことができることに注意してください。手数料やバウンティが利用可能であれば、いつでも(その日、数週間後、数ヶ月後、あるいは数年後でも)出金することができます。
  • 出金額は常に出金可能な全金額です。(つまり、部分的な出金は認められていません)出金の手数料コストは、出金時の現在のETH手数料価格に依存します。
  • どちらの形式の出金も、バリデーターまたはデリゲーターのワークフローの一部であり、各バリデーターまたはデリゲーターの裁量で開始します。
  • デリゲーターの出金は、現在バリデーター毎に行われています。(デリゲーターが5つの異なるバリデーターにデリゲートした場合は、5回に分けて出金を行う必要があります)

デリゲーション・ステート

以下のリストは、バリデーターに関するデリゲーターのデリゲーション・ステートを示します。スマートコントラクトは、デリゲーターまたはバリデーターのパラメータとアクションを無効にして、ステートの変更を実行します。

提案

デリゲーターはバリデーターへのデリゲーションを提案。

受け入れ

バリデーターがデリゲーションを受け入れます。バリデーターがデリゲーションを受け入れない場合の唯一の理由は、デリゲーターに最適なバウンティを提供するためです。近い将来、バリデーターはすべてのデリゲーションを自動的に受け入れるオプションを選べることができるようになる予定です。

キャンセル

バリデーターがデリゲーションを受け入れなかった場合、デリゲーターはデリゲーションをキャンセルして別のバリデーターにデリゲートすることができます。

デリゲート

すべての受け入れられたデリゲーションは、毎月1日にデリゲート状態になり、デリゲーション期間が終了するか、アンデリゲーションが要求されるまで、このステータス状態を維持します。

アンデリゲーション申請

チェーン上のトークン保有者のデフォルトは自動デリゲーションです。トークン保有者がデリゲーションを停止したい場合や、自動デリゲーションを希望しない場合は、デリゲーションの解除を申請する必要があります。デリゲーターは、問題のデリゲーション・エポックの開始前にこのオペレーションを要求することはできません。(注意:推奨されるデリゲーション解除の要求期間は、エポック終了の7日以上前です)

完了

デリゲーターが特定のデリゲーションの解除を要求する場合、デリゲーション期間の終了時にステートは完了となります。

拒否

バリデーターがデリゲーションを受け入れず、エポック開始前にデリゲーターがデリゲーションを取り消さなかった場合、 次のエポック開始までに該当するデリゲーションは自動的に拒否されます。バリデーターにはデリゲーションを拒否する機能はありません。

デリゲーション・フルコンプリート・サイクル

デリゲーションの拒否

バリデーターが承認しないデリゲーションは、エポックの開始が拒否されます。

デリゲーションのキャンセル

デリゲーションは、提案された状態になってからでないと解除できません。


ノードの登録と出金のタイムライン

ノードはエポック開始前に登録することはできないため、エポック開始後に登録する必要がある。理由は、各エポックの開始時に最小ステーキング要件が満たされているかどうかをチェックするためです。(バリデーターが一定量のデリゲーションを受け入れている場合、スマートコントラクトはその時点のエポック中にデリゲーションが「デリゲート」状態になっているかどうかをチェックします)

もう一つの注意すべき重要な項目は、タイムリーな手数料とバウンティの出金を可能にするために、ノード登録ウィンドウ内にノードを登録する必要があるということです。バウンティの計算と分配はエポックの終了後に行われますが、出金日はノードが登録ウィンドウ内に登録されているかどうかによって決定します。ウィンドウ外に登録された場合は、2ヶ月後にリリースされます。例えば、3月3日以前にノードに参加した場合、4月1日にバリデーター・バウンティを受け取れますが、3月4日以降に参加した場合は、5月1日にバウンティを受け取ることになります。

バウンティ・ワークフロー・スマートコントラクト

バウンティは各エポックの終了後に計算され、支払いが行われます。各エポックの終了時に、各ノードはEthereumメインネット上のSKALEコントラクトを呼び出して、バリデーターとその後のデリゲーターへのバウンティの分配を開始します(この方法はゲット・バウンティと呼ばれ、SKALEマネージャーのスマートコントラクト上に存在します)。

この関数はノードのバウンティを計算し、各バリデーターとそのデリゲーターにテーマを割り当てます。バウンティはノードではなくバリデーターに支払われることに注意してください。ただし、ノード作成ウィンドウ内でノードが登録されているかどうかは、 出金ウィンドウに依存します。バウンティの計算後、適切なバウンティがバリデーターに分配され、バリデーター手数料とデリゲーション金額を差し引いた金額がデリゲーターに支払われます。(バウンティ・スマートコントラクト上の機能を利用)

ノードがバウンティ・コールを開始できない理由

ノードがバウンティ・コールを開始できない理由をいくつか挙げます。ノードはバウンティ・コールが成功するまで毎分呼び出しを続けます。(ノードまたは基礎となるコンテナが操作可能の場合)

  • ノードがダウンしている場合
  • バウンティコンテナがダウンしている場合
  • トランザクション・コールを容易にするための十分なETHがノード存在しない場合
  • Ethereumのエンドポイントが正常に動作しない場合
  • ノードがメンテナンスモードになっている場合

ノード作成ウィンドウ中は、ゲットバウンティの呼び出しができないことに注意してください。何らかの理由でノードが長時間ダウンしていたり、上記の理由でエポック終了後にバウンティを呼び出すことができない場合は、次のノード作成ウィンドウの終了後にのみゲットバウンティを呼び出す必要があります。

ネットワーク・インフレーション

以下は、SKALEネットワークのネットワーク・インフレーションを一覧表にしたものです。このインフレーションは、Ethereumメインネット上のコントラクトによって決定され、コントロールされるSKLトークンの発行という形式で行われます。


開始日

インフレーション


インフレーション率%

1

2020年10月01日

385,000,000

8.21

2

2021年10月01日

346,500,000

6.83

3

2022年10月01日

308,000,000

5.68

4

2023年10月01日

269,000,000

4.69

5

2024年10月01日

231,000,000

3.85

6

2025年10月01日

192,500,000

3.09

7

2026年10月01日

96,250,000

1.50

8

2027年10月01日

96,250,000

1.48

9

2028年10月01日

96,250,000

1.46

10

2029年10月01日

48,125,000

0.72

11

2030年10月01日

48,125,000

0.71

12

2031年10月01日

48,125,000

0.71

13

2032年10月01日

24,062,000

0.35

14

2033年10月01日

24,062,000

0.35

15

2034年10月01日

24,062,000

0.35

SKALEトークンエコノミクスの詳細については、コナー・マーフィー著のSKALEバリデーター&デリゲーター トークンエコノミクスをご覧ください。

推定される初期エポックバウンティ

SKALEネットワーク内のバリデーター・ノードの最新エポックにおける報酬の計算結果をSKLトークンで表示しています。バリデーターのステーク期間に応じて、支払いの計算に若干の修正が加えられていますが、最初の支払い時点ではこの修正は利用されず、バリデーターには平等に支払いが行なわれます。現在の最小ステーキング要件(MSR)は20m SKLトークンです。

初年度:385,000,000 SKL
初年度 エポックあたり:32,083,333 SKL

ノードNo.

ノードあたりの平均SKL

エポック 2020 10月

133

241,228

エポック 2020 11月

146

219,749

エポック 2020 12月

150

213,888

ノード毎のSKLバウンティの計算例

以下の計算では、トークンの総供給量やインフレーションレートなどのネットワーク定数とノードの数やコミッションレートなどのネットワーク変数を組み合わせて、バリデーターセット全体に配布されるSKLトークンの数を決定します。

ご確認下さい:https://activate.codefi.network/skale/calculatorステーキングによるSKLの獲得予定リワードをこちらで確認できます。


手数料を10%とし、ノードの数を150とし、すべてのデリゲーション期間とバウンティ倍率が同じであると仮定すると、以下のような出力が得られます。

[手数料率] = 1 - [10%手数料] = 0.9

[エポックあたりのノード分布] = 385,000,000 / Month#InAYear / 385,000,000 / Month#InAYear / 385,000,000 / Month#InAYear

[#OfNodes] = 213,888

[すべてのデリゲーターへ分配] = 213,888 * [手数料率] = 192,499

[期待されるバリデーター手数料] = 213,888 * [10%手数料] = 21,388

デリゲーターへのバウンティ分配例:

デリゲーション金額

必要経費率

バウンティ月額合計

2ヶ月後

10,000,000

192,499 * 10,000,000/ 20,000,000

96249

192,498

2,000,000

192,499 * 2,000,000/ 20,000,000

19249

38,498

5,000,000

192,499 * 5,000,000 / 20,000,000

48124

96,248

2,990,000

192,499 * 2,990,000 / 20,000,000

28778

57,556

10,000

192,499 * 10,000 / 20,000,000

96

192


ノード・バウンティの計算

この計算式は、インフレーションを含む特定のエポックにおけるバウンティの総額を計算し、バリデーターのノード毎のバウンティ分布を割り当てるアルゴリズムを詳述しています。この計算式では、デリゲーション期間が長い場合の乗数も考慮されます。

現在の規格では、デリゲーション期間は2ヶ月です。SKALEネットワークが6ヶ月と12ヶ月のデリゲーション期間を有効にした場合、これらのデリゲーションは、より短い期間でデリゲーションを行うデリゲーターと比較してより多くのバウンティを受け取ることができます。


B ⇒ インフレーション・アルゴリズムで算出した特定月のバウンティ総額 + 前月のバウンティ(バウンティ削減やノード離脱)

初年度のバウンティはエポック毎に32,083,333です。

effectiveDelegations (validator (node) ) ⇒

ステーク比率乗数を使用して、バリデーターにステークされた合計金額です。SKALEネットワークが異なる持ち分の乗数を持つ6ヶ月と12ヶ月のデリゲーションを可能にする場合、その差額が表示されます。6ヶ月と12ヶ月のデリゲーションを受けたバリデーターは、より大きなバウンティを受け取ることができます。

∑ effectiveDelegations(v) ⇒

SKALEネットワークのステーク倍率の合計値です。

[delegations(validator(node)/MSR] ⇒

バリデーターがネットワークに登録可能なノードの総数です。この部分は、バリデーターが登録されたノードに対してのみバウンティを提供できるようにするためのものです。前月までに登録したアクティブなノードが5つあるが、MSRが4つしか登録できない場合、4つのノードに対してのみバウンティを提供することができます。

MSR ⇒

SKALEネットワークにノードをセットアップするための最小ステーク要件です。

最後に、ノードごとのバウンティの計算方法を簡略化したものを紹介します。

例 - ステーキング乗数の適用

ここでは、類似する2つのバリデーターがデリゲーションとステーキングの乗数を持ちながら、ノード数が異なる場合の例を示します。

バリデータ

デリゲーション金額

デリゲーション期間

ステーキング倍率

ノード数

バリデーター A

42,000,000

すべてのデリゲーション 2ヶ月

1

2

バリデーター B

20,000,000

すべてのデリゲーション 2ヶ月

1

1

ネットワークの残りの部分

2,940,000,000

すべてのデリゲーション 2ヶ月

1

1

ノード毎のバウンティ - バリデーターA

ノード毎のバウンティは224,433に相当します。月のバウンティ総額は、224,433* NodeCount(2) = 448,866です。

ノード毎のバウンティ - バリデーターB

ノード毎のバウンティは213,746に相当します。月のバウンティ総額は213,746 * NodeCount(1) = 213,746となります。

例 - 異なるステーキング・バウンティ

この図は、バリデーターがMSRの要件を満たす場合に、ノードとして登録すべき理由を説明しています。

バリデーターDの場合、1つの未登録ノードのバウンティは、バリデーターDによって支払われたり、出金することはできません。その代わり、翌月にコミュニティ・バウンティプールからバウンティとして追加され、ネットワーク全体のノードにシェアされます。バリデーターは、ノード作成ウィンドウ内(つまり月初3日以内)にネットワークにノードを登録する責任があります。

バリデーター

デリゲーション金額

ノード数

バウンティ

デリゲーション期間

倍率

バリデーター A

60,000,000

3

641,238

2ヶ月

1

バリデーター B

70,000,000

3

748,110

2ヶ月

1

バリデーター C

79,000,000

3

844,296

2ヶ月

1

バリデーター D

80,000,000

3

641,238

2ヶ月

1

バリデーター E

80,000,000

4

854,984

2ヶ月

1

ネットワークの残りの部分

2,633,000,000

-

-

2ヶ月

1

概要

SKALEネットワークのバウンティ分配プロセスは、ネットワーク内のノードによって最初にトリガーされますが、実際の計算、インフレ率、バリデーターとデリゲーターの支払いプロセスは、Ethereumメインネット上で実行されているSKALEスマートコントラクトによって実行されます。この構造により、SKALEはEthereumのセキュリティ保証の多くを継承しながらも、真の分散型Web3クラウドの利点(増加したトランザクションの処理速度、より速いトランザクションのファイナリティ、およびはるかに安価なトランザクション手数料)を提供することができます。

これらの計算の透明性とバリデーターおよびデリゲーターへのバウンティは、分散型の世界が持つべき素晴らしいものではなく、必然的なものであるといえます。

この記事は、ソリューション・エンジニアリングのディレクターであるエブル・エングウォール氏が、技術担当副社長のDmytro Stebaiev氏が提供するデータ、アルゴリズム、洞察に沿って執筆したものです。

参照先:https://skale.network/blog/network-bounties-and-delegation-workflow/