이더리움 지분증명(3) - 블록 투표

이한길·2024년 7월 12일
0

이더리움

목록 보기
5/6

1. 실행블록 검증

증명자들은 합의 레이어의 가십 네트워크에서 새로운 실행블록을 수신한다. 합의 클라이언트는 수신한 실행블록에 포함된 트랜잭션들을 실행 클라이언트에 전달하여 로컬에서 다시 실행하여 제안된 상태 변경이 유효한지 검증하고, 블록 서명을 검증한다.

2. 실행블록 증명

블록이 유효하다고 검증되면 증명자는 해당 블록에 찬성한다는 증명데이터를 작성하고 서브넷에 전파한다.

증명데이터(Attestation Data): 증명의 내용을 나타내는 데이터.

class AttestationData(Container):
    slot: Slot
    index: CommitteeIndex
    # LMD GHOST vote
    beacon_block_root: Root
    # FFG vote
    source: Checkpoint
    target: Checkpoint
  • 슬롯(slot): 증명이 참조하는 슬롯 번호
  • 인덱스(index): 증명자가 속한 위원회 인덱스
  • LMD 고스트 투표:
    • 비콘블록 루트 해시(beacon_block_root): 검증자가 체인 헤드에서 보는 블록의 루트 해시(LMD 고스트 포크 선택 알고리즘을 적용한 결과)
  • 캐스퍼 FFG 투표:
    • 소스(source): 마지막으로 정당화된 체크포인트
    • 타겟(target): 최신 에포크 경계 블록(검증자가 현재 에포크의 첫 번째 블록으로 보는 것)

LMD 고스트 투표

LMD 고스트 투표(LMD GHOST Vote): 매 슬롯 Si,jS_{i,j}마다 64개의 위원회들의 모든 증명자들은 제안된 블록 Bi,jB_{i,j} 또는 그 이전 블록들 중 표준체인으로 지지하는 블록의 루트해시를 증명데이터에 첨부함으로써 포크를 선택하는 투표를 한다.

캐스퍼 FFG 투표

초다수 링크(Supermajority Link): 초다수(2/3) 이상의 표를 얻어

캐스퍼 FFG 투표(Casper FFG Vote): 매 슬롯 Si,jS_{i,j}마다 64개의 위원회들의 모든 증명자들은 마지막으로 정당화된 체크포인트와 초다수 링크로 연결될

3. 증명데이터 집계

각 에포크마다 각 서브넷에서 16명의 검증자가 집계자(Aggregator)로 선택된다. 집계자는 가십 네트워크를 통해 자신과 동치인 데이터를 가진 모든 증명데이터를 수집한다. 동치인 각 증명데이터의 발신자는 aggregation_bits에 기록된다. 그 후 집계자는 더 넓은 네트워크에 집계된 증명서를 전파한다.

증명서(Attestation):

class Attestation(Container):
    aggregation_bits: Bitlist[MAX_VALIDATORS_PER_COMMITTEE]
    data: AttestationData
    signature: BLSSignature
  • 증명자 목록(aggregation_bits): 검증자 인덱스에 매핑되는 검증자의 비트리스트, 즉 이 증명에 참여한 검증자 목록.

    • 증명자 목록의 인덱스 i의 값(0/1)은 검증자 인덱스가 i인 검증자가 서명했는지, 즉 활성화되어 있고 블록 제안자와 동의하는지를 나타낸다.
  • 증명데이터(data): 증명데이터.

  • 증명자 집계서명(signature): 모든 증명자들의 BLS 집계 서명.

수신한 노드의 검증자 클라이언트는 해당 블록이 유효하며 체인 관점에서 논리적으로 다음 블록임을 찬성하는 투표를 한다(즉, 포크 선택 규칙에 정의된 대로 가장 큰 비중의 표를 얻은 체인에 블록을 구축한다는 의미). 블록은 이에 찬성하는 각 노드의 로컬 데이터베이스에 추가된다.

  • 드물지만 단일 슬롯에 여러 개의 가능한 블록이 존재하거나 노드가 서로 다른 시간에 블록에 대해 듣게 되는 경우, 포크 선택 알고리즘은 가장 큰 가중치(검증자의 이더리움 잔액에 따라 조정된 검증자 수)를 가진 체인을 형성하는 블록을 선택한다.
profile
블록체인, 통계학, 수학, 인공지능 공부하고 있습니다

0개의 댓글