"슬롯 (블록체인)"의 두 판 사이의 차이
wlgns12244 (토론 | 기여) |
잔글 (→같이 보기) |
||
(사용자 2명의 중간 판 9개는 보이지 않습니다) | |||
2번째 줄: | 2번째 줄: | ||
==개요== | ==개요== | ||
− | 이더리움 2. | + | [[이더리움 2.0]]의 핵심은 [[비콘체인]]이라 불리는 시스템 체인이다. 이더리움 1.0의 블록 생성 방식이 [[작업증명]](PoW)이었다면 이더리움 2.0의 블록 생성 방식은 작업증명에 비해 보안과 경제성 안정성이 강화된 [[지분증명]](PoS) 방식이다. 이 이더리움 2.0의 지분증명 시스템 체인이 곧 비콘체인이다. 슬롯(slot)은 이더리움 2.0과 관련된 용어로 SLOT_DURATION에 표시된 수초 간의 시간 동안 제안자(Proposer)는 비콘체인 블록을 생성할 수 있고 몇몇 증명인(attester)은 증명을 수행할 수 있게 된다는 말이다.<ref name="as">Retin_HyunminAN, 〈[https://medium.com/hexlant/%EC%9D%B4%EB%8D%94%EB%A6%AC%EC%9B%80-2-0-%EB%B9%84%EC%BD%98-%EC%B2%B4%EC%9D%B8-beacon-chain-c9b44e34e59a 이더리움 2.0 — 비콘 체인(Beacon Chain)]〉, 《미디엄》, 2018-11-28</ref> |
==특징== | ==특징== | ||
− | 슬롯( | + | 슬롯(slot)은 단 하나의 [[블록]]을 생성할 수 있는 [[슬롯리더]](slot leader)가 존재한다. 슬롯의 수와 슬롯리더의 수는 일치한다. 슬롯은 입증된 블록으로 채워져 있고 비어있을 수도 있다. 모든 슬롯은 [[이산적]](discreet)인 시간 단위(~6초)를 갖기 때문에, 각 슬롯은 블록을 갖지 않을 수 있다. [[검증자]] 간 불합의나 위원회의 지연 이슈 등으로 블록을 검증하는 과정에 문제가 생길 수 있다. 검증자가 필요한 작업에 나타나지 않고, 블록을 올리는 일에 기여하지 않을 수 있으며, 이외에도 수많은 변칙적인 상황이 발생할 수 있다. 이더리움 1의 15초 블록 생성 시간은 6-18초 사이로 변경될 것이다. 또한 두 개 이상의 슬롯을 무시(skip)하는 것은 가능하지 않다.<ref name="ga">Status Korea 공식, 〈[http://blog.naver.com/PostView.nhn?blogId=status_korea&logNo=221604391135 이더리움 2.0에 대한 9가지 흥미로운 정보들]〉, 《네이버 블로그》, 2019-08-03</ref> |
− | 모든 슬롯은 이산적(discreet)인 시간 단위(~6초)를 갖기 때문에, 각 슬롯은 블록을 갖지 않을 수 있다. 검증자 간 불합의나 위원회의 지연 이슈 등으로 블록을 | ||
− | ===검증자 | + | ===검증자=== |
− | 검증자( | + | [[검증자]](validator)는 블록체인에 새로운 블록을 제안할 수 있는 독립된 개체(개인 또는 회사) 또는 다른 검증자의 제안을 확인하는 사람을 말한다. 분명히 알고 있어야 할 것은 이는 자동화된 소프트웨어라는 것이다. 어떤 검증자도 수동으로 제안하지 않는다. 엄밀히 말하자면, 제안할 수 있지만 제 시간 내에 반응할 수 없다. 따라서 검증자는 하나의 [[노드]]이고, 하나의 컴퓨터(1C라고 함)가 이 제안을 처리한다. 제안하는 검증자는 [[제안자]]라고 불리며, 제안의 유효성 검증을 하는 쪽은 [[증인]](attester)이라고 칭한다. |
− | 제안하는 검증자는 | ||
검증자는 비콘체인 이라고 불리는 수많은 검증자가 등록된 리스트에서 뽑힌다. 그들은 랜덤하게 번호를 선정하도록 맡겨진 블록체인의 일부(RANDAO+VDF로 알려진 랜덤추출기)에서 선정되고, 이렇게 뽑힌 검증자끼리 위원회(committee)를 구성한다. | 검증자는 비콘체인 이라고 불리는 수많은 검증자가 등록된 리스트에서 뽑힌다. 그들은 랜덤하게 번호를 선정하도록 맡겨진 블록체인의 일부(RANDAO+VDF로 알려진 랜덤추출기)에서 선정되고, 이렇게 뽑힌 검증자끼리 위원회(committee)를 구성한다. | ||
위원회를 구성하기위해 일부 검증자들이 선택되면, 그들은 블록체인의 상태가 올바른지 아닌지 증언할 책임을 갖게 된다. 즉 다음 블록을 만든다. | 위원회를 구성하기위해 일부 검증자들이 선택되면, 그들은 블록체인의 상태가 올바른지 아닌지 증언할 책임을 갖게 된다. 즉 다음 블록을 만든다. | ||
이것은 슬롯(Slot : 하나의 슬롯은 제안된 하나의 블록이 다른 검증자에 의해 옳다고 증명된 것을 의미)이라고 부르는 시간대에서 진행되며, 무작위로 뽑힌 검증자들이 증명(Attestation)에 기여하는 슬롯의 집합에서 발생한다. 이를 모두 합쳐 하나의 싸이클(Cycle)이라고 한다.<ref>Status Korea 공식〈[https://blog.naver.com/PostView.nhn?blogId=status_korea&logNo=221423804757&from=search&redirect=Log&widgetTypeCall=true&directAccess=false Two Point Oh : 검증자(Validator)란 무엇일까?]〉, 《네이버 블로그》,2018-12-21</ref> | 이것은 슬롯(Slot : 하나의 슬롯은 제안된 하나의 블록이 다른 검증자에 의해 옳다고 증명된 것을 의미)이라고 부르는 시간대에서 진행되며, 무작위로 뽑힌 검증자들이 증명(Attestation)에 기여하는 슬롯의 집합에서 발생한다. 이를 모두 합쳐 하나의 싸이클(Cycle)이라고 한다.<ref>Status Korea 공식〈[https://blog.naver.com/PostView.nhn?blogId=status_korea&logNo=221423804757&from=search&redirect=Log&widgetTypeCall=true&directAccess=false Two Point Oh : 검증자(Validator)란 무엇일까?]〉, 《네이버 블로그》,2018-12-21</ref> | ||
− | 검증자들에게 두 가지 형태의 페널티(penalty)가 있다. | + | 검증자들에게 두 가지 형태의 [[페널티]](penalty)가 있다. |
− | *비활성화 유출(Inactivity leaks) : 검증자 노드가 18일 동안 오프라인이고 비콘체인의 블록 생성을 마무리 짓지 못한다면, 사용자의 잔고는 18일 동안 최대 60.8%까지 감소될 것이다. | + | * 비활성화 유출(Inactivity leaks) : 검증자 노드가 18일 동안 오프라인이고 비콘체인의 블록 생성을 마무리 짓지 못한다면, 사용자의 잔고는 18일 동안 최대 60.8%까지 감소될 것이다. |
− | *슬래싱( | + | * [[슬래싱]](slashing) : 만약 검증자가 네트워크에서 악의적인 행동을 하고 그것이 증명된다면, 해당 검증자의 잔고가 감소된다. 최소 페널티는 1이더이지만, 그 시간대에 부정행위를 저지른 사람에 선형적으로 비례하여 페널티가 증가할 수 있다.<ref name="ga"></ref> |
===캐스퍼 지분증명방식 시스템=== | ===캐스퍼 지분증명방식 시스템=== | ||
− | 다음은 | + | 다음은 [[캐스퍼]]의 운용 방식인 “베팅에 의한 합의 (consensus by bet)” 원리에 대한 내용이다. |
* 블록은 블록 생산자 풀 (pool of block producers)에서 생성된다. 무작위 추첨으로 선정된 슬롯 리더 (slot leader)는 블록 생성자의 순서를 정하고 블록 생성자는 유효 블록을 생산할 수 있는 특정 시간대를 부여 받는다. | * 블록은 블록 생산자 풀 (pool of block producers)에서 생성된다. 무작위 추첨으로 선정된 슬롯 리더 (slot leader)는 블록 생성자의 순서를 정하고 블록 생성자는 유효 블록을 생산할 수 있는 특정 시간대를 부여 받는다. | ||
* 보증된 검증자 집단 (bonded validators)에 있는 검증자는 반드시 블록에 대해 베팅해야 한다. | * 보증된 검증자 집단 (bonded validators)에 있는 검증자는 반드시 블록에 대해 베팅해야 한다. | ||
26번째 줄: | 24번째 줄: | ||
===비콘체인=== | ===비콘체인=== | ||
− | + | 비콘체인은 POS 활성 검증인 집단(Active validator set)을 저장하고 관리한다. POS 방식의 이더리움 2.0 초기 단계에서 검증인(Validator)이 되는 유일한 방법은 이더리움 1.0 POW 체인에 고정된 [[ETH 보증금]](현재 32 ETH)을 예치하여 등록하는 것에서부터 시작된다. 이 보증금만 예치하고 등록한다면 기존 블록 마이너가 아니더라도 누구나 POS 블록 검증 시스템에 검증인으로 참여할 수 있다. 검증인으로의 승인은 예치금 트랜잭션이 등록된 이후 대기 프로세스(queuing process)와 비콘체인 프로세스에 의해 처리되며, 등록 취소는 본인이 자발적으로 하거나 부정행위 발생 시 강제적으로 이루어진다. | |
− | + | 비콘체인은 다음 3가지의 주요한 역할을 한다. | |
* 활성 및 대기 중이거나 종료된 검증인 집단을 저장하고 유지 관리 | * 활성 및 대기 중이거나 종료된 검증인 집단을 저장하고 유지 관리 | ||
− | * 크로스링크스(Crosslinks) 처리 | + | * [[크로스링크스]](Crosslinks) 처리 |
* 고유한 블록별 합의 처리 | * 고유한 블록별 합의 처리 | ||
− | + | 비콘체인의 프로세싱은 기존 POW 체인 프로세싱과 근본적으로 유사하다. 클라이언트는 블록을 다운로드하고 처리하며 현재 ‘헤드’에 종료되는 ‘기준 체인이 무엇인지에 대한 표기를 유지한다. 그러나 비콘체인과 기존 POW 체인의 관계 그리고 비콘체인이 POS 체인이기 때문에 발생하는 차이점이 있다. | |
− | + | 비콘체인의 블록을 노드가 처리하려면 다음 네 가지 조건을 충족해야 한다. | |
* ancestor_hashes[0]에 지정된 부모 블록이 이미 처리되어 승인되어야 함. | * ancestor_hashes[0]에 지정된 부모 블록이 이미 처리되어 승인되어야 함. | ||
* 블록 제안자(Proposer)의 증명은 네트워크 메시지 객체의 블록과 함께 포함되어야 함. | * 블록 제안자(Proposer)의 증명은 네트워크 메시지 객체의 블록과 함께 포함되어야 함. | ||
42번째 줄: | 40번째 줄: | ||
==활용== | ==활용== | ||
===이더리움 2.0=== | ===이더리움 2.0=== | ||
− | 이더리움 창시자 비탈릭 부테린(Vitalik Buterin)은 5일 서울 장충체육관에서 열린 디코노미 2019에 참석해 이더리움 2.0에 대해 소개했다. | + | 이더리움 창시자 [[비탈릭 부테린]](Vitalik Buterin)은 5일 서울 장충체육관에서 열린 디코노미 2019에 참석해 이더리움 2.0에 대해 소개했다. |
부테린은 “이더리움 재단에서 작업증명(PoW)이 보완하지 못했던 부분에 대한 논의가 있었다”며 이더리움 2.0과 그 특징인 지분증명(PoS), 샤딩에 대해 설명했다. | 부테린은 “이더리움 재단에서 작업증명(PoW)이 보완하지 못했던 부분에 대한 논의가 있었다”며 이더리움 2.0과 그 특징인 지분증명(PoS), 샤딩에 대해 설명했다. | ||
− | 이더리움 2.0의 핵심은 비콘체인(Beacon chain)이다. 합의를 실행하는 체인으로 비콘체인과 | + | 이더리움 2.0의 핵심은 비콘체인(Beacon chain)이다. 합의를 실행하는 체인으로 비콘체인과 [[샤드체인]]이 연동되면서 이 모든 과정을 관장한다는 것이 부테린의 설명. 별도 생태계가 있는 것은 아니고 이더리움 1.의 생태계를 확장한다. 그러니까 이더리움 1.0과 비컨 체인의 연동으로 기존에 보유한 자산도 옮길 수 있다. |
− | 비콘체인은 64개의 슬롯(slot)을 지닌 에포크(epoch)로 구성된다. 각 슬롯에는 증언(attestation)이 필요하며 에포크는 검증단에 의해 승인된다. 이를 통해 견고한 입증 상태로 전환된다. 물론 시간도 단축된다. 6초 안에도 검증 및 합의가 이뤄진다. 제안자들은 신속하게 제안하고 새로운 블록에 빠르게 합의할 수 있다. | + | 비콘체인은 64개의 슬롯(slot)을 지닌 [[에포크]](epoch)로 구성된다. 각 슬롯에는 증언(attestation)이 필요하며 에포크는 검증단에 의해 승인된다. 이를 통해 견고한 입증 상태로 전환된다. 물론 시간도 단축된다. 6초 안에도 검증 및 합의가 이뤄진다. 제안자들은 신속하게 제안하고 새로운 블록에 빠르게 합의할 수 있다. |
− | 비컨체인의 | + | 비컨체인의 [[컨센서스]]는 2013년에 [[솜포린스크]](sompolinskt)가 만든 고스트 알고리즘을 사용한다. 덕분에 최적화된 알고리즘으로 병렬 메시지를 처리할 수 있다. |
− | + | [[샤드]]는 총 24개로 구성된다. 각 샤드는 거래, 활동을 기록하며 동일한 용량으로 작동한다. 이때 샤드를 검증하는 검증단은 샤드에 무작위로 배정된다. 이를 통해 보안을 강화할 수 있다. 대규모의 공격이 일어날 가능성이 현저히 낮아지기 때문이다. | |
사용자는 32 이더리움 이상을 예치하기만 하면 그만큼 지분을 할당받아 검증단으로 참여할 수 있다. PC에 암호화폐 키가 있는 소프트웨어를 가동해 올바른 블록인지 검증하게 되는 것. 예치금에 따라 2~6%의 보상을 제공한다. 물론 예치금이 늘어나면 배정할 수 있는 블록도 늘어난다. 오프라인 상태가 길어질수록 보상은 줄어든다. 부정 행위를 했을 때도 불이익이 있다. | 사용자는 32 이더리움 이상을 예치하기만 하면 그만큼 지분을 할당받아 검증단으로 참여할 수 있다. PC에 암호화폐 키가 있는 소프트웨어를 가동해 올바른 블록인지 검증하게 되는 것. 예치금에 따라 2~6%의 보상을 제공한다. 물론 예치금이 늘어나면 배정할 수 있는 블록도 늘어난다. 오프라인 상태가 길어질수록 보상은 줄어든다. 부정 행위를 했을 때도 불이익이 있다. | ||
− | + | [[부테린]]은 [[탈중앙화]]에도 신경 쓰고 있다. 그는 “[[작업증명]]이든 [[지분증명]]이든 특정 다수에 의해 통제되고 관리된다면 이는 중앙화”라며 “이를 방지하기 위해 많은 공을 들이고 있다”고 말했다. 아울러 “누구든 32 [[이더리움]]만 예치하면 검증단으로 참여할 수 있다”며 “완전히 분산화된 모습”이라고 강조했다. 전문가 집단이나 별도의 시설 없이 집에서 노트북만으로도 참여할 수 있다는 설명이다. | |
이더리움 2.0은 총 4단계로 발표할 예정이다. 지금은 0단계 이전이다. 0단계는 지분증명을 구현하는 단계다. 이더리움을 예치하고 검증단의 참여를 유도해 사람들의 참여 경험을 높이는 것이 핵심이다. 그는 “지분증명의 메커니즘이 안정화되고 증명되는 데에 어느 정도 시간이 걸릴 것”이라고 내다봤다. | 이더리움 2.0은 총 4단계로 발표할 예정이다. 지금은 0단계 이전이다. 0단계는 지분증명을 구현하는 단계다. 이더리움을 예치하고 검증단의 참여를 유도해 사람들의 참여 경험을 높이는 것이 핵심이다. 그는 “지분증명의 메커니즘이 안정화되고 증명되는 데에 어느 정도 시간이 걸릴 것”이라고 내다봤다. | ||
− | 1단계는 스마트 | + | 1단계는 [[스마트 컨트랙트]]가 아닌 데이터를 검증하는 과정이다. 데이터의 발행 여부에 대해 프로토콜을 시연하고 검증하게 된다. 2단계에서는 계정과 스마트 컨트랙트를 체인에 올린다. 모든 기능을 이용할 수 있게 되는 ‘실행’ 단계다. 3단계에서는 컨센서스와 규모를 업그레이드하게 된다. |
부테린은 “지금의 블록체인은 확장성, 프라이버시, 속도 등에 제한이 있다”며 “대부분의 앱이 효과적으로 생존할 수 없다”고 말했다. | 부테린은 “지금의 블록체인은 확장성, 프라이버시, 속도 등에 제한이 있다”며 “대부분의 앱이 효과적으로 생존할 수 없다”고 말했다. | ||
− | 또한 “지분증명을 통해 | + | 또한 “지분증명을 통해 [[GPU]]나 [[ASIC]]에 의존하는 것을 방지하고 규모의 경제에 대한 논쟁을 불식시키고 기존 금융 시스템과의 격차를 줄일 수 있다”고 자신했다. 특히 모든 체인 상의 블록이 각 블록에 의해 검증되는 것이 아니라 메시지에 의해 검증되기 때문에 처리 속도를 높일 수 있다. 이를 통해 소매점에서의 거래를 신용카드 수준으로 빠르게 처리할 수 있다. |
마지막으로 부테린은 기술의 발전에 대해서도 강조했다. 그는 “확장성, 유용성, 블록타임 뿐 아니라 프라이버시 문제도 해결해야 한다”며 “이를 위해서는 강력한 기술의 발전이 있어야 한다”고 말했다. 아울러 “많은 사람들이 이 문제를 해결하기 위해 노력하고 있다”며 “모든 문제가 해결됐을 때 블록체인이 더 널리 사용되는 세상을 보게될 것”이라고 덧붙였다. 또한 “노력한다면 원하는것을 모두 달성할 수 있을 것”이라며 “이더리움 2.0은 앞으로 나아갈 디딤돌이 될 것”이라고 자신했다.<ref>한만혁 기자,〈[http://www.blockchainnews.co.kr/news/view.php?idx=3885 비탈릭 부테린이 말하는 이더리움 2.0의 특징]〉, 《블록체인뉴스》,2019-04-05</ref> | 마지막으로 부테린은 기술의 발전에 대해서도 강조했다. 그는 “확장성, 유용성, 블록타임 뿐 아니라 프라이버시 문제도 해결해야 한다”며 “이를 위해서는 강력한 기술의 발전이 있어야 한다”고 말했다. 아울러 “많은 사람들이 이 문제를 해결하기 위해 노력하고 있다”며 “모든 문제가 해결됐을 때 블록체인이 더 널리 사용되는 세상을 보게될 것”이라고 덧붙였다. 또한 “노력한다면 원하는것을 모두 달성할 수 있을 것”이라며 “이더리움 2.0은 앞으로 나아갈 디딤돌이 될 것”이라고 자신했다.<ref>한만혁 기자,〈[http://www.blockchainnews.co.kr/news/view.php?idx=3885 비탈릭 부테린이 말하는 이더리움 2.0의 특징]〉, 《블록체인뉴스》,2019-04-05</ref> | ||
===우로보로스 프로토콜=== | ===우로보로스 프로토콜=== | ||
− | 우로보로스 | + | [[우로보로스 프로토콜]]은 물리적 시간을 ‘[[에포크]](Epoch)’라는 단위로 나누고 이 각각의 에포크는 다시 슬롯(Slot)으로 나뉘며 각 슬롯에는 단 하나의 블록을 생성할 수 있는 슬롯 리더가 존재한다. 따라서 슬롯의 수와 슬롯 리더의 수는 일치하게 된다. |
− | 슬롯 리더가 블록을 생성한다고 할 때 앞서 살펴 본 일반적인 POS 체인에서는 그라인딩 공격 가능성이 있다. 그런데 | + | 슬롯 리더가 블록을 생성한다고 할 때 앞서 살펴 본 일반적인 POS 체인에서는 그라인딩 공격 가능성이 있다. 그런데 [[OPOS]]에서는 이러한 공격이 가능하지 않도록 한다고 할 때 슬롯 리더가 무작위로 선출될 필요가 있게 된다. |
− | 계속해서 슬롯 리더는 모든 스테이크 홀더 중에서 하나의 노드만 선출되며 카르다노 블록체인 상에서 많은 지분을 가진 선거인(electors)들에 의해 선출된다고 할 수 있다. | + | 계속해서 슬롯 리더는 모든 스테이크 홀더 중에서 하나의 노드만 선출되며 카르다노 블록체인 상에서 많은 지분을 가진 [[선거인]](electors)들에 의해 선출된다고 할 수 있다. |
어떤 일정한 시간 단위인 에포크 안에 여러 슬롯이 존재하고 슬롯 하나당 슬롯 리더가 한 노드만 선출된다고 할 때 선거인들은 현재 에포크에서 다음 에포크로 넘어가기 전에 슬롯 리더를 선출해야만 한다. 그리고 이때 스테이크 홀더는 한 에포크 안에서 복수의 슬롯의 리더가 되는 것도 가능하다. | 어떤 일정한 시간 단위인 에포크 안에 여러 슬롯이 존재하고 슬롯 하나당 슬롯 리더가 한 노드만 선출된다고 할 때 선거인들은 현재 에포크에서 다음 에포크로 넘어가기 전에 슬롯 리더를 선출해야만 한다. 그리고 이때 스테이크 홀더는 한 에포크 안에서 복수의 슬롯의 리더가 되는 것도 가능하다. | ||
− | 이러한 선출 과정에서 무작위성과 공정성이 담보될 필요가 있다. 이를 위해 슬롯 리더를 선출하는 선거인들은 다자간 계산(Multiparty Computation) 과정에서 | + | 이러한 선출 과정에서 무작위성과 공정성이 담보될 필요가 있다. 이를 위해 슬롯 리더를 선출하는 선거인들은 [[다자간 계산]](Multiparty Computation) 과정에서 ‘[[코인 토싱]](Coin Tossing)’이라는 방법을 이용하게 된다. 그리고 코인 토싱은 정직한 다수(51%)의 노드를 전제로 한다. |
계속해서 코인 토싱의 과정에 대해 알아보자면, 우선 선거인은 무작위 값을 생성한 후 그것을 부분으로 나누어 각각 다른 선거인들에게 보낸다.(부분을 합치면 전체가 되므로 조작 방지) | 계속해서 코인 토싱의 과정에 대해 알아보자면, 우선 선거인은 무작위 값을 생성한 후 그것을 부분으로 나누어 각각 다른 선거인들에게 보낸다.(부분을 합치면 전체가 되므로 조작 방지) | ||
다른 선거인의 무작위 값의 부분을 전달 받은 선거인은 자신이 생성한 무작위 값을 암호화하여 다른 선거인에게 전달하게 된다. | 다른 선거인의 무작위 값의 부분을 전달 받은 선거인은 자신이 생성한 무작위 값을 암호화하여 다른 선거인에게 전달하게 된다. | ||
그 후 다른 선거인에게 암호화된 무작위 값을 전달받은 선거인은 자신이 생성한 암호화되지 않은 무작위 값을 보낸다. | 그 후 다른 선거인에게 암호화된 무작위 값을 전달받은 선거인은 자신이 생성한 암호화되지 않은 무작위 값을 보낸다. | ||
− | 다음으로 암호화된 무작위 값을 확인할 수 있는 오프닝을 다른 선거인에게 전달하여 암호화된 값을 | + | 다음으로 암호화된 무작위 값을 확인할 수 있는 오프닝을 다른 선거인에게 전달하여 암호화된 값을 [[복호화]]함으로써 다른 선거인들의 무작위 값을 확인할 수 있게 된다. 여기까지 누구도 다른 사람보다 무작위 값을 먼저 계산하는 것이 불가능하므로 그라인딩 공격이 발생할 수 없게 된다. |
− | 이렇게 각 선거인이 다른 선거인의 변수를 확인하게 되면 다시 각자 무작위 값을 계산하게 되고 이러한 무작위 값들에서 Seed 값(무작위로 생성된 문자열)을 생성하게 된다. 그리고 모든 선거인은 같은 Seed 값을 얻게 된다. | + | 이렇게 각 선거인이 다른 선거인의 변수를 확인하게 되면 다시 각자 무작위 값을 계산하게 되고 이러한 무작위 값들에서 Seed 값(무작위로 생성된 문자열)을 생성하게 된다. 그리고 모든 선거인은 같은 [[Seed]] 값을 얻게 된다. |
− | 다음으로 Seed 값을 통해 선거인들은 카르다노 | + | 다음으로 Seed 값을 통해 선거인들은 [[카르다노 블록체인]]에 있는 많은 동전들 중에 하나를 무작위로 선택하게 되고 해당 코인을 [[스테이킹]]하고 있는 스테이크 홀더가 블록을 생성할 슬롯의 리더로 선택되게 된다. |
결론적으로 OPOS는 무작위성, 공정성을 보장할 수 있는 코인 토싱의 과정을 거쳐 슬롯 리더를 선출함으로써 그라인딩 공격을 방지하고 합의에 도달하여 블록을 생성한다고 할 수 있다.<ref>BTC,〈[https://www.a-ha.io/questions/4382bb812d4d4105a360947f5e31b692 우로보로스 알고리즘은 어떤건가요?]〉, 《aha》,2019-08-14</ref> | 결론적으로 OPOS는 무작위성, 공정성을 보장할 수 있는 코인 토싱의 과정을 거쳐 슬롯 리더를 선출함으로써 그라인딩 공격을 방지하고 합의에 도달하여 블록을 생성한다고 할 수 있다.<ref>BTC,〈[https://www.a-ha.io/questions/4382bb812d4d4105a360947f5e31b692 우로보로스 알고리즘은 어떤건가요?]〉, 《aha》,2019-08-14</ref> | ||
− | ==그라인딩 공격 | + | === 비콘체인 1단계 === |
− | 랜덤 변수를 생성해 | + | '''정당성(Justification) 없음, [[다이너스티]](Dynasty) 변화 없음''' |
− | * 지분증명(PoS) 방식은 특정 기준에 부합할 경우 블록을 생성할 권한을 얻게 되는데, 특히 지분이 | + | |
+ | '''다이너스티''' : 합의에 참가하는 검증인의 집합. 누구나 참여하고 나갈 수 있기 때문에 동적(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) 방식이다. [[메커니즘]]은 다음과 같다. | ||
+ | |||
+ | # H를 제네시스 블록과 같게 설정한다. | ||
+ | # 가장 많은 수의 검증인이 H에 증언하는 H의 후손 블록을 선택한다 (ie. H∈h1…h64일 때 증언을 발행함) | ||
+ | # H가 후손 블록이 없을 때까지 2를 반복한다. | ||
+ | |||
+ | '''주장'''(Claims) | ||
+ | |||
+ | * 안정성(safety) : 공격자가 V의 1/3 미만을 통제하고 검증인이 무작위로 섞이기 전에, 악의적으로 네트워크를 조종하기 위해 선별된 어떤 V의 부분집합이 있다고 가정하면 이 체인은 절대 번복되지(Revert) 않는다. (즉 블록이 한번 메인 체인에 포함되고 나면, 해당 블록은 영원히 메인 체인에 포함된다.) | ||
+ | * [[인센티브-호혜성]](incentive-compatibility): 증인의 증언을 체인에 포함하는 것에 대한 보상이 있다고 하자. 또한 증언이 일찍 포함될수록 더 보상이 높아진다. 블록을 제안하고 블록에 올바른 증언을 하는 것은 인센티브 측면에서 호혜적이다. | ||
+ | * [[난수 공정성]](Randomness fairness): 길게 보면, 공격자는 난수를 조작함으로써 이득을 얻을 수 없다.<ref name="ge">Leah Jang,〈[https://medium.com/hashed-kr/beacon-chain-casper-ffg-rpj-mini-spec-kr-454321b6b681 비콘 체인 캐스퍼 FFG RPJ 간단 소개]〉, 《미디엄》,2018-09-07</ref> | ||
+ | |||
+ | === 비콘체인 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가 제네시스 블록에서 시작하는 것이 아니라 가장 큰 슬롯 넘버를 가진 정당성을 가진 블록에서 시작하도록 할 수 있다. | ||
+ | |||
+ | 또한 아래의 삭감 조건 두 개를 더한다. | ||
+ | |||
+ | # 검증인은 같은 슬롯에서 상충되는 두 증언을 할 수 없다. | ||
+ | # 검증인은 가장 마지막에 정당성을 가진 슬롯 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 집단만으로도 삭감 조건을 어기지 않으면서 새로운 블록을 확정할 수 있다.<ref name="ge"></ref> | ||
+ | |||
+ | === 비콘체인 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%까지 떨어질 수 있으면서, 위에 서술한 주장 모두 만족한다.<ref name="ge"></ref> | ||
+ | |||
+ | ==그라인딩 공격== | ||
+ | [[그라인딩 공격]](grinding attack)은 랜덤 변수를 생성해 [[슬롯리더]](slot leader)를 선출하는 [[지분증명]] 방식의 암호화폐에 대한 공격 방식이다. 본인에게 유리한 랜덤 변수를 얻을 때까지 전송 내역을 임의로 누락/포함 시키는 방식과 미리 계산한 랜덤 변수로 예측한 스테이킹 코인을 사전 구매하는 등의 공격을 생각할 수 있다.<ref>〈[https://okcoinkr.zendesk.com/hc/ko/articles/360018259572-%EC%95%94%ED%98%B8%ED%99%94%ED%8F%90-%ED%95%B4%ED%82%B9 암호화폐 해킹]〉, 《옥코인》,2018-11-19</ref> | ||
+ | * [[지분증명]](PoS) 방식은 특정 기준에 부합할 경우 블록을 생성할 권한을 얻게 되는데, 특히 지분이 많을수록 블록을 생성할 권한 얻을 수 있는 확률이 높아지게 된다. | ||
* 블록을 생성할 확률을 높이기 위해 변수를 미리 계산하여 블록을 생성할 확률을 얻을 때까지 전송내역을 누락시킨다. | * 블록을 생성할 확률을 높이기 위해 변수를 미리 계산하여 블록을 생성할 확률을 얻을 때까지 전송내역을 누락시킨다. | ||
* 이후 예측한 근거를 통해 지분(코인)을 사전에 확보여 블록을 생성할 권한을 높이는 방법을 말한다. | * 이후 예측한 근거를 통해 지분(코인)을 사전에 확보여 블록을 생성할 권한을 높이는 방법을 말한다. | ||
− | * 이를 방지하기 위해서는 코인토싱(Coin Tossing) | + | * 이를 방지하기 위해서는 [[코인토싱]](Coin Tossing) [[프로토콜]]을 사용하게 된다. |
+ | |||
{{각주}} | {{각주}} | ||
85번째 줄: | 145번째 줄: | ||
* Status Korea 공식, 〈[https://blog.naver.com/PostView.nhn?blogId=status_korea&logNo=221423804757&from=search&redirect=Log&widgetTypeCall=true&directAccess=false Two Point Oh : 검증자(Validator)란 무엇일까?]〉, 《네이버 블로그》, 2018-12-21 | * Status Korea 공식, 〈[https://blog.naver.com/PostView.nhn?blogId=status_korea&logNo=221423804757&from=search&redirect=Log&widgetTypeCall=true&directAccess=false Two Point Oh : 검증자(Validator)란 무엇일까?]〉, 《네이버 블로그》, 2018-12-21 | ||
* GRANT KIM, 〈[https://blog.bitmex.com/please-translate-in-ko_kr-complete-guide-to-proof-of-stake-ethereums-latest-proposal-amp-vitalik-buterin-interview/ 지분증명방식 (Proof of Stake) 완벽 가이드 – 이더리움 최신 개선안과 창시자 비탈릭 부테린 인터뷰]〉, 《비트맥스》, 2018-04-11 | * GRANT KIM, 〈[https://blog.bitmex.com/please-translate-in-ko_kr-complete-guide-to-proof-of-stake-ethereums-latest-proposal-amp-vitalik-buterin-interview/ 지분증명방식 (Proof of Stake) 완벽 가이드 – 이더리움 최신 개선안과 창시자 비탈릭 부테린 인터뷰]〉, 《비트맥스》, 2018-04-11 | ||
− | * Status Korea 공식,〈[http://blog.naver.com/PostView.nhn?blogId=status_korea&logNo=221604391135 이더리움 2.0에 대한 9가지 흥미로운 정보들]〉, 《네이버 블로그》, 2019-08-03 | + | * Status Korea 공식, 〈[http://blog.naver.com/PostView.nhn?blogId=status_korea&logNo=221604391135 이더리움 2.0에 대한 9가지 흥미로운 정보들]〉, 《네이버 블로그》, 2019-08-03 |
− | *〈[ | + | * Leah Jang,〈[https://medium.com/hashed-kr/beacon-chain-casper-ffg-rpj-mini-spec-kr-454321b6b681 비콘 체인 캐스퍼 FFG RPJ 간단 소개]〉, 《미디엄》,2018-09-07 |
− | |||
+ | ==같이 보기== | ||
+ | * [[슬롯리더]] | ||
+ | * [[그라인딩 공격]] | ||
+ | * [[코인토싱]] | ||
+ | * [[슬롯]] | ||
{{블록체인 기술|검토 필요}} | {{블록체인 기술|검토 필요}} |
2021년 10월 9일 (토) 22:48 기준 최신판
슬롯(slot)은 블록 제안자가 증명할 블록을 제안하는 기간이다.
목차
개요[편집]
이더리움 2.0의 핵심은 비콘체인이라 불리는 시스템 체인이다. 이더리움 1.0의 블록 생성 방식이 작업증명(PoW)이었다면 이더리움 2.0의 블록 생성 방식은 작업증명에 비해 보안과 경제성 안정성이 강화된 지분증명(PoS) 방식이다. 이 이더리움 2.0의 지분증명 시스템 체인이 곧 비콘체인이다. 슬롯(slot)은 이더리움 2.0과 관련된 용어로 SLOT_DURATION에 표시된 수초 간의 시간 동안 제안자(Proposer)는 비콘체인 블록을 생성할 수 있고 몇몇 증명인(attester)은 증명을 수행할 수 있게 된다는 말이다.[1]
특징[편집]
슬롯(slot)은 단 하나의 블록을 생성할 수 있는 슬롯리더(slot leader)가 존재한다. 슬롯의 수와 슬롯리더의 수는 일치한다. 슬롯은 입증된 블록으로 채워져 있고 비어있을 수도 있다. 모든 슬롯은 이산적(discreet)인 시간 단위(~6초)를 갖기 때문에, 각 슬롯은 블록을 갖지 않을 수 있다. 검증자 간 불합의나 위원회의 지연 이슈 등으로 블록을 검증하는 과정에 문제가 생길 수 있다. 검증자가 필요한 작업에 나타나지 않고, 블록을 올리는 일에 기여하지 않을 수 있으며, 이외에도 수많은 변칙적인 상황이 발생할 수 있다. 이더리움 1의 15초 블록 생성 시간은 6-18초 사이로 변경될 것이다. 또한 두 개 이상의 슬롯을 무시(skip)하는 것은 가능하지 않다.[2]
검증자[편집]
검증자(validator)는 블록체인에 새로운 블록을 제안할 수 있는 독립된 개체(개인 또는 회사) 또는 다른 검증자의 제안을 확인하는 사람을 말한다. 분명히 알고 있어야 할 것은 이는 자동화된 소프트웨어라는 것이다. 어떤 검증자도 수동으로 제안하지 않는다. 엄밀히 말하자면, 제안할 수 있지만 제 시간 내에 반응할 수 없다. 따라서 검증자는 하나의 노드이고, 하나의 컴퓨터(1C라고 함)가 이 제안을 처리한다. 제안하는 검증자는 제안자라고 불리며, 제안의 유효성 검증을 하는 쪽은 증인(attester)이라고 칭한다. 검증자는 비콘체인 이라고 불리는 수많은 검증자가 등록된 리스트에서 뽑힌다. 그들은 랜덤하게 번호를 선정하도록 맡겨진 블록체인의 일부(RANDAO+VDF로 알려진 랜덤추출기)에서 선정되고, 이렇게 뽑힌 검증자끼리 위원회(committee)를 구성한다. 위원회를 구성하기위해 일부 검증자들이 선택되면, 그들은 블록체인의 상태가 올바른지 아닌지 증언할 책임을 갖게 된다. 즉 다음 블록을 만든다. 이것은 슬롯(Slot : 하나의 슬롯은 제안된 하나의 블록이 다른 검증자에 의해 옳다고 증명된 것을 의미)이라고 부르는 시간대에서 진행되며, 무작위로 뽑힌 검증자들이 증명(Attestation)에 기여하는 슬롯의 집합에서 발생한다. 이를 모두 합쳐 하나의 싸이클(Cycle)이라고 한다.[3] 검증자들에게 두 가지 형태의 페널티(penalty)가 있다.
- 비활성화 유출(Inactivity leaks) : 검증자 노드가 18일 동안 오프라인이고 비콘체인의 블록 생성을 마무리 짓지 못한다면, 사용자의 잔고는 18일 동안 최대 60.8%까지 감소될 것이다.
- 슬래싱(slashing) : 만약 검증자가 네트워크에서 악의적인 행동을 하고 그것이 증명된다면, 해당 검증자의 잔고가 감소된다. 최소 페널티는 1이더이지만, 그 시간대에 부정행위를 저지른 사람에 선형적으로 비례하여 페널티가 증가할 수 있다.[2]
캐스퍼 지분증명방식 시스템[편집]
다음은 캐스퍼의 운용 방식인 “베팅에 의한 합의 (consensus by bet)” 원리에 대한 내용이다.
- 블록은 블록 생산자 풀 (pool of block producers)에서 생성된다. 무작위 추첨으로 선정된 슬롯 리더 (slot leader)는 블록 생성자의 순서를 정하고 블록 생성자는 유효 블록을 생산할 수 있는 특정 시간대를 부여 받는다.
- 보증된 검증자 집단 (bonded validators)에 있는 검증자는 반드시 블록에 대해 베팅해야 한다.
- 검증자들은 매 시간마다의 베팅 성공률과 배팅 당첨자를 알려주는 블록에 베팅할 수 있다.
- 여러 차례의 베팅 후에 당첨 가능성이 1% 혹은 99%에 도달하면, 해당 블록은 완결(final)된 것으로 간주된다.[4]
비콘체인[편집]
비콘체인은 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은 앞으로 나아갈 디딤돌이 될 것”이라고 자신했다.[5]
우로보로스 프로토콜[편집]
우로보로스 프로토콜은 물리적 시간을 ‘에포크(Epoch)’라는 단위로 나누고 이 각각의 에포크는 다시 슬롯(Slot)으로 나뉘며 각 슬롯에는 단 하나의 블록을 생성할 수 있는 슬롯 리더가 존재한다. 따라서 슬롯의 수와 슬롯 리더의 수는 일치하게 된다. 슬롯 리더가 블록을 생성한다고 할 때 앞서 살펴 본 일반적인 POS 체인에서는 그라인딩 공격 가능성이 있다. 그런데 OPOS에서는 이러한 공격이 가능하지 않도록 한다고 할 때 슬롯 리더가 무작위로 선출될 필요가 있게 된다. 계속해서 슬롯 리더는 모든 스테이크 홀더 중에서 하나의 노드만 선출되며 카르다노 블록체인 상에서 많은 지분을 가진 선거인(electors)들에 의해 선출된다고 할 수 있다. 어떤 일정한 시간 단위인 에포크 안에 여러 슬롯이 존재하고 슬롯 하나당 슬롯 리더가 한 노드만 선출된다고 할 때 선거인들은 현재 에포크에서 다음 에포크로 넘어가기 전에 슬롯 리더를 선출해야만 한다. 그리고 이때 스테이크 홀더는 한 에포크 안에서 복수의 슬롯의 리더가 되는 것도 가능하다. 이러한 선출 과정에서 무작위성과 공정성이 담보될 필요가 있다. 이를 위해 슬롯 리더를 선출하는 선거인들은 다자간 계산(Multiparty Computation) 과정에서 ‘코인 토싱(Coin Tossing)’이라는 방법을 이용하게 된다. 그리고 코인 토싱은 정직한 다수(51%)의 노드를 전제로 한다. 계속해서 코인 토싱의 과정에 대해 알아보자면, 우선 선거인은 무작위 값을 생성한 후 그것을 부분으로 나누어 각각 다른 선거인들에게 보낸다.(부분을 합치면 전체가 되므로 조작 방지) 다른 선거인의 무작위 값의 부분을 전달 받은 선거인은 자신이 생성한 무작위 값을 암호화하여 다른 선거인에게 전달하게 된다. 그 후 다른 선거인에게 암호화된 무작위 값을 전달받은 선거인은 자신이 생성한 암호화되지 않은 무작위 값을 보낸다. 다음으로 암호화된 무작위 값을 확인할 수 있는 오프닝을 다른 선거인에게 전달하여 암호화된 값을 복호화함으로써 다른 선거인들의 무작위 값을 확인할 수 있게 된다. 여기까지 누구도 다른 사람보다 무작위 값을 먼저 계산하는 것이 불가능하므로 그라인딩 공격이 발생할 수 없게 된다. 이렇게 각 선거인이 다른 선거인의 변수를 확인하게 되면 다시 각자 무작위 값을 계산하게 되고 이러한 무작위 값들에서 Seed 값(무작위로 생성된 문자열)을 생성하게 된다. 그리고 모든 선거인은 같은 Seed 값을 얻게 된다. 다음으로 Seed 값을 통해 선거인들은 카르다노 블록체인에 있는 많은 동전들 중에 하나를 무작위로 선택하게 되고 해당 코인을 스테이킹하고 있는 스테이크 홀더가 블록을 생성할 슬롯의 리더로 선택되게 된다. 결론적으로 OPOS는 무작위성, 공정성을 보장할 수 있는 코인 토싱의 과정을 거쳐 슬롯 리더를 선출함으로써 그라인딩 공격을 방지하고 합의에 도달하여 블록을 생성한다고 할 수 있다.[6]
비콘체인 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) 방식이다. 메커니즘은 다음과 같다.
- H를 제네시스 블록과 같게 설정한다.
- 가장 많은 수의 검증인이 H에 증언하는 H의 후손 블록을 선택한다 (ie. H∈h1…h64일 때 증언을 발행함)
- H가 후손 블록이 없을 때까지 2를 반복한다.
주장(Claims)
- 안정성(safety) : 공격자가 V의 1/3 미만을 통제하고 검증인이 무작위로 섞이기 전에, 악의적으로 네트워크를 조종하기 위해 선별된 어떤 V의 부분집합이 있다고 가정하면 이 체인은 절대 번복되지(Revert) 않는다. (즉 블록이 한번 메인 체인에 포함되고 나면, 해당 블록은 영원히 메인 체인에 포함된다.)
- 인센티브-호혜성(incentive-compatibility): 증인의 증언을 체인에 포함하는 것에 대한 보상이 있다고 하자. 또한 증언이 일찍 포함될수록 더 보상이 높아진다. 블록을 제안하고 블록에 올바른 증언을 하는 것은 인센티브 측면에서 호혜적이다.
- 난수 공정성(Randomness fairness): 길게 보면, 공격자는 난수를 조작함으로써 이득을 얻을 수 없다.[7]
비콘체인 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가 제네시스 블록에서 시작하는 것이 아니라 가장 큰 슬롯 넘버를 가진 정당성을 가진 블록에서 시작하도록 할 수 있다.
또한 아래의 삭감 조건 두 개를 더한다.
- 검증인은 같은 슬롯에서 상충되는 두 증언을 할 수 없다.
- 검증인은 가장 마지막에 정당성을 가진 슬롯 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 집단만으로도 삭감 조건을 어기지 않으면서 새로운 블록을 확정할 수 있다.[7]
비콘체인 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%까지 떨어질 수 있으면서, 위에 서술한 주장 모두 만족한다.[7]
그라인딩 공격[편집]
그라인딩 공격(grinding attack)은 랜덤 변수를 생성해 슬롯리더(slot leader)를 선출하는 지분증명 방식의 암호화폐에 대한 공격 방식이다. 본인에게 유리한 랜덤 변수를 얻을 때까지 전송 내역을 임의로 누락/포함 시키는 방식과 미리 계산한 랜덤 변수로 예측한 스테이킹 코인을 사전 구매하는 등의 공격을 생각할 수 있다.[8]
- 지분증명(PoS) 방식은 특정 기준에 부합할 경우 블록을 생성할 권한을 얻게 되는데, 특히 지분이 많을수록 블록을 생성할 권한 얻을 수 있는 확률이 높아지게 된다.
- 블록을 생성할 확률을 높이기 위해 변수를 미리 계산하여 블록을 생성할 확률을 얻을 때까지 전송내역을 누락시킨다.
- 이후 예측한 근거를 통해 지분(코인)을 사전에 확보여 블록을 생성할 권한을 높이는 방법을 말한다.
- 이를 방지하기 위해서는 코인토싱(Coin Tossing) 프로토콜을 사용하게 된다.
각주[편집]
- ↑ 1.0 1.1 Retin_HyunminAN, 〈이더리움 2.0 — 비콘 체인(Beacon Chain)〉, 《미디엄》, 2018-11-28
- ↑ 2.0 2.1 Status Korea 공식, 〈이더리움 2.0에 대한 9가지 흥미로운 정보들〉, 《네이버 블로그》, 2019-08-03
- ↑ Status Korea 공식〈Two Point Oh : 검증자(Validator)란 무엇일까?〉, 《네이버 블로그》,2018-12-21
- ↑ GRANT KIM, 〈지분증명방식 (Proof of Stake) 완벽 가이드 – 이더리움 최신 개선안과 창시자 비탈릭 부테린 인터뷰〉, 《비트맥스》, 2018-04-11
- ↑ 한만혁 기자,〈비탈릭 부테린이 말하는 이더리움 2.0의 특징〉, 《블록체인뉴스》,2019-04-05
- ↑ BTC,〈우로보로스 알고리즘은 어떤건가요?〉, 《aha》,2019-08-14
- ↑ 7.0 7.1 7.2 Leah Jang,〈비콘 체인 캐스퍼 FFG RPJ 간단 소개〉, 《미디엄》,2018-09-07
- ↑ 〈암호화폐 해킹〉, 《옥코인》,2018-11-19
참고자료[편집]
- 한만혁 기자, 〈비탈릭 부테린이 말하는 이더리움 2.0의 특징〉, 《블록체인뉴스》, 2019-04-05
- Retin_HyunminAN, 〈이더리움 2.0 — 비콘 체인(Beacon Chain)〉, 《미디엄》, 2018-11-28
- BTC, 〈우로보로스 알고리즘은 어떤건가요?〉, 《aha》, 2019-08-14
- 〈암호화폐 해킹〉, 《옥코인》, 2018-11-19
- Status Korea 공식, 〈Two Point Oh : 검증자(Validator)란 무엇일까?〉, 《네이버 블로그》, 2018-12-21
- GRANT KIM, 〈지분증명방식 (Proof of Stake) 완벽 가이드 – 이더리움 최신 개선안과 창시자 비탈릭 부테린 인터뷰〉, 《비트맥스》, 2018-04-11
- Status Korea 공식, 〈이더리움 2.0에 대한 9가지 흥미로운 정보들〉, 《네이버 블로그》, 2019-08-03
- Leah Jang,〈비콘 체인 캐스퍼 FFG RPJ 간단 소개〉, 《미디엄》,2018-09-07
같이 보기[편집]