이더리움 2.0 — 비콘 체인(Beacon Chain)

Retin_HyunminAN
Hexlant
Published in
8 min readNov 28, 2018

이더리움 2.0의 시작, 비콘 체인

이더리움 2.0의 핵심은 비콘 체인이라 불리는 시스템 체인입니다. 이더리움 1.0의 블록 생성 방식이 POW(Proof of Work)였다면 이더리움 2.0의 블록 생성 방식은 POW에 비해 보안과 경제성 안정성이 강화된 POS(Proof of Stake) 방식입니다. 이 이더리움 2.0의 POS 시스템 체인이 곧 비콘 체인입니다.

비콘 체인은 POS 활성 검증인 집단(Active validator set)을 저장하고 관리합니다. POS 방식의 이더리움 2.0 초기 단계에서 검증인(Validator)이 되는 유일한 방법은 이더리움 1.0 POW 체인에 고정된 ETH 보증금(현재 32 ETH)을 예치하여 등록하는 것에서부터 시작됩니다. 이 보증금만 예치하고 등록한다면 기존 블록 마이너가 아니더라도 누구나 POS 블록 검증 시스템에 검증인으로 참여할 수 있습니다. 검증인으로의 승인은 예치금 트랜잭션이 등록된 이후 대기 프로세스(queuing process)와 비콘 체인 프로세스에 의해 처리되며, 등록 취소는 본인이 자발적으로 하거나 부정행위 발생 시 강제적으로 이루어집니다.

비콘 체인의 역할과 특징

비콘 체인은 다음 3가지의 주요한 역할을 합니다.

  • 활성 및 대기 중이거나 종료된 검증인 집단을 저장하고 유지 관리
  • 크로스링크스(Crosslinks) 처리
  • 고유한 블록별 합의 처리

비콘 체인의 프로세싱은 기존 POW 체인 프로세싱과 근본적으로 유사합니다. 클라이언트는 블록을 다운로드하고 처리하며 현재 ‘헤드’에 종료되는 ‘기준 체인’이 무엇인지에 대한 표기를 유지합니다. 그러나 비콘 체인과 기존 POW 체인의 관계 그리고 비콘 체인이 POS 체인이기 때문에 발생하는 차이점이 있습니다.

비콘 체인의 블록을 노드가 처리하려면 다음 네 가지 조건을 충족해야 합니다.

  • ancestor_hashes[0]에 지정된 부모 블록이 이미 처리되어 승인되어야 함.
  • 블록 제안자(Proposer)의 증명은 네트워크 메시지 객체의 블록과 함께 포함되어야 함.
  • processed_pow_receipt_root에 지정된 POW 블록은 이미 처리되어 승인되어야 함.
  • 노드의 로컬 시간은 state.genesis_time + block.slot * SLOT_DURATION 에 계산된 최소 타임스탬프 보다 같거나 커야 함.

위 조건이 충족되지 않으면, 클라이언트는 조건이 모두 충족될 때까지 비콘 블록 처리를 지연해야 합니다.

비콘 블록은 기존 POW 블록에 비해 POS 메커니즘에 의해 생성되기 때문에 의미 있는 차이점이 있습니다. 비콘 블록 클라이언트는 블록을 생성할 때 단순히 기준 체인뿐 아니라 슬롯 번호도 확인해야 하며 슬롯을 확인한 이후에 필요에 따라 블록을 생성하거나 증명하게 됩니다. 또한, 일정 시간 내에(즉, SLOT_DURATION의 표시된 수초 내에) 각 노드가 다른 노드와 동기화된 클럭을 가져야 함을 유의해야 합니다.

비콘 체인의 상수들

Ethereum 2.0 Phase 0 — The Beacon Chain

참고

  • 추천된 위원회(committee)의 최소 사이즈는 111이며, 목표치 중 최소한 절반의 위원회가 추천되도록 보장할 것입니다.
  • SQRT_E_DROP_TIME 상수는 비참여 검증인의 누출을 ~39.4%까지 줄이는 데 걸리는 시간입니다.
  • BASE_REWARD_QUOTIENT 상수는 총합 1ETH의 예치금과 모든 검증인이 참여한다고 할 때 주기당 이자율을 나타냅니다. 1,000만 ETH가 참여할 경우 연간 이자율은 약 2.57%에 해당합니다.
  • 검증자의 최대 1/MAX_VALIDATOR_CHURN_QUOTIENT는 각 검증인 집합 변경 중에 변경될 수 있습니다.

비콘 체인 블록 구조

BeaconBlock 필드

Ethereum 2.0 Phase 0 — The Beacon Chain

AttestationRecord 필드

Ethereum 2.0 Phase 0 — The Beacon Chain

AttestationSignedData 필드

Ethereum 2.0 Phase 0 — The Beacon Chain

ProposalSignedData 필드

Ethereum 2.0 Phase 0 — The Beacon Chain

SpecialRecord 필드

Ethereum 2.0 Phase 0 — The Beacon Chain

비콘 체인 상태 구조

BeaconState 필드

Ethereum 2.0 Phase 0 — The Beacon Chain

ValidatorRecord 필드

Ethereum 2.0 Phase 0 — The Beacon Chain

CrosslinkRecord 필드

Ethereum 2.0 Phase 0 — The Beacon Chain

ShardAndCommittee 필드

Ethereum 2.0 Phase 0 — The Beacon Chain

ShardReassignmentRecord 필드

Ethereum 2.0 Phase 0 — The Beacon Chain

CandidatePoWReceiptRootRecord 필드

Ethereum 2.0 Phase 0 — The Beacon Chain

ForkData 필드

Ethereum 2.0 Phase 0 — The Beacon Chain

ProcessedAttestation 필드

Ethereum 2.0 Phase 0 — The Beacon Chain

용어

  • 검증인(Validator) : 캐스퍼/샤딩 합의 시스템에 참가자. 캐스퍼 시스템 안에 32ETH를 예치함으로써 검증인이 될 수 있음.
  • 활성 검증인 집단(Active validator set): 캐스퍼 메커니즘에서 크로스링크스와 다른 합의체 블록들을 생성하거나 증명에 참여하는 검증인들
  • 제안자(Proposer): 비콘 체인 블록을 생성하고자 검증인.
  • 제네시스 타임(Genesis time): 슬롯 0에 있는 최초 비콘 체인 블록의 유닉스 타임.
  • 크로스링크스(Crosslinks): 비콘 체인 내에 포함된 샤드 체인 상 블록에서 위원회(committee)에 의해 서명되어 증명된 블록 집합으로 비콘 체인 상에서 샤드 체인의 업데이트된 상태 값을 확인하는데 주로 활용됨.
  • 위원회(Committee): 제안자가 블록 생성 시 활성 검증인 집단에서 무작위로 추출된 검증인들로 제안자의 블록을 검증하고 서명함.
  • 슬롯(Slot): SLOT_DURATION에 표시된 수초 간의 시간 동안 제안자(Proposer)는 비콘 체인 블록을 생성할 수 있고 몇몇 증명인(attester)은 증명을 수행할 수 있게 됨.
  • 캐스퍼(Casper): 이더리움의 POS 작동 방식
  • 샤딩(Sharding): 메인 체인을 분할하여 영역별로 저장하고 이를 병렬적으로 처리하여 확장성을 부여하는 On-Chain 솔루션.
  • 샤드 체인(Shard Chain): 샤딩 된 사용자의 트랜잭션 정보와 계정 데이터를 저장하는 체인.

마무리

이더리움은 POW에서 POS로 전환을 위해 2014년부터 단계 별로 준비해 왔습니다. 현재는 캐스퍼를 활용하여 POW와 POS를 연계한 하이브리드 방식으로 그리고 다음 단계는 완전한 POS 시스템 체인인 비콘 체인을 향해 가고 있습니다.

이는 메인 체인에 확장성을 부여한 on-chain 분할 저장 방식인 샤드 체인이 있기에 가능하게 되었습니다. 다음 시간에는 이더리움 2.0을 가능케 한 샤드 체인에 대해 소개하도록 하겠습니다.

감사합니다.

참고자료

https://github.com/ethereum/eth2.0-specs/blob/master/specs/core/0_beacon-chain.md

--

--