검수요청.png검수요청.png

비콘체인

위키원
shoot008 (토론 | 기여)님의 2019년 8월 12일 (월) 15:49 판 (향후 계획)
이동: 둘러보기, 검색

비콘체인(beacon chain)이란 기존의 채굴자 대신 거래 검증인이 토큰(지분)을 걸고 투표한 뒤 투표 결과에 따라 거래를 검증, 네트워크를 운영하는 방식의 이더리움의 거래 검증 시스템이다. 이더리움 2.0의 핵심에는 "비콘체인"이라는 시스템 체인이 있다. 비콘체인은 지분증명(PoS) 유효성 검증인 집단(Active validator set)을 저장하고 관리한다. POS 방식의 이더리움 2.0 초기 단계에서 검증인(Validator)이 되는 유일한 방법은 이더리움 1.0 작업증명(PoW) 체인에 고정된 ETH 보증금(현재 32 ETH)을 예치하여 등록하는 것에서부터 시작된다. 이 보증금만 예치하고 등록한다면 기존 블록 마이너가 아니더라도 누구나 POS 블록 검증 시스템에 검증인으로 참여할 수 있다. 검증인으로의 승인은 예치금 트랜잭션이 등록된 이후 대기 프로세스(Queuing process)와 비콘체인 프로세스에 의해 처리되며, 등록 취소는 본인이 자발적으로 하거나 부정행위 발생 시 강제적으로 이루어진다.[1]

개요

비콘체인은 거래 검증인과 투표를 위해 걸어놓은 토큰을 관리하고, 제안된 블록을 투표에 부쳐 검증인에게 전달하며, 합의 기준을 적용하고, 투표에 참여한 검증인에게 보상과 처벌을 진행하는 등 지분증명(PoS) 합의 프로토콜을 종합적으로 도입하는 역할을 맡는다. 새로운 시스템에서 검증인으로 참여한 이들은 걸어놓은 토큰과 네트워크 내에서 보유한 토큰의 총량에 비례해 검증 보상을 받게 된다. 비탈릭 부테린은 최근 이더리움 2.0의 검증에 참여하는 이들에게 보상을 기존에 논의하던 것보다 더 많이 지급하자고 주장하기도 했다. 케이프타운 콘퍼런스에서 비탈릭 부테린은 "2단계(Phase Two)가 완료돼야 이더리움 2.0 업그레이드가 끝났다고 할 수 있지만, 그보다 앞선 0단계와 1단계도 기반을 다지는 측면에서 아주 중요한 단계"라며, "현재 0단계 절차가 거의 마무리됐다"고 말했다.[2]

등장배경

특징

이더리움 2.0

이더리움 2.0은 총 4단계로 발표할 예정이다. 지금은 0단계 이전이다. 0단계는 지분증명(PoS)을 구현하는 단계다. 이더리움을 예치하고 검증단의 참여를 유도해 사람들의 참여 경험을 높이는 것이 핵심이다. 그는 "지분증명의 메커니즘이 안정화되고 증명되는 데에 어느 정도 시간이 걸릴 것"이라고 내다봤다. 1단계는 스마트 계약이 아닌 데이터를 검증하는 과정이다. 데이터의 발행 여부에 대해 프로토콜을 시연하고 검증하게 된다. 2단계에서는 계정과 스마트 계약을 체인에 올린다. 모든 기능을 이용할 수 있게 되는 '실행' 단계다. 3단계에서는 합의와 규모를 업그레이드하게 된다. 이더리움 2.0은 보안, 확장성, 탈중앙화를 개선한 새로운 이더리움 체인이다. 하드포크를 통한 네트워크 통합이 아닌, 이용자가 한 방향 스마트 계약으로 기존 작업증명(PoW) 체인에서 새로운 체인으로 자산을 이동시키는 방식으로 진행된다. 프리즈마틱 랩스(Prysmatic Labs) 공동 창립자 프레스턴 반 룬(Preston Van Loon)은 "이더리움 2.0의 핵심은 '샤드(Shard)'다. 샤드는 스마트 계약의 거래를 관리하는 개별 체인으로 루트체인인 '비콘체인'이 조정한다."며, 이를 통해 "기존 이더리움 작업증명 방식과 달리 거래를 병렬 처리해 시스템을 수평 확장할 수 있다고 말했다. 이더리움의 창립자인 비탈릭 부테린 또한 이더리움 2.0의 핵심으로 작업증명의 대안인 지분증명(PoS)과 함께 '샤딩(Sharding)'을 강조하고 있다. 기존의 이더리움은 하나의 블록 검증에 전체 노드가 참여했다면, 샤딩은 노드를 샤드(Shard)라는 소규모 그룹으로 나눠 각 그룹이 거래를 동시다발적으로 처리하도록 한다. 이때 비콘체인은 샤드에 노드를 무작위로 배정해 담합, 공격을 방지한다.[3]

비콘체인 1단계

정당성(Justification) 없음, 다이너스티(Dynasty) 변화 없음

다이너스티 : 합의에 참가하는 검증인의 집합. 누구나 참여하고 나갈 수 있기 때문에 동적(Dynamic) 성격을 갖고 있다.

단순화하기 위해, 우선 모두 같은 양만큼 스테이킹한 유효성 검증인(Validator) 집단 V=V1…Vn이 있다고 가정한다. 그리고 검증인 집단의 부분집합(Subset) S1…S64이 서로소라는 보장은 없으나, |Sℹ︎|≥floor(|V|/64)조건을 만족한다고 한다. |x|는 어떤 집단의 크기를 나타낸다.(즉, 여기에서는 검증인의 수를 말한다.) 또한 그 시스템이 검증인에 대한 무작위 순열 p1…pN을 생성한다고 가정한다.

시간(Time)을 슬롯(Slot)으로 나눈다. 시스템의 제네시스 타임스탬프가 T0라고 하면, 슬롯 i는 [T0+8i, T0+8(i+1)) 시간을 포함한다. 슬롯 i가 시작되면 검증인 V_(p_i mod N)은 체인의 헤드(head)라고 인식되는 부모 블록을 가리키는 포인터가 포함된 블록을 생성(제안)한다. 또한 이 블록에는 아직 체인에 포함되지 않은, 알고 있는 모든 증언(Attestation)이 포함되어 있다.

4초 뒤에 Sℹ︎ mod 64의 검증인들은 새로 발행된 블록을 고려해 어떤 것이 새로운 체인의 헤드인지 결정한다. 모든 것이 잘 돌아가고 있다면 대개 새로 발행된 블록이 체인 헤드가 된다. 또한 검증인은 서명된 증언 [current_slot, h1,h2…h64]을 발행한다. 여기에서 h1…h64는 최대 64개 슬롯의 조상(Ancestor) 블록의 해시다. 만약 체인의 슬롯이 높이(Height) a와 b에서 손실(Missing)되었을 때는, 높이 a+1부터 b-1까지의 블록에 높이 a의 블록 해시값을 사용한다. current_slot은 현재 슬롯 번호를 가리킨다.

이때 사용된 포크 선택 규칙은 재귀적 최대 증언(Recursive maximum attestation) 방식이다. 메커니즘은 다음과 같다.

  1. H를 제네시스 블록과 같게 설정한다.
  2. 가장 많은 수의 검증인이 H에 증언하는 H의 후손 블록을 선택한다 (ie. H∈h1…h64일 때 증언을 발행함)
  3. H가 후손 블록이 없을 때까지 2를 반복한다.

주장(Claims)

  • 안정성(Safety) : 공격자가 V의 1/3 미만을 통제하고 검증인이 무작위로 섞이기 전에, 악의적으로 네트워크를 조종하기 위해 선별된 어떤 V의 부분집합이 있다고 가정하면 이 체인은 절대 번복되지(Revert) 않는다. (즉 블록이 한번 메인 체인에 포함되고 나면, 해당 블록은 영원히 메인 체인에 포함된다.)
  • 인센티브-호혜성(Incentive-compatibility): 증인의 증언을 체인에 포함하는 것에 대한 보상이 있다고 하자. 또한 증언이 일찍 포함될수록 더 보상이 높아진다. 블록을 제안하고 블록에 올바른 증언을 하는 것은 인센티브 측면에서 호혜적이다.
  • 난수 공정성(Randomness fairness): 길게 보면, 공격자는 난수를 조작함으로써 이득을 얻을 수 없다.

비콘체인 2단계

정당성과 확정성 도입

체인에 증언이 더해질수록 체인은 각 블록에 증언하는 검증인 전체 집단을 트래킹하게 되고, 변수 last_justified_slot 또한 트래킹하게 되는데 이 변수값은 0에서부터 시작한다. 만약 검증인 집단 V_B가 증언한 어떤 블록 B가 있고, 이때 |V_B|≥|V|*2/3라고 한다. last_justified_slot은 이전 최댓값 혹은 해당 블록의 슬롯 넘버 중 최댓값으로 증가한다. 체인에 포함되기 위해서는 해당 체인에 last_justified_slot 증언을 해야 한다.

만약 한 체인에서 블록의 기간인 슬롯 s, s+1…s+64 즉 65개 모두 정당성을 얻었다면, 슬롯 s에 있는 블록은 확정된 것이다.

위에서 말했던 포크 선택 규칙을 수정해, H가 제네시스 블록에서 시작하는 것이 아니라 가장 큰 슬롯 넘버를 가진 정당성을 가진 블록에서 시작하도록 할 수 있다.

또한 아래의 삭감 조건 두 개를 더한다.

  1. 검증인은 같은 슬롯에서 상충되는 두 증언을 할 수 없다.
  2. 검증인은 가장 마지막에 정당성을 가진 슬롯 s1, s2이 있을 때 s1<s2<t2<t1가 되는 슬롯 넘버 t1, t2 모두에 서명 할 수 없다.

주장(Claims)

  • 안전성(safety): 한번 블록이 확정되고 해당 블록까지 체인을 다운로드받은 노드가 하나 이상 있으면, |V_|A≥|V*1/3|인 검증인 집단 V_A가 하나 혹은 두 개의 삭감 조건을 어기지 않는 한 항상 체인에 포함된다.
  • 실질적 생존성(Plausible liveness): 정직한 검증인 집단 V_H의 크기가 |V|*2/3보다 크거나 같을 때, V_H 집단만으로도 삭감 조건을 어기지 않으면서 새로운 블록을 확정할 수 있다.

비콘체인 3단계

동적(Dynamic) 검증인 집단 도입

검증인의 부분집합 S_B가 있는 모든 블록 B에는 다음과 같은 제한 조건이 있다.

1. 블록의 다이너스티를 재귀적으로 정의한다. dynasty(genesis)=0 대개 dynasty(B)=dynasty(parent(B))이다. 단,

i) B의 128번째 후손 블록이 확정되었고, 이는 체인에서 B 이전에 포함된 내용으로 알 수 있을 때

ii) 블록 B 위로 256개 블록에서 다이너스티 트랜지션이 일어나지 않았을 때. 이때 dynasty(B)=dynasty(parent(B))+1이다.

2. B의 로컬 검증인 집단(local validator set)을 LVS(B)=S_B⋃S_parent(B)⋃…⋃S_parent63(B)로 정의한다.

3. 체인 내의 두 블록 B1, B2에서 dynasty(B2)-dynasty(B1)=k라고 가정하자. 그렇다면 |LVS(B1)⋂LVS(B2)|≥LVS(B1)*(1-k/60)이다. 이는 LVS(B2)에서도 마찬가지이며, 즉, 로컬 검증인 집단의 최대 1/60는 매 다이너스티마다 변한다.

주장(Claims)

  • V를 적절한 LVS(…)로 대체하면 장애 허용이 1/3에서 30%까지 떨어질 수 있으면서, 위에 서술한 주장 모두 만족한다.

활용

이더리움 2.0의 개발은 총 페이즈는 0, 1, 2, 3 이렇게 4단계로 이루어질 것으로 보인다. 우선 페이즈 0단계에서 비콘체인의 도입이 이뤄질 것으로 보인다. 비콘체인은 이더리움 2.0의 심장으로서 전체 시스템을 유지하는 중요한 역할을 한다. 즉, 포스(PoS) 합의 알고리즘으로 변화된 이더리움 블록체인에서 샤드 체인과 지분증명(PoS) 프로토콜의 실행을 감독하고 관리하는 역할을 한다고 할 수 있다. 또한 비콘체인은 블록 제안자를 지명하는 기능, 검증인들을 임명하고 관리하는 기능, 제안된 블록에 대해 정기적으로 투표하는 유효성 검증인 집단을 감독하는 기능, 처벌 및 보상을 통해 네트워크 규칙을 시행하는 기능, 샤드들 간의 신속한 크로스 샤드 거래의 실행을 위해 정기적으로 보고할 수 있는 중앙 앵커 포인트를 제공하는 기능을 한다. 자세하게 설명하자면 비콘체인은 블록 검증인으로서의 노드들의 집합을 유지하는 기능을 하며, 각 노드들은 32ETH를 스테이킹하여 비콘체인의 검증인이 되어 블록을 검증할 수 있다. 또한 비콘체인은 시스템에서 철수하는 검증인의 스테이킹이 출금되는 것을 관리한다. POS 프로토콜에 따라 초기 이더리움 스테이킹 수량과 누적된 보상, 패널티 등을 관리하게 되는 것이. 그리고 비콘체인은 규칙적인 16초 간격으로 블록을 생성한다. 이때 무작위로 선택된 블록 제안자는 검증인에게서 이전 블록에 대한 모든 정보를 수신하고 블록을 생성하게 됩니다. 그리고 비콘체인의 트랜잭션 처리에 참여하는 샤드들은 블록 제안자들에 의해 무작위로 선택된다. 끝으로 비콘체인은 각 샤드들을 비콘체인의 중추에 연결하여 네트워크를 구성하는 '크로스링크(Crosslinks)'를 통해 각 샤드들의 현재 상태를 기록하며 블록이 완성되면 샤드들 간의 교차 트랜잭션을 통해 다른 샤드의 블록도 자동으로 최종 확정된 것으로 간주하게 된다.[4]

비콘체인은 다음의 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의 표시된 수초 내에) 각 노드가 다른 노드와 동기화된 클럭을 가져야 한다는 것을 유의해야 한다.

향후 계획

이더리움 개발자들이 2020년 1월 출시를 앞둔 이더리움 2.0에 대한 준비가 마무리에 들어간 것으로 보고 있다고 한다. 2019년 6월 30일(현지시간) 암호화폐 전문 매체 트러스트노즈(Trustnodes)는 이더리움 재단 연구원인 디데릭 레오라커(Diederik Loerakker)가 "최종 사양을 위한 마지막 작업을 진행 중" 이라고 말했다고 보도했다. 이더리움 재단의 또 다른 개발자인 저스틴 드레이크(Justin Drake)는 "3개 팀을 대상으로 이더리움 2.0이 1월 3일까지 출시될 수 있을지, 그 가능성을 1에서 10 사이의 점수로 이야기해보라는 설문조사를 개인적으로 진행해 봤다"면서 "3점이라고 말한 1팀을 제외하고 대부분이 6~10점 사이라고 응답했다"고 말했다. 이더리움 재단은 이더리움 2.0의 사전 버전인 '이더리움 2.0 0단계(Phase 0)'를 2020년 1월 3일에 출시하겠다고 밝힌 바 있다. 평온한 상태라는 뜻을 가진 '세레니티(Serenity)'로도 불리는 이더리움 2.0은 다수의 트랜잭션을 빠르게 처리할 수 있도록 성능 향상을 목표로 한다. 기존의 이더리움 네트워크작업증명(PoW) 기반의 합의 알고리즘을 활용해 왔지만 이더리움 2.0에서는 지분증명(PoS)로 전환함과 동시에 PoW와 PoS를 모두 활용할 수 있는 구조를 설계 중이다. 현재 이더리움 네트워크와 이더리움 2.0을 연결하기 위해 비콘체인도 개발하고 있다. 2019년 4월 서울에서 열린 '제2회 분산경제포럼(디코노미 2019)' 에서 비탈릭 부테린은 비콘체인에 대해 "PoS 합의 알고리즘에 참여하는 노드들이 확인한 내용을 저장하는 체인"이라며 "기존 이더리움(이더리움 1.0)과 이더리움 2.0에서 추가될 샤딩 체인과 연동될 것"이라고 설명했다. 한편 대니 라이언(Danny Ryan) 이더리움 재단 연구원은 비콘체인과 관련해 공식 검증 작업을 시작했다고 언급했다.[5]

각주

  1. protolambda, 〈Ethereum 2.0 Phase 0 -- The Beacon Chain〉, 《Github》
  2. Christine Kim, 〈이더리움 2.0 지분증명 코드 초안 6월 내 확정한다〉, 《더블록포스트》, 2019-05-07
  3. 토큰포스트, 〈'이더리움 2.0' 지분증명 테스트넷 비콘체인 공개〉, 《토큰포스트》, 2018-05-09
  4. erc20, 〈이더리움 2.0의 개발에서 비콘체인의 기능은 무엇인가요?〉, 《Aha》, 2019-06-23
  5. 정유림 기자, 〈이더리움 개발자들 “이더리움 2.0 출시 준비 막바지 단계”〉, 《더비체인》, 2019-07-01

참고자료

같이 보기


  검수요청.png검수요청.png 이 비콘체인 문서는 블록체인 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.