본문으로 건너뛰기
Change page

지분 증명 보상 및 페널티

이더리움은 기본 암호화폐인 이더(ETH)를 사용하여 보호됩니다. 블록을 검증하고 체인의 헤드를 식별하는 데 참여하고자 하는 노드 운영자는 이더리움의 예치 컨트랙트에 이더를 예치합니다. 그런 다음 피어 투 피어 네트워크를 통해 수신된 새 블록의 유효성을 확인하고 포크 선택 알고리즘을 적용하여 체인의 헤드를 식별하는 검증자 소프트웨어를 실행하는 대가로 이더를 지급받습니다.

검증자에게는 두 가지 주요 역할이 있습니다. 1) 새 블록을 확인하고 유효한 경우 이에 대해 "증명"하는 것, 2) 전체 검증자 풀에서 무작위로 선택되었을 때 새 블록을 제안하는 것입니다. 검증자가 요청을 받았을 때 이 두 가지 작업 중 하나라도 수행하지 못하면 이더 지급을 놓치게 됩니다. 검증자는 때때로 서명 집계 및 동기화 위원회 참여 임무를 맡기도 합니다.

또한 동일한 슬롯에 대해 여러 블록을 제안하거나 동일한 슬롯에 대해 여러 블록을 증명하는 등 실수로 수행하기 매우 어렵고 악의적인 인텐트를 나타내는 일부 작업도 있습니다. 이는 "슬래싱" 가능한 행동으로, 검증자가 네트워크에서 제거되기 전에 일정량의 이더(최대 1 ETH)가 소각되며, 제거에는 36일이 걸립니다. 슬래싱된 검증자의 이더는 종료 기간 동안 서서히 줄어들지만, 18일째에는 "상관관계 페널티(correlation penalty)"를 받게 되며, 이는 비슷한 시기에 더 많은 검증자가 슬래싱될수록 커집니다. 따라서 합의 메커니즘의 인센티브 구조는 정직함에 보상하고 악의적인 행위자를 처벌합니다.

모든 보상과 페널티는 에포크당 한 번씩 적용됩니다.

자세한 내용은 계속 읽어보세요...

보상 및 페널티

보상

검증자는 대다수의 다른 검증자와 일치하는 투표를 할 때, 블록을 제안할 때, 그리고 동기화 위원회에 참여할 때 보상을 받습니다. 각 에포크의 보상 가치는 base_reward에서 계산됩니다. 이는 다른 보상이 계산되는 기본 단위입니다. base_reward는 최적의 조건에서 검증자가 에포크당 받는 평균 보상을 나타냅니다. 이는 다음과 같이 검증자의 유효 잔고와 활성 검증자의 총 수에서 계산됩니다.

base_reward = effective_balance * (base_reward_factor / (base_rewards_per_epoch * sqrt(sum(active_balance))))

여기서 base_reward_factor는 64, base_rewards_per_epoch는 4, sum(active balance)는 모든 활성 검증자에 걸쳐 스테이킹된 총 이더입니다.

이는 기본 보상이 검증자의 유효 잔고에 비례하고 네트워크의 검증자 수에 반비례함을 의미합니다. 검증자가 많을수록 전체 발행량은 커지지만(sqrt(N)이므로), 검증자당 base_reward는 작아집니다(1/sqrt(N)이므로). 이러한 요소는 스테이킹 노드의 APR에 영향을 미칩니다. 이에 대한 근거는 비탈릭의 노트 (opens in a new tab)에서 읽어보세요.

그런 다음 총 보상은 각 구성 요소가 총 보상에 얼마나 추가되는지를 결정하는 가중치를 가진 5가지 구성 요소의 합으로 계산됩니다. 구성 요소는 다음과 같습니다.

1. source vote: 검증자가 올바른 소스 체크포인트에 대해 적시에 투표했습니다.
2. target vote: 검증자가 올바른 타겟 체크포인트에 대해 적시에 투표했습니다.
3. head vote: 검증자가 올바른 헤드 블록에 대해 적시에 투표했습니다.
4. sync committee reward: 검증자가 동기화 위원회에 참여했습니다.
5. proposer reward: 검증자가 올바른 슬롯에 블록을 제안했습니다.

각 구성 요소의 가중치는 다음과 같습니다.

TIMELY_SOURCE_WEIGHT	uint64(14)
TIMELY_TARGET_WEIGHT	uint64(26)
TIMELY_HEAD_WEIGHT	uint64(14)
SYNC_REWARD_WEIGHT	uint64(2)
PROPOSER_WEIGHT	uint64(8)

이 가중치의 합은 64입니다. 보상은 적용 가능한 가중치의 합을 64로 나눈 값으로 계산됩니다. 적시에 소스, 타겟 및 헤드 투표를 하고, 블록을 제안하고, 동기화 위원회에 참여한 검증자는 64/64 * base_reward == base_reward를 받을 수 있습니다. 그러나 검증자는 일반적으로 블록 제안자가 아니므로 최대 보상은 64-8 /64 * base_reward == 7/8 * base_reward입니다. 블록 제안자도 아니고 동기화 위원회에도 속하지 않은 검증자는 64-8-2 / 64 * base_reward == 6.75/8 * base_reward를 받을 수 있습니다.

빠른 증명을 장려하기 위해 추가 보상이 더해집니다. 이것이 inclusion_delay_reward입니다. 이는 base_reward1/delay를 곱한 값과 같으며, 여기서 delay는 블록 제안과 증명을 분리하는 슬롯의 수입니다. 예를 들어, 블록 제안 후 1 슬롯 이내에 증명이 제출되면 증명자는 base_reward * 1/1 == base_reward를 받습니다. 증명이 다음 슬롯에 도착하면 증명자는 base_reward * 1/2를 받는 식입니다.

블록 제안자는 블록에 포함된 각 유효한 증명에 대해 8 / 64 * base_reward를 받으므로, 실제 보상 가치는 증명하는 검증자의 수에 비례하여 증가합니다. 블록 제안자는 제안된 블록에 다른 검증자의 잘못된 행동에 대한 증거를 포함하여 보상을 늘릴 수도 있습니다. 이러한 보상은 검증자의 정직함을 장려하는 "당근"입니다. 슬래싱을 포함하는 블록 제안자는 slashed_validators_effective_balance / 512로 보상을 받습니다.

페널티

지금까지는 완벽하게 잘 행동하는 검증자를 고려했지만, 적시에 헤드, 소스 및 타겟 투표를 하지 않거나 느리게 하는 검증자는 어떨까요?

타겟 및 소스 투표를 누락한 것에 대한 페널티는 증명자가 이를 제출했을 때 받았을 보상과 같습니다. 즉, 보상이 잔고에 추가되는 대신 동일한 가치가 잔고에서 차감됩니다. 헤드 투표를 누락한 것에 대한 페널티는 없습니다(즉, 헤드 투표는 보상만 받을 뿐 페널티는 받지 않습니다). inclusion_delay와 관련된 페널티도 없습니다. 보상이 검증자의 잔고에 추가되지 않을 뿐입니다. 블록 제안에 실패한 것에 대한 페널티도 없습니다.

보상 및 페널티에 대한 자세한 내용은 합의 사양 (opens in a new tab)에서 읽어보세요. 보상과 페널티는 벨라트릭스(Bellatrix) 업그레이드에서 조정되었습니다. 대니 라이언(Danny Ryan)과 비탈릭(Vitalik)이 이 Peep an EIP 비디오 (opens in a new tab)에서 이에 대해 논의하는 것을 시청하세요.

슬래싱

슬래싱은 검증자를 네트워크에서 강제로 제거하고 이와 관련된 스테이킹된 이더의 손실을 초래하는 더 심각한 조치입니다. 검증자가 슬래싱될 수 있는 방법에는 세 가지가 있으며, 모두 블록의 부정직한 제안 또는 증명에 해당합니다.

  • 동일한 슬롯에 대해 두 개의 다른 블록을 제안하고 서명하기
  • 다른 블록을 "둘러싸는" 블록을 증명하기(사실상 역사 변경)
  • 동일한 블록에 대해 두 후보를 증명하여 "이중 투표"하기

이러한 행동이 감지되면 검증자는 슬래싱됩니다. 이는 32 ETH 검증자의 경우 0.0078125가 즉시 소각되며(활성 잔고에 따라 선형적으로 비례), 그 후 36일의 제거 기간이 시작됨을 의미합니다. 이 제거 기간 동안 검증자의 스테이크는 서서히 줄어듭니다. 중간 지점(18일째)에는 슬래싱 이벤트 이전 36일 동안 슬래싱된 모든 검증자의 총 스테이킹된 이더에 비례하는 추가 페널티가 적용됩니다. 이는 더 많은 검증자가 슬래싱될수록 슬래싱의 규모가 커짐을 의미합니다. 최대 슬래싱은 슬래싱된 모든 검증자의 전체 유효 잔고입니다(즉, 슬래싱되는 검증자가 많으면 스테이크 전체를 잃을 수 있습니다). 반면, 단일하고 고립된 슬래싱 이벤트는 검증자 스테이크의 작은 부분만 소각합니다. 슬래싱된 검증자의 수에 비례하는 이 중간 지점 페널티를 "상관관계 페널티(correlation penalty)"라고 합니다.

비활동 누수

합의 레이어가 완결성 없이 4 에포크 이상 진행되면 "비활동 누수"라는 비상 프로토콜이 활성화됩니다. 비활동 누수의 궁극적인 목표는 체인이 완결성을 회복하는 데 필요한 조건을 만드는 것입니다. 위에서 설명했듯이 완결성을 위해서는 총 스테이킹된 이더의 2/3 절대다수가 소스 및 타겟 체크포인트에 동의해야 합니다. 전체 검증자의 1/3 이상을 차지하는 검증자가 오프라인 상태가 되거나 올바른 증명을 제출하지 못하면 2/3 절대다수가 체크포인트를 완결하는 것이 불가능합니다. 비활동 누수는 비활성 검증자에 속한 스테이크가 전체 스테이크의 1/3 미만을 제어할 때까지 서서히 줄어들게 하여, 남은 활성 검증자가 체인을 완결할 수 있도록 합니다. 비활성 검증자 풀이 아무리 크더라도 남은 활성 검증자는 결국 스테이크의 2/3 이상을 제어하게 됩니다. 스테이크 손실은 비활성 검증자가 가능한 한 빨리 다시 활성화하도록 하는 강력한 인센티브입니다! 비활동 누수 시나리오는 메달라(Medalla) 테스트넷에서 활성 검증자의 66% 미만이 블록체인의 현재 헤드에 대해 합의에 도달할 수 있었을 때 발생했습니다. 비활동 누수가 활성화되었고 결국 완결성을 되찾았습니다!

합의 메커니즘의 보상, 페널티 및 슬래싱 설계는 개별 검증자가 올바르게 행동하도록 장려합니다. 그러나 이러한 설계 선택에서 여러 클라이언트에 걸쳐 검증자를 균등하게 분배하도록 강력하게 인센티브를 제공하고 단일 클라이언트의 지배를 강력하게 억제하는 시스템이 나타납니다.

더 읽어보기

출처