アテステーション
バリデータは、各エポック中にアテステーションを作成、署名、およびブロードキャストすることが期待されています。このページでは、これらのアテステーションがどのようなものか、またコンセンサスクライアント間でどのように処理され、通信されるかについて概説します。
アテステーションとは?
各(6.4分)ごとに、バリデータはネットワークにアテステーションを提案します。アテステーションは、エポック内の特定のスロットに対するものです。アテステーションの目的は、バリデータから見たチェーンの状態、特に最新のジャスティファイド・ブロックと現在のエポックの最初のブロック(sourceおよびtargetチェックポイントとして知られています)に賛成の投票を行うことです。この情報は参加しているすべてのバリデータについて結合され、ネットワークがブロックチェーンの状態についてコンセンサスに達することを可能にします。
アテステーションには以下のコンポーネントが含まれます:
aggregation_bits: バリデータのビットリスト。位置はコミッティ内のバリデータのインデックスに対応します。値(0/1)は、バリデータがdataに署名したかどうか(つまり、アクティブであり、ブロック・プロポーザーに同意しているかどうか)を示します。data: 以下で定義される、アテステーションに関する詳細signature: 個々のバリデータの署名を集約したBLS署名
アテステーションを行うバリデータの最初のタスクは、dataを構築することです。dataには以下の情報が含まれます:
slot: アテステーションが参照するスロット番号index: 特定のスロットでバリデータがどのコミッティに属しているかを識別する番号beacon_block_root: バリデータがチェーンの先頭にあると見なすブロックのルートハッシュ(フォーク選択アルゴリズムを適用した結果)source: バリデータが最新のジャスティファイド・ブロックとして見なすものを示す、ファイナリティ投票の一部target: バリデータが現在のエポックの最初のブロックとして見なすものを示す、ファイナリティ投票の一部
dataが構築されると、バリデータはaggregation_bits内の自身のバリデータインデックスに対応するビットを0から1に反転させ、参加したことを示すことができます。
最後に、バリデータはアテステーションに署名し、ネットワークにブロードキャストします。
集約されたアテステーション
すべてのバリデータについてこのデータをネットワーク上でやり取りすることには、かなりのオーバーヘッドが伴います。そのため、個々のバリデータからのアテステーションは、より広くブロードキャストされる前にサブネット内で集約されます。これには署名の集約も含まれるため、ブロードキャストされるアテステーションには、コンセンサスdataと、そのdataに同意するすべてのバリデータの署名を組み合わせた単一の署名が含まれます。これはaggregation_bitsを使用して確認できます。なぜなら、これによりコミッティ(そのIDはdataで提供されます)内の各バリデータのインデックスが提供され、個々の署名を照会するために使用できるからです。
各エポックにおいて、各サブネットの16人のバリデータがaggregatorsとして選ばれます。アグリゲーターは、ゴシップネットワークを通じて受信した、自身と同等のdataを持つすべてのアテステーションを収集します。一致する各アテステーションの送信者はaggregation_bitsに記録されます。その後、アグリゲーターは集約されたアテステーションをより広いネットワークにブロードキャストします。
バリデータがブロック・プロポーザーとして選ばれると、サブネットからの集約されたアテステーションを最新のスロットまで新しいブロックにパッケージ化します。
アテステーションのインクルージョン・ライフサイクル
- 生成
- 伝播
- 集約
- 伝播
- インクルージョン(ブロックへの取り込み)
アテステーションのライフサイクルは以下の図に概説されています:
報酬
バリデータはアテステーションを提出することで報酬を得ます。アテステーションの報酬は、参加フラグ(source、target、head)、基本報酬、および参加率に依存します。
各参加フラグは、提出されたアテステーションとそのインクルージョン遅延に応じて、trueまたはfalseのいずれかになります。
最良のシナリオは、3つのフラグすべてがtrueの場合に発生し、その場合バリデータは(正しいフラグごとに)以下を獲得します:
reward += base reward * flag weight * flag attesting rate / 64
フラグのアテステーション率は、特定のフラグについてアテステーションを行ったすべてのバリデータのエフェクティブ・バランスの合計を、アクティブなエフェクティブ・バランスの合計と比較して測定されます。
基本報酬
基本報酬は、アテステーションを行うバリデータの数と、ステークされたイーサのエフェクティブ・バランスに基づいて計算されます:
base reward = validator effective balance x 2^6 / SQRT(Effective balance of all active validators)
インクルージョン遅延
バリデータがチェーンの先頭(block n)に投票した時点では、block n+1はまだ提案されていませんでした。したがって、アテステーションは自然に1ブロック後に取り込まれるため、block nがチェーンの先頭であると投票したすべてのアテステーションはblock n+1に取り込まれ、インクルージョン遅延は1になります。インクルージョン遅延が2スロットに倍増すると、アテステーション報酬は半分になります。なぜなら、アテステーション報酬を計算するために、基本報酬にインクルージョン遅延の逆数が掛けられるからです。
アテステーションのシナリオ
投票するバリデータの欠落
バリデータはアテステーションを提出するために最大1エポックの猶予があります。エポック0でアテステーションを逃した場合、エポック1でインクルージョン遅延を伴って提出することができます。
アグリゲーターの欠落
1エポックあたり合計16人のアグリゲーターが存在します。さらに、ランダムなバリデータが256エポックの間2つのサブネットにサブスクライブし、アグリゲーターが欠落した場合のバックアップとして機能します。
ブロック・プロポーザーの欠落
場合によっては、運の良いアグリゲーターがブロック・プロポーザーになることもあることに注意してください。ブロック・プロポーザーが欠落したためにアテステーションが取り込まれなかった場合、次のブロック・プロポーザーが集約されたアテステーションを拾い上げ、次のブロックに取り込みます。ただし、インクルージョン遅延は1増加します。
参考文献
- Vitalikの注釈付きコンセンサス仕様におけるアテステーション (opens in a new tab)
- eth2book.infoにおけるアテステーション (opens in a new tab)
役に立ったコミュニティリソースをご存知ですか?このページを編集して追加してください!
ページの最終更新: 2025年10月21日
