슬롯 (블록체인)

위키원
wlgns12244 (토론 | 기여)님의 2019년 8월 19일 (월) 11:19 판
이동: 둘러보기, 검색

슬롯(slot)은 블록 제안자가 증명할 블록을 제안하는 기간이다.

개요

이더리움 2.0의 핵심은 비콘 체인이라 불리는 시스템 체인이다. 이더리움 1.0의 블록 생성 방식이 POW(Proof of Work)였다면 이더리움 2.0의 블록 생성 방식은 POW에 비해 보안과 경제성 안정성이 강화된 POS(Proof of Stake) 방식이다. 이 이더리움 2.0의 POS 시스템 체인이 곧 비콘 체인이다. 슬롯(Slot)은 이더리움 2.0과 관련된 용어로 SLOT_DURATION에 표시된 수초 간의 시간 동안 제안자(Proposer)는 비콘 체인 블록을 생성할 수 있고 몇몇 증명인(attester)은 증명을 수행할 수 있게 된다는 말이다.[1]

특징

슬롯(Slot)은 단 하나의 블록을 생성할 수 있는 슬롯 리더가 존재한다. 또한 슬롯의 수와 슬롯 리더의 수는 일치하다. 슬롯은 입증 된 블록으로 채워져 있고 비어있을 수도 있다.

검증자(Validator)

검증자(Validator)는 블록체인에 새로운 블록을 제안할 수 있는 독립된 개체(개인 또는 회사) 또는 다른 검증자의 제안을 확인하는 사람을 말한다. 분명히 알고 있어야 할 것은 이는 자동화 된 소프트웨어라는 것이다. 어떤 검증자도 수동으로 제안하지 않는다. 엄밀히 말하자면, 제안 할 수 있지만 제 시간 내에 반응할 수 없다. 따라서 검증자는 하나의 "노드"이고, 하나의 컴퓨터(1C라고 함)가 이 제안을 처리한다. 제안하는 검증자는 '제안자'라고 불리며, 제안의 유효성 검증을 하는 쪽은 증인(attester)라고 칭한다. 검증자는 비콘체인 이라고 불리는 수많은 검증자가 등록된 리스트에서 뽑힌다. 그들은 랜덤하게 번호를 선정하도록 맡겨진 블록체인의 일부(RANDAO+VDF로 알려진 랜덤추출기)에서 선정되고, 이렇게 뽑힌 검증자끼리 위원회(committee)를 구성한다. 위원회를 구성하기위해 일부 검증자들이 선택되면, 그들은 블록체인의 상태가 올바른지 아닌지 증언할 책임을 갖게 된다. 즉 다음 블록을 만든다. 이것은 슬롯(Slot : 하나의 슬롯은 제안된 하나의 블록이 다른 검증자에 의해 옳다고 증명된 것을 의미)이라고 부르는 시간대에서 진행되며, 무작위로 뽑힌 검증자들이 증명(Attestation)에 기여하는 슬롯의 집합에서 발생한다. 이를 모두 합쳐 하나의 싸이클(Cycle)이라고 한다.[2]

비콘체인

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

활용

이더리움 2.0

이더리움 창시자 비탈릭 부테린(Vitalik Buterin)은 5일 서울 장충체육관에서 열린 디코노미 2019에 참석해 이더리움 2.0에 대해 소개했다. 부테린은 “이더리움 재단에서 작업증명(PoW)이 보완하지 못했던 부분에 대한 논의가 있었다”며 이더리움 2.0과 그 특징인 지분증명(PoS), 샤딩에 대해 설명했다. 이더리움 2.0의 핵심은 비콘체인(Beacon chain)이다. 합의를 실행하는 체인으로 비콘체인과 샤드체인이 연동되면서 이 모든 과정을 관장한다는 것이 부테린의 설명. 별도 생태계가 있는 것은 아니고 이더리움 1.의 생태계를 확장한다. 그러니까 이더리움 1.0과 비컨 체인의 연동으로 기존에 보유한 자산도 옮길 수 있다. 비콘체인은 64개의 슬롯(slot)을 지닌 에포크(epoch)로 구성된다. 각 슬롯에는 증언(attestation)이 필요하며 에포크는 검증단에 의해 승인된다. 이를 통해 견고한 입증 상태로 전환된다. 물론 시간도 단축된다. 6초 안에도 검증 및 합의가 이뤄진다. 제안자들은 신속하게 제안하고 새로운 블록에 빠르게 합의할 수 있다. 비컨체인의 컨센서스는 2013년에 솜포린스크(sompolinskt)가 만든 고스트 알고리즘을 사용한다. 덕분에 최적화된 알고리즘으로 병렬 메시지를 처리할 수 있다. 샤드는 총 24개로 구성된다. 각 샤드는 거래, 활동을 기록하며 동일한 용량으로 작동한다. 이때 샤드를 검증하는 검증단은 샤드에 무작위로 배정된다. 이를 통해 보안을 강화할 수 있다. 대규모의 공격이 일어날 가능성이 현저히 낮아지기 때문이다. 사용자는 32 이더리움 이상을 예치하기만 하면 그만큼 지분을 할당받아 검증단으로 참여할 수 있다. PC에 암호화폐 키가 있는 소프트웨어를 가동해 올바른 블록인지 검증하게 되는 것. 예치금에 따라 2~6%의 보상을 제공한다. 물론 예치금이 늘어나면 배정할 수 있는 블록도 늘어난다. 오프라인 상태가 길어질수록 보상은 줄어든다. 부정 행위를 했을 때도 불이익이 있다. 부테린은 탈중앙화에도 신경 쓰고 있다. 그는 “작업증명이든 지분증명이든 특정 다수에 의해 통제되고 관리된다면 이는 중앙화”라며 “이를 방지하기 위해 많은 공을 들이고 있다”고 말했다. 아울러 “누구든 32 이더리움만 예치하면 검증단으로 참여할 수 있다”며 “완전히 분산화된 모습”이라고 강조했다. 전문가 집단이나 별도의 시설 없이 집에서 노트북만으로도 참여할 수 있다는 설명이다. 이더리움 2.0은 총 4단계로 발표할 예정이다. 지금은 0단계 이전이다. 0단계는 지분증명을 구현하는 단계다. 이더리움을 예치하고 검증단의 참여를 유도해 사람들의 참여 경험을 높이는 것이 핵심이다. 그는 “지분증명의 메커니즘이 안정화되고 증명되는 데에 어느 정도 시간이 걸릴 것”이라고 내다봤다. 1단계는 스마트 컨트랙트가 아닌 데이터를 검증하는 과정이다. 데이터의 발행 여부에 대해 프로토콜을 시연하고 검증하게 된다. 2단계에서는 계정과 스마트 컨트랙트를 체인에 올린다. 모든 기능을 이용할 수 있게 되는 ‘실행’ 단계다. 3단계에서는 컨센서스와 규모를 업그레이드하게 된다. 부테린은 “지금의 블록체인은 확장성, 프라이버시, 속도 등에 제한이 있다”며 “대부분의 앱이 효과적으로 생존할 수 없다”고 말했다. 또한 “지분증명을 통해 GPU나 ASIC에 의존하는 것을 방지하고 규모의 경제에 대한 논쟁을 불식시키고 기존 금융 시스템과의 격차를 줄일 수 있다”고 자신했다. 특히 모든 체인 상의 블록이 각 블록에 의해 검증되는 것이 아니라 메시지에 의해 검증되기 때문에 처리 속도를 높일 수 있다. 이를 통해 소매점에서의 거래를 신용카드 수준으로 빠르게 처리할 수 있다. 마지막으로 부테린은 기술의 발전에 대해서도 강조했다. 그는 “확장성, 유용성, 블록타임 뿐 아니라 프라이버시 문제도 해결해야 한다”며 “이를 위해서는 강력한 기술의 발전이 있어야 한다”고 말했다. 아울러 “많은 사람들이 이 문제를 해결하기 위해 노력하고 있다”며 “모든 문제가 해결됐을 때 블록체인이 더 널리 사용되는 세상을 보게될 것”이라고 덧붙였다. 또한 “노력한다면 원하는것을 모두 달성할 수 있을 것”이라며 “이더리움 2.0은 앞으로 나아갈 디딤돌이 될 것”이라고 자신했다.[3]

우로보로스 프로토콜

우로보로스 프로토콜은 물리적 시간을 ‘에포크(Epoch)’라는 단위로 나누고 이 각각의 에포크는 다시 슬롯(Slot)으로 나뉘며 각 슬롯에는 단 하나의 블록을 생성할 수 있는 슬롯 리더가 존재한다. 따라서 슬롯의 수와 슬롯 리더의 수는 일치하게 된다. 슬롯 리더가 블록을 생성한다고 할 때 앞서 살펴 본 일반적인 POS 체인에서는 그라인딩 공격 가능성이 있다. 그런데 OPOS에서는 이러한 공격이 가능하지 않도록 한다고 할 때 슬롯 리더가 무작위로 선출될 필요가 있게 된다. 계속해서 슬롯 리더는 모든 스테이크 홀더 중에서 하나의 노드만 선출되며 카르다노 블록체인 상에서 많은 지분을 가진 선거인(electors)들에 의해 선출된다고 할 수 있다. 어떤 일정한 시간 단위인 에포크 안에 여러 슬롯이 존재하고 슬롯 하나당 슬롯 리더가 한 노드만 선출된다고 할 때 선거인들은 현재 에포크에서 다음 에포크로 넘어가기 전에 슬롯 리더를 선출해야만 한다. 그리고 이때 스테이크 홀더는 한 에포크 안에서 복수의 슬롯의 리더가 되는 것도 가능하다. 이러한 선출 과정에서 무작위성과 공정성이 담보될 필요가 있다. 이를 위해 슬롯 리더를 선출하는 선거인들은 다자간 계산(Multiparty Computation) 과정에서 ‘코인 토싱(Coin Tossing)’이라는 방법을 이용하게 된다. 그리고 코인 토싱은 정직한 다수(51%)의 노드를 전제로 한다. 계속해서 코인 토싱의 과정에 대해 알아보자면, 우선 선거인은 무작위 값을 생성한 후 그것을 부분으로 나누어 각각 다른 선거인들에게 보낸다.(부분을 합치면 전체가 되므로 조작 방지) 다른 선거인의 무작위 값의 부분을 전달 받은 선거인은 자신이 생성한 무작위 값을 암호화하여 다른 선거인에게 전달하게 된다. 그 후 다른 선거인에게 암호화된 무작위 값을 전달받은 선거인은 자신이 생성한 암호화되지 않은 무작위 값을 보낸다. 다음으로 암호화된 무작위 값을 확인할 수 있는 오프닝을 다른 선거인에게 전달하여 암호화된 값을 복호화함으로써 다른 선거인들의 무작위 값을 확인할 수 있게 된다. 여기까지 누구도 다른 사람보다 무작위 값을 먼저 계산하는 것이 불가능하므로 그라인딩 공격이 발생할 수 없게 된다. 이렇게 각 선거인이 다른 선거인의 변수를 확인하게 되면 다시 각자 무작위 값을 계산하게 되고 이러한 무작위 값들에서 Seed 값(무작위로 생성된 문자열)을 생성하게 된다. 그리고 모든 선거인은 같은 Seed 값을 얻게 된다. 다음으로 Seed 값을 통해 선거인들은 카르다노 블록체인에 있는 많은 동전들 중에 하나를 무작위로 선택하게 되고 해당 코인을 스테이킹하고 있는 스테이크 홀더가 블록을 생성할 슬롯의 리더로 선택되게 된다. 결론적으로 OPOS는 무작위성, 공정성을 보장할 수 있는 코인 토싱의 과정을 거쳐 슬롯 리더를 선출함으로써 그라인딩 공격을 방지하고 합의에 도달하여 블록을 생성한다고 할 수 있다.[4]

종류

그라인딩 공격(Grinding Attack)

랜덤 변수를 생성해 슬롯 리더(slot leader)를 선출하는 지분 증명 암호화폐에 대한 공격 방식이다. 본인에게 유리한 랜덤 변수를 얻을 때까지 전송 내역을 임의로 누락/포함 시키는 방식과 미리 계산한 랜덤 변수로 예측한 스테이킹 코인을 사전 구매하는 등의 공격을 생각할 수 있다.[5]

각주

  1. 1.0 1.1 Retin_HyunminAN,〈이더리움 2.0 — 비콘 체인(Beacon Chain)〉, 《미디엄》,2018-11-28
  2. Status Korea 공식〈Two Point Oh : 검증자(Validator)란 무엇일까?〉, 《네이버 블로그》,2018-12-21
  3. 한만혁 기자,〈비탈릭 부테린이 말하는 이더리움 2.0의 특징〉, 《블록체인뉴스》,2019-04-05
  4. BTC,〈우로보로스 알고리즘은 어떤건가요?〉, 《aha》,2019-08-14
  5. 암호화폐 해킹〉, 《옥코인》,2018-11-19

참고자료