---
title: "증명"
description: "지분 증명 이더리움의 증명에 대한 설명입니다."
lang: ko
---

검증자는 매 에포크마다 증명을 생성, 서명 및 브로드캐스트해야 합니다. 이 페이지는 이러한 증명이 어떻게 생겼는지, 그리고 합의 클라이언트 간에 어떻게 처리되고 통신되는지 개략적으로 설명합니다.

## 증명이란 무엇인가요? {#what-is-an-attestation}

매 [에포크](/glossary/#epoch)(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로 뒤집어 참여했음을 표시할 수 있습니다.

마지막으로 검증자는 증명에 서명하고 이를 네트워크에 브로드캐스트합니다.

### 집계된 증명 {#aggregated-attestation}

모든 검증자에 대해 이 데이터를 네트워크에 전달하는 데는 상당한 오버헤드가 발생합니다. 따라서 개별 검증자의 증명은 더 널리 브로드캐스트되기 전에 서브넷 내에서 집계됩니다. 여기에는 서명을 함께 집계하는 것이 포함되므로, 브로드캐스트되는 증명에는 합의 `data`와 해당 `data`에 동의하는 모든 검증자의 서명을 결합하여 형성된 단일 서명이 포함됩니다. 이는 `aggregation_bits`를 사용하여 확인할 수 있는데, 이는 개별 서명을 쿼리하는 데 사용할 수 있는 위원회(ID는 `data`에 제공됨) 내 각 검증자의 인덱스를 제공하기 때문입니다.

각 에포크마다 각 서브넷에서 16명의 검증자가 `aggregators`로 선택됩니다. 집계자는 가십 네트워크를 통해 수신한 증명 중 자신의 것과 동일한 `data`를 가진 모든 증명을 수집합니다. 일치하는 각 증명의 발신자는 `aggregation_bits`에 기록됩니다. 그런 다음 집계자는 증명 집계본을 더 넓은 네트워크에 브로드캐스트합니다.

검증자가 블록 제안자로 선택되면, 서브넷의 집계된 증명들을 새 블록의 최신 슬롯까지 패키징합니다.

### 증명 포함 수명 주기 {#attestation-inclusion-lifecycle}

1. 생성
2. 전파
3. 집계
4. 전파
5. 포함

증명 수명 주기는 아래 개요도에 요약되어 있습니다.

![attestation lifecycle](./attestation_schematic.png)

## 보상 {#rewards}

검증자는 증명을 제출하면 보상을 받습니다. 증명 보상은 참여 플래그(소스, 타겟 및 헤드), 기본 보상 및 참여율에 따라 달라집니다.

각 참여 플래그는 제출된 증명과 그 포함 지연 시간에 따라 참(true) 또는 거짓(false)이 될 수 있습니다.

가장 좋은 시나리오는 세 개의 플래그가 모두 참일 때 발생하며, 이 경우 검증자는 (올바른 플래그당) 다음을 얻게 됩니다.

`reward += base reward * flag weight * flag attesting rate / 64`

플래그 증명 비율은 총 활성 유효 잔고와 비교하여 해당 플래그에 대해 증명하는 모든 검증자의 유효 잔고 합계를 사용하여 측정됩니다.

### 기본 보상 {#base-reward}

기본 보상은 증명하는 검증자의 수와 그들의 유효 스테이킹된 이더 잔고에 따라 계산됩니다.

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

#### 포함 지연 {#inclusion-delay}

검증자가 체인의 헤드(`block n`)에 투표할 당시에는 `block n+1`이(가) 아직 제안되지 않았습니다. 따라서 증명은 자연스럽게 **한 블록 뒤에** 포함되므로, `block n`을 체인 헤드로 투표한 모든 증명은 `block n+1`에 포함되며 <strong>포함 지연</strong>은 1이 됩니다. 포함 지연이 두 슬롯으로 두 배가 되면 증명 보상은 절반으로 줄어듭니다. 증명 보상을 계산할 때 기본 보상에 포함 지연의 역수를 곱하기 때문입니다.

### 증명 시나리오 {#attestation-scenarios}

#### 누락된 투표 검증자 {#missing-voting-validator}

검증자는 증명을 제출할 수 있는 최대 1 에포크의 시간을 갖습니다. 에포크 0에서 증명을 놓친 경우, 에포크 1에서 포함 지연과 함께 제출할 수 있습니다.

#### 누락된 집계자 {#missing-aggregator}

에포크당 총 16명의 집계자가 있습니다. 또한, 무작위 검증자들은 <strong>256 에포크 동안 두 개의 서브넷</strong>에 가입하여 집계자가 누락될 경우를 대비한 백업 역할을 합니다.

#### 누락된 블록 제안자 {#missing-block-proposer}

경우에 따라 운이 좋은 집계자가 블록 제안자가 될 수도 있다는 점에 유의하세요. 블록 제안자가 누락되어 증명이 포함되지 않은 경우, 다음 블록 제안자가 집계된 증명을 선택하여 다음 블록에 포함시킵니다. 그러나 <strong>포함 지연</strong>은 1만큼 증가합니다.

## 더 읽어보기 {#further-reading}

- [비탈릭의 주석이 달린 합의 사양의 증명](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#attestationdata)
- [eth2book.info의 증명](https://eth2book.info/capella/part3/containers/dependencies/#attestationdata)

_도움이 된 커뮤니티 리소스를 알고 계신가요? 이 페이지를 편집하고 추가해 주세요!_