Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,42 +1,42 @@
---
title: アテステーション
description: イーサリアムのプルーフ・オブ・ステークにおけるアテステーションについての説明
title: "アテステーション"
description: "イーサリアムのプルーフ・オブ・ステークにおけるアテステーションについての説明"
lang: ja
---

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

## アテステーションとは何か? {#what-is-an-attestation}

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

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

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

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

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

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

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

### アテステーションの集約 {#aggregated-attestation}
### 集約アテステーション {#aggregated-attestation}

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

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

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

### アテステーション追加のライフサイクル {#attestation-inclusion-lifecycle}
### アテステーション取り込みのライフサイクル {#attestation-inclusion-lifecycle}

1. 生成
2. 伝播
Expand All @@ -46,7 +46,7 @@ lang: ja

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

![アテステーションのライフサイクル](./attestation_schematic.png)
![アテステーションライフサイクル](./attestation_schematic.png)

## 報酬 {#rewards}

Expand All @@ -64,29 +64,29 @@ lang: ja

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

`base reward = validator effective balance x 2^6 / SQRT(Effective balance of all active validators)`
`ベース報酬 = バリデータ有効残高 x 2^6 / SQRT(全アクティブバリデータの有効残高)`

#### 追加の遅延 {#inclusion-delay}
#### 取り込み遅延 {#inclusion-delay}

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

### アテステーションで発生しうるシナリオ {#attestation-scenarios}
### アテステーションのシナリオ {#attestation-scenarios}

#### 投票を行うバリデータが欠席する場合 {#missing-voting-validator}
#### 投票バリデータの欠落 {#missing-voting-validator}

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

#### アグリゲータが欠席する場合 {#missing-aggregator}
#### アグリゲータの欠落 {#missing-aggregator}

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

#### ブロック提案者が欠席する場合 {#missing-block-proposer}
#### ブロック提案者の欠落 {#missing-block-proposer}

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

## 参考文献 {#further-reading}
## 参考リンク {#further-reading}

- [Vitalikのコンセンサス仕様(注釈付)におけるアテステーションの説明](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#attestationdata)
- [eth2book.infoにおけるアテステーションの説明](https://eth2book.info/capella/part3/containers/dependencies/#attestationdata)
- [Vitalikの注釈付きコンセンサス仕様のアテステーション](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#attestationdata)
- [eth2book.infoのアテステーション](https://eth2book.info/capella/part3/containers/dependencies/#attestationdata)

_役に立つコミュニティリソースをご存知の場合は、 このページを編集して追加してください。_
_役に立つコミュニティリソースを知っていますか? Edit this page and add it!_
Loading