"슬롯리더"의 두 판 사이의 차이
1번째 줄: | 1번째 줄: | ||
− | '''슬롯리더'''(slot leader)는 | + | '''슬롯리더'''(slot leader)는 |
==개요== | ==개요== | ||
− | |||
− | |||
− | |||
− | |||
== 활용 == | == 활용 == | ||
35번째 줄: | 31번째 줄: | ||
기존의 지분증명 합의 알고리즘의 경우는 새로운 블록 생성자를 추첨할 때 무작위 변수를 조작할 가능성이 있어 보안상 취약점 그라인딩 공격 가능성이 있었지만, 이러한 문제점을 카르다노 블록체인은 코인 토싱(동전 던지기)의 방법으로 해결하고 있다. 유의미한 + 스테이킹을 하고 있는 노드를 스테이크 홀더라고 하며 이 중에서 다음 블록을 생성하는 노드를 슬롯 리더라고 부른다. 우로보로스 프로토콜은 물리적 시간을 에포크(Epoch)라는 단위로 나누고 이 각각의 에포크는 다시 슬롯으로 나뉘며 각 슬롯에는 앞서 말씀드린 단 하나의 블록을 생성할 수 있는 슬롯 리더가 존재한다. 따라서 슬롯의 수와 슬롯 리더의 수는 일치하게 되고, 슬롯 리더가 블록을 생성한다고 할 때 앞서 살펴 본 일반적인 지분증명 체인에서는 그라인딩 공격 가능성이 있었지만 우로보로스 지분증명 에서는 이러한 공격이 가능하지 않도록 한다고 할 때 슬롯 리더가 무작위로 선출될 필요가 있게 되며, 슬롯 리더는 모든 스테이크 홀더 중에서 하나의 노드만 선출되며 카르다노 블록체인 상에서 많은 지분을 가진 선거인(electors)들에 의해 선출된다. 어떤 일정한 시간 단위인 에포크 안에 여러 슬롯이 존재하고 슬롯 하나당 슬롯 리더가 한 노드만 선출된다고 할 때 선거인들은 현재 에포크에서 다음 에포크로 넘어가기 전에 슬롯 리더를 선출해야만 하고, 이때 스테이크 홀더는 한 에포크 안에서 복수의 슬롯의 리더가 되는 것도 가능하며, 선출 과정에서 무작위성과 공정성이 담보될 필요가 있어, 이를 위해 슬롯 리더를 선출하는 선거인들은 다자간 계산(Multiparty Computation) 과정에서 코인 토싱(Coin Tossing)이라는 방법을 이용하게 된다. 우로보로스 지분증명은 무작위성, 공정성을 보장할 수 있는 코인 토싱의 과정을 거쳐 슬롯 리더를 선출함으로써 그라인딩 공격을 방지하고 합의에 도달하여 블록을 생성한다.<ref>VIADOLOROSA , 〈[https://www.a-ha.io/questions/4c0967bee490d5e0aebc4db549457710 찰스 호스킨스가 제시한 우로보로스 지분증명(OPOS-Ouroboros Proof Of Stake)이란 무엇인가요?]〉, 《아하》, 2019-08-10 </ref> | 기존의 지분증명 합의 알고리즘의 경우는 새로운 블록 생성자를 추첨할 때 무작위 변수를 조작할 가능성이 있어 보안상 취약점 그라인딩 공격 가능성이 있었지만, 이러한 문제점을 카르다노 블록체인은 코인 토싱(동전 던지기)의 방법으로 해결하고 있다. 유의미한 + 스테이킹을 하고 있는 노드를 스테이크 홀더라고 하며 이 중에서 다음 블록을 생성하는 노드를 슬롯 리더라고 부른다. 우로보로스 프로토콜은 물리적 시간을 에포크(Epoch)라는 단위로 나누고 이 각각의 에포크는 다시 슬롯으로 나뉘며 각 슬롯에는 앞서 말씀드린 단 하나의 블록을 생성할 수 있는 슬롯 리더가 존재한다. 따라서 슬롯의 수와 슬롯 리더의 수는 일치하게 되고, 슬롯 리더가 블록을 생성한다고 할 때 앞서 살펴 본 일반적인 지분증명 체인에서는 그라인딩 공격 가능성이 있었지만 우로보로스 지분증명 에서는 이러한 공격이 가능하지 않도록 한다고 할 때 슬롯 리더가 무작위로 선출될 필요가 있게 되며, 슬롯 리더는 모든 스테이크 홀더 중에서 하나의 노드만 선출되며 카르다노 블록체인 상에서 많은 지분을 가진 선거인(electors)들에 의해 선출된다. 어떤 일정한 시간 단위인 에포크 안에 여러 슬롯이 존재하고 슬롯 하나당 슬롯 리더가 한 노드만 선출된다고 할 때 선거인들은 현재 에포크에서 다음 에포크로 넘어가기 전에 슬롯 리더를 선출해야만 하고, 이때 스테이크 홀더는 한 에포크 안에서 복수의 슬롯의 리더가 되는 것도 가능하며, 선출 과정에서 무작위성과 공정성이 담보될 필요가 있어, 이를 위해 슬롯 리더를 선출하는 선거인들은 다자간 계산(Multiparty Computation) 과정에서 코인 토싱(Coin Tossing)이라는 방법을 이용하게 된다. 우로보로스 지분증명은 무작위성, 공정성을 보장할 수 있는 코인 토싱의 과정을 거쳐 슬롯 리더를 선출함으로써 그라인딩 공격을 방지하고 합의에 도달하여 블록을 생성한다.<ref>VIADOLOROSA , 〈[https://www.a-ha.io/questions/4c0967bee490d5e0aebc4db549457710 찰스 호스킨스가 제시한 우로보로스 지분증명(OPOS-Ouroboros Proof Of Stake)이란 무엇인가요?]〉, 《아하》, 2019-08-10 </ref> | ||
+ | |||
+ | * '''그라인딩 공격''' | ||
+ | : [[그라인딩 공격]](grinding attack)은 랜덤 변수를 생성해 슬롯리더를 선출하는 [[지분증명]] 방식의 암호화폐에 대한 공격 방식이다. 본인에게 유리한 랜덤 변수를 얻을 때까지 전송 내역을 임의로 누락/포함 시키는 방식과 미리 계산한 랜덤 변수로 예측한 스테이킹 코인을 사전 구매하는 등의 공격을 생각할 수 있다.<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> | ||
* '''지분증명 과정''' | * '''지분증명 과정''' |
2019년 9월 11일 (수) 17:02 판
슬롯리더(slot leader)는
개요
활용
카르다노
카르다노(Cardano)는 세계적으로 일어나는 거래를 감당하려면 당연히 전송속도는 빨라야 한다. 이것을 측정하는 것은 TPS(Transfer Per Second)단위로 숫자가 높을수록 거래처리 속도가 빠르다는 것을 알 수 있다. 카르다노에서는 이 문제를 해결하기위해 우로보로스는 지분증명(PoS) 방식을 적용하였다. 지분증명은 작업증명(PoW)의 문제점을 해결하기 위해 등장한 증명방식이다. 카르다노는 비트코인처럼 모든 노드들이 경쟁을 통하여 작업증명을 하는 것이 아니라, 시간대별로 한 명의 슬롯리더가 마치 이어달리기를 하는 것처럼 증명을 한다. 경쟁을 통한 채굴을 하는 것이 아니기 때문에 시간과 많은 에너지를 낭비하지 않아도 된다.
또한, 시간대별로 슬롯을 더 늘려 더 빠르게 증명속도를 늘릴 수 있고, 병렬적으로 시대(epoch)를 세워 몇 개의 작업증명을 동시에 할 수도 있다.[1]
- 인센티브
- 카르다노 상에서의 인센티브는, 슬롯 리더로 선출되고 선거 과정에 참여할 때 온라인 상태로, 블록을 생성하는 것을 의미한다. 카르다노 프로토콜 참여는 것은 비트코인에 참여하는 것보다 훨씬 더 적은 컴퓨테이션 비용이 들어도 슬롯리더들을 그들의 차례가 돌아왔을 때 온라인으로 상태로 유지하는 것은 보안 및 효율성 측면에서 매우 중요하다. 또한 이 슬롯 리더들에게는 하드웨어, 시간 등의 투자가 이루어지므로, 이 문제들을 해결하기 위한 적절한 보상을 해야 하고, 카르다노의 경우 현금성 인센티브로서, ADA의 형태로 지급이 된다. 프로토콜 참여는 지분보유자들이 특정 슬롯의 슬롯 리더로 선출되면 그들은 블록을 생성하기 위해서는 슬롯에서 온라인 상태여야 한다.[2]
- 주소형식
- 카르다노는 다양한 주소 형식을 지원하고, 주소에 지분분배(stake distribution)와 같은 추가 정보가 붙어있는 점이 특이한데, 지분은 비트코인의 채굴자에 해당하는 슬롯 리더 선출과 거버넌스 프로토콜 업데이트 여부 투표에 사용한다. 지분분배는 잔액(balance)과 지분(stake)을 구분하는 역할을 하고 예를 들어, 여러 사람이 모여서 다중서명 주소를 만들면, 다중서명 주소의 잔액은 참여자가 보낸 총액이지만, 보통은 각자가 보낸 금액에 비례하는 지분분배에 따라 각자 지분에 따른 권한을 행사할 수 있다.[3]
- 블록형성
- 블록은 슬롯 리더가 슬롯마다 한번씩 만들 수 있으며, 슬롯을 일정 개수만큼 모으면 에폭(epoch)이 된다. 에폭 기간 동안 다음 에폭에 활동할 슬롯당 슬롯 리더를 무작위로 결정하고, 슬롯 리더가 되려면 미리 정한 지분 최소량 이상 지분을 가져야 해서, 지분에 비례하여 슬롯 리더가 될 확률이 커진다. 슬롯 리더가 해당 슬롯 시점에 블록을 만들 자신이 없다면 다른 노드에게 위임해도 되며, 공격자가 슬롯 리더 결정에 영향력을 미칠 수 없도록 스크레치(Scrape)라는 검증가능한 비밀공유 기법을 사용한다. 메인넷에서 슬롯은 20초이고, 21600 (= k * 10) 슬롯이 모여서 에폭이 된다. k는 안정성 파라미터(security parameter)인데 어떤 블록 뒤에 k개 블록이 쌓이면 그 블록은 확정되어 취소할 수 없어 이런 수치는 블록체인을 처음 시작할 때 지정하며 프로토콜 업데이트 투표를 거쳐 운영중에 변경할 수 있다.[3]
- 슬롯이 모여서 에폭을 이루고, 슬롯마다 최대 1개 블록을 생성한다.
- 에폭하는 동안 다음 에폭의 슬롯리더를 모두 결정한다.
- 슬롯리더가 되려면 최소량 이상 지분을 가진다.
- 지분 비율에 따라 슬롯리더가 될 확률이 결정되며, 슬롯리더는 다른 노드에게 권한을 위임할 수 있다.
- 공격자가 슬롯리더 선정을 조작할 수 없게 SSC(Shared Seed Computauion)하려고 PVSS(Publicly Verifiable Secret Sharing) 스크레치 방식을 사용하여 난수 생성한다.
우로보로스
우로보로스(Ouroboros) 알고리즘의 가장 큰 특징은 블록을 만드는 과정을 에포크(Epoch)와 슬롯(Slot)으로 구분지어 만들었다는 점이다. 우로보로스에서는 블록을 생성할 사람들을 사전에 미리 선발하게 되는데, 앞으로 만들어질 모든 블록에 대해 생성자를 선발할 수 없으니, 특정 주기를 정해놓고 해당 주기에 대해 선발하게 되어 이 주기를 에포크라고 부르며 슬롯은 에포크 내에서 블록 1개를 생성하는 시간을 의미한다. 에포크가 시작되기 전, 개별 슬롯에서 블록을 생성할 슬롯 리더를 선별하게 된다. 슬롯 리더는 확률적으로 선별되는데 이 때 확률은 가지고 있는 에이다의 수를 전체 에이다의 수로 나눈 값이 된다. 즉 총 1억개의 에이다 중 5천만개의 에이다를 가지고 있다면, 이 사람이 슬롯 리더에 선발될 확률은 50%인 것이다. 이런 과정을 모든 슬롯에 걸쳐서 반복하게 되며, 한 사람이 여러 개의 슬롯 리더가 될 수 있으며, 참고로 현재 에포크는 21,600개의 슬롯으로 구성되어 있다. 우로보로스는 기본적으로 지분증명(PoS)이기 때문에, 같은 플랫폼 블록체인인 이더리움보다 더 빠르게 합의를 이끌어 낼 수 있고, 이 때문에 우로보로스 알고리즘을 소개하는 문서에 따르면, 카르다노는 258 TPS를 처리할 수 있다. 단 슬롯 주기를 5초로 했을 경우이며, 현재는 슬롯 주기가 20초이다.[4]
기존의 지분증명 합의 알고리즘의 경우는 새로운 블록 생성자를 추첨할 때 무작위 변수를 조작할 가능성이 있어 보안상 취약점 그라인딩 공격 가능성이 있었지만, 이러한 문제점을 카르다노 블록체인은 코인 토싱(동전 던지기)의 방법으로 해결하고 있다. 유의미한 + 스테이킹을 하고 있는 노드를 스테이크 홀더라고 하며 이 중에서 다음 블록을 생성하는 노드를 슬롯 리더라고 부른다. 우로보로스 프로토콜은 물리적 시간을 에포크(Epoch)라는 단위로 나누고 이 각각의 에포크는 다시 슬롯으로 나뉘며 각 슬롯에는 앞서 말씀드린 단 하나의 블록을 생성할 수 있는 슬롯 리더가 존재한다. 따라서 슬롯의 수와 슬롯 리더의 수는 일치하게 되고, 슬롯 리더가 블록을 생성한다고 할 때 앞서 살펴 본 일반적인 지분증명 체인에서는 그라인딩 공격 가능성이 있었지만 우로보로스 지분증명 에서는 이러한 공격이 가능하지 않도록 한다고 할 때 슬롯 리더가 무작위로 선출될 필요가 있게 되며, 슬롯 리더는 모든 스테이크 홀더 중에서 하나의 노드만 선출되며 카르다노 블록체인 상에서 많은 지분을 가진 선거인(electors)들에 의해 선출된다. 어떤 일정한 시간 단위인 에포크 안에 여러 슬롯이 존재하고 슬롯 하나당 슬롯 리더가 한 노드만 선출된다고 할 때 선거인들은 현재 에포크에서 다음 에포크로 넘어가기 전에 슬롯 리더를 선출해야만 하고, 이때 스테이크 홀더는 한 에포크 안에서 복수의 슬롯의 리더가 되는 것도 가능하며, 선출 과정에서 무작위성과 공정성이 담보될 필요가 있어, 이를 위해 슬롯 리더를 선출하는 선거인들은 다자간 계산(Multiparty Computation) 과정에서 코인 토싱(Coin Tossing)이라는 방법을 이용하게 된다. 우로보로스 지분증명은 무작위성, 공정성을 보장할 수 있는 코인 토싱의 과정을 거쳐 슬롯 리더를 선출함으로써 그라인딩 공격을 방지하고 합의에 도달하여 블록을 생성한다.[5]
- 그라인딩 공격
- 그라인딩 공격(grinding attack)은 랜덤 변수를 생성해 슬롯리더를 선출하는 지분증명 방식의 암호화폐에 대한 공격 방식이다. 본인에게 유리한 랜덤 변수를 얻을 때까지 전송 내역을 임의로 누락/포함 시키는 방식과 미리 계산한 랜덤 변수로 예측한 스테이킹 코인을 사전 구매하는 등의 공격을 생각할 수 있다.[6]
- 지분증명 과정
- 우로보로스는 다음 블록을 채굴하기 위해 시간대(Epoch)별로 슬롯리더를 지정한다.
- 시간대는 슬롯으로 나누어져 있는데, 슬롯은 약 1개의 블록이 생성되는 시간을 기준으로 나누어져 있다.
- 슬롯에서는 한 명의 리더(leader)가 거래내역을 증명(verification)을 한다.
- 증명이 되면 블록 안에 거래내역의 데이터를 저장한다.
- 만약 슬롯리더가 시간 내에 증명을 하지 못하거나, 아예 나타지도 않는다면 바로 다른 슬롯리더에게 기회가 넘어간다.
- 기회를 잃어버린 슬롯리더는 나중에 다시 기회가 주어진다.
각주
- ↑ sobly tv, 〈Cardano가 3세대 블록체인으로 불리는 이유〉, 《미디엄》, 2018-07-06
- ↑ 카르다노 공식 홈페이지 - https://forum.cardano.org/t/pos-lars-brunjes/12169/1
- ↑ 3.0 3.1 이더리움 연구회, 〈(리서치 3주차) Cardano〉, 《미디엄》, 2018-05-29
- ↑ energist, 〈(카르다노, 에이다) #2 확장성(1)〉, 《스팀잇》, 2018-02-11
- ↑ VIADOLOROSA , 〈찰스 호스킨스가 제시한 우로보로스 지분증명(OPOS-Ouroboros Proof Of Stake)이란 무엇인가요?〉, 《아하》, 2019-08-10
- ↑ 〈암호화폐 해킹〉, 《옥코인》,2018-11-19
참고자료
- 카르다노 공식 홈페이지 - https://forum.cardano.org/t/pos-lars-brunjes/12169/1
- 〈암호화폐 해킹〉, 《옥코인》,2018-11-19
- sobly tv, 〈Cardano가 3세대 블록체인으로 불리는 이유〉, 《미디엄》, 2018-07-06
- 이더리움 연구회, 〈(리서치 3주차) Cardano〉, 《미디엄》, 2018-05-29
- energist, 〈(카르다노, 에이다) #2 확장성(1)〉, 《스팀잇》, 2018-02-11
- VIADOLOROSA , 〈찰스 호스킨스가 제시한 우로보로스 지분증명(OPOS-Ouroboros Proof Of Stake)이란 무엇인가요?〉, 《아하》, 2019-08-10
같이 보기