メインコンテンツへスキップ
Change page

アテステーション

最終編集者: @, 2023年8月15日

バリデータは、各エポックにおいて、アテステーションを作成、署名し、ブロードキャストする必要があります。 このページでは、アテステーションがどのような内容を持つか、およびどのように処理され、コンセンサスを実現するクライアント間でどのようにやりとりされるかについての概要を説明します。

アテステーションとは何か?

バリデータは、エポック (6.4 分) ごとに、ネットワークに対するアテステーションを提案します。 アテステーションは、当該エポックにおける特定のスロットのみを対象とします。 アテステーションとは、チェーンに対するバリデータの意見を支持する投票を行うことです。具体的には、最新の正当化されたブロックと、現在のエポックにおける最初のブロック(それぞれ、ソースターゲットのチェックポイントと呼ぶ)を対象とします。 この情報は、参加するすべてのバリデータを対象として結合されるため、ネットワークがブロックチェーンの状態についてコンセンサスに達することが可能になります。

アテステーションには、以下の構成要素が含まれます:

  • aggregation_bits:バリデータ委員会における当該バリデータのインデックスにポジションがマッピングされたバリデータのビットリスト。この値(0 または 1)は、当該バリデータが当該データを署名したか否か(つまり、当該バリデータがアクティブであり、ブロック提案者に同意するか否か)を示します。
  • data:当該アテステーションに関する詳細情報(以下の定義を参照)。
  • signature:個々のバリデータの署名を集約した BLS 署名。

アテステーションを行うバリデータはまず、データ<./code>を構築する必要があります。 この<code>データには、以下の情報が含まれます:

  • slot:当該のアテステーションが参照するスロット番号。
  • index:特定のスロットにおいて、当該バリデータが所属する委員会を特定する番号。
  • beacon_block_root:当該バリデータが、(フォーク選択アルゴリズムを適用した結果として)チェーンの先頭にあると認識するブロックのルートハッシュ。
  • source:ファイナリティ投票の一部であり、当該バリデータがどのブロックを最も最近正当化されたブロックとして認識するかを示す。
  • target:ファイナリティ投票の一部であり、当該バリデータがどのブロックを現在のエポックにおける最初のブロックとして認識するかを示します。

dataが構築されると、バリデータは、自分が参加したことを示すために、自身のバリデータ・インデックスに対応したaggregation_bitsのビットを 0 から 1 に変更することができます。

バリデータは最後に、このアテステーションに署名し、ネットワークに送信します。

アテステーションの集約

このデータを各バリデータに提供する場合、ネットワークに対する負担が大きくなります。 このため、各バリデータからのアテステーションは、より広汎に送信する前にサブネット内で集約されます。 具体的には、各バリデータの署名を集約することで、送信されるアテステーションに当該コンセンサスのデータと、このデータに同意するすべてのバリデータの署名を結合した単一の署名が含まれるようにします。 これは、aggregation_bitsを用いて確認することができます。aggregation_bits は、各バリデータが所属する委員会におけるインデックス(バリデータの ID はデータに含まれています)であり、個々の署名に対してクエリを実行するために使用できるからです。

エポックごとに、各サブネットから 1 名のバリデータがアグリゲータに選定されます。 アグリゲータは、ゴシップネットワーク上において、自身のアテステーションと同等のデータを持つすべてのアテステーションを収集します。 データが一致するアテステーションを送信したすべてのユーザーは、aggregatoin_bitsに記録されます。 アグリゲータは次に、この集約されたアテステーションをより広汎なネットワークに送信します。

バリデータがブロック提案者に選定されると、当該の新規ブロックにおける最新のスロットまで、各サブネットからのアテステーションを集約して、パッケージ化します。

アテステーション追加のライフサイクル

  1. 生成
  2. 伝播
  3. 集約
  4. 伝播
  5. 追加

以下の図は、アテステーションのライフサイクルの概略を示したものです。

アテステーションのライフサイクル

報酬

バリデータは、アテステーションを提出することで報酬を得ます。 アテステーション報酬は、ベース報酬および追加の遅延という 2 つの変数により決定されます。 報酬は、追加の遅延が 1 に等しい場合に最も高額になります。

アテステーション報酬=7/8 x ベース報酬 x (1/追加の遅延)

ベース報酬

ベース報酬は、アテステーションを行うバリデータの数と、彼らの有効なステーク済みイーサ残高により計算されます。

base reward = validator effective balance x 2^6 / SQRT(Effective balance of all active validators)

追加の遅延

各バリデータがチェーンの先頭(ブロック n)で投票した時点では、ブロック n+1はまだ提案されていません。 このため、追加されるアテステーションは当然1 ブロック後になり、ブロック nがチェーンの先頭である時点で投票したすべてのバリデータのアテステーションはブロック n+1に含まれることになるため、追加の遅延は「1」になります。 アテステーション報酬は、ベース報酬に追加遅延の値の逆数を掛け合わせて算出されるため、追加の遅延が「2」スロットに倍増した場合、アテステーション報酬は 2 分の 1 になります。

アテステーションで発生しうるシナリオ

投票を行うバリデータが欠席する場合

バリデータがアテステーションを提出できるのは、最長で 1 エポックの期間です。 エポック 0 でアテステーションを提出しなかった場合、エポック 1 で提出できますが、追加遅延が発生します。

アグリゲータが欠席する場合

エポックごとに、合計 16 名のアグリゲータが存在します。 さらに、256 件のエポックを対象とする 2 つのサブネットを講読するランダムなバリデータが存在し、アグリゲータが欠席する際のバックアップとして機能します。

ブロック提案者が欠席する場合

運が良ければ、アグリゲータがブロック提案者になる場合もあります。 ブロック提案者が欠席したためにアテステーションが追加されなかった場合、次のブロック提案者がこの集約済みのアテステーションを継承して、次のブロックに追加します。 ただし、追加の遅延の値が 1 増えます。

参考文献

役に立つコミュニティリソースをご存知の場合は、 このページを編集して追加してください。

この記事は役に立ちましたか?