class Validator(Container):
pubkey: BLSPubkey
withdrawal_credentials: Bytes32 # Commitment to pubkey for withdrawals
effective_balance: Gwei # Balance at stake
slashed: boolean
# Status epochs
activation_eligibility_epoch: Epoch # When criteria for activation were met
activation_epoch: Epoch
exit_epoch: Epoch
withdrawable_epoch: Epoch # When validator can withdraw funds
검증자: 이더리움에서 검증자는 지분증명에 참여하여 블록을 제안하고 검증해 보상을 얻는 풀 노드를 말한다.
각 에포크 시점에서 활성화된 검증자 집합 은 해당 에포크의 각 슬롯 마다 하나씩 총 32개의 부분집합 으로 랜덤하게 분할된다.
검증자 위원회(Committee of Validators): 각 슬롯 에 할당된 검증자 부분집합 은 다시 m개(최대 64)의 위원회 로 분할되어 m개의 샤드체인에 각자 할당된다.
,
각 위원회 는 n명(최대 )의 검증자 들로 이루어진다.
,
제안자(Proposer): 이더리움에서 블록을 생성하여 네트워크를 통해 전파될 다음 블록을 제안하는 검증자를 제안자라고 한다.
증명자(Attester): 이더리움에서 제안된 블록의 유효성을 증명하는 검증자를 증명자라고 한다.
각 에포크 동안 각 검증자는 증명을 합니다
BLS(Boneh-Lynn-Shacham) 서명: 서명의 매우 효율적인 집계를 가능하게 할 뿐만 아니라 집계된 개별 검증자 키의 역엔지니어링도 가능하게 하며 검증자 간의 작업을 관리하는 데 이상적인 서명방식.
검증자 키(Validator Key): BLS
검증자 개인키(Validator Private Key): 블록 제안 및 증명과 같은 온체인 작업에 서명하는 키.
검증자 공개키(Validator Public Key): 사용자가 스테이킹 입금 컨트랙트에 이더를 입금할 때 식별자로서 입금 데이터에 포함되는 키.
출금 키(Withdrawal Key): 오프라인 BLS 출금 키를 처음 입금할 때 설정하지 않은 경우, 출금 자격 증명이 실행 주소를 가리키도록 업데이트해야 한다. 이렇게 하면 초과 잔액 지급이 처리되기 시작하고 사용자가 스테이킹한 이더를 완전히 출금할 수 있다.
출금 개인키(Withdrawal Private Key): 블록 제안 및 증명과 같은 온체인 작업에 서명하는 키.
출금 공개키(Withdrawal Public Key): 사용자가 스테이킹 입금 컨트랙트에 이더를 입금할 때 식별자로서 입금 데이터에 포함되는 키.
출금자격증명(Withdrawal Credentials): 출금자격을 증명하는 출금 키의 해시값.
누구든 네트워크의 이더만 있다면 검증자 ID를 만들 수 있고, 블록 생성 권한 또한 자신의 ID에 연결된 지분의 양으로 결정된다.
입금 컨트랙트(deposit contract):
입금함수: 32 이상의 이더를 첨부하여 컨트랙트에 입금하는 함수 deposit(pubkey,withdrawal_credentials,signature,deposit_data_root)
입금트리(Deposit Tree): 입금함수를 호출하면 입금데이터가 추가되는 컨트랙트의 구조체 트리.
입금메세지(Deposit Message):
class DepositMessage(Container):
pubkey: BLSPubkey
withdrawal_credentials: Bytes32
amount: Gwei
class DepositData(Container):
pubkey: BLSPubkey
withdrawal_credentials: Bytes32
amount: Gwei
signature: BLSSignature # Signing over DepositMessage
검증자로 참여하려면 풀 노드는 네트워크에 32 이더를 예치해야 한다. 또한 실행 클라이언트, 합의 클라이언트에 추가적으로 검증자 클라이언트의 자신의 노드에 연결된 검증자 소프트웨어를 실행해야 한다.
예치한 이더 지분에 비례해 블록 생성 권한을 부여받는다?
모든 검증자는 입금 시 검증자 인덱스(ValidatorIndex
)가 지정된다.
노드가 스테이킹을 완료하면 검증자 활성화 대기열에 들어가게 된다. 대기열은 새로운 검증자의 비율을 제한하기 위해 존재한다.