확률적 지분증명 편집하기
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
− | + | '''확률적위임지분증명'''(Stochastic dPoS)이란 합의에 참여할 커미티를 랜덤하게 선출하되 코인 보유량 등에 비례하여 선출될 확률이 높아지는 [[합의 알고리즘]]이다. 이것은 [[알고랜드]]의 무허가형 순수지분증명방식과 유사한 알고리즘으로서 '실사용 암호화폐'를 목표로 하고 있는 [[로커스체인]]이 채택한 방식으로 알려져 있다. 합의에 참여할 수 있는 노드를 미리 정하는 [[이오스]]의 [[위임지분증명]]과 달리 로커스체인의 '''확률적위임지분증명'''은 코인 보유량, 최근 투표 참여 횟수, 네트워크 참여도 등에 따라 매 라운드마다 새로운 커미티를 랜덤하게 선출하기 때문에 로커스체인은 이것을 통해 '''높은 수준의 탈중앙화'''를 이룰 수 있다고 주장한다. 합의에 참여할 노드(프로포저, 밸리데이터)를 특정하거나 미리 예측할 수 없으므로 악의적 공격에 의한 조작이 어려워져 '''합의결과의 공정성'''과 '''네트워크의 안정성(security)'''이 확보되는 장점이 있다. | |
− | |||
− | ''' | ||
== 개요 == | == 개요 == | ||
− | + | 로커스체인은 다이내믹 샤딩<ref>로커스체인이 적용한 다이내믹 샤딩(동적 샤딩) 기술은 노드가 부담해야 하는 네트워크 부하를 샤드 수만큼 나누고 네트워크 전체의 트랜잭션 처리량을 샤드 수만큼 늘리면서 알고리즘으로 샤드를 재배치하여 샤드간의 균형을 유지하는 기술로 알려져 있다.</ref>을 적용하여 네트워크를 샤드 단위로 쪼개고 각 샤드에서 독립적으로 BFT합의를 수행한다. 이때 합의에 참여할 커미티를 선출하는 알고리즘으로 채택한 방식이 확률적위임지분증명이다. 각 샤드에서 라운드 합의를 위해 투표인단에 포함되는 노드를 랜덤으로 선출할 때, 지분량(stake)이 높은 노드는 선출될 '''확률'''이 높아진다. | |
== 활용 == | == 활용 == | ||
− | + | 확률적위임지분증명의 구체적인 활용은 로커스체인이 홈페이지에 공개한 [https://www.locuschain.com/ko/socialView?blogSeq=164&blogLanguage=ko&blogCategory=tech 자료]에 다음과 같이 기술되어 있다. | |
=== 지분량 계산 === | === 지분량 계산 === | ||
− | 로커스체인은 코인 | + | 로커스체인은 코인 보유량 뿐만이 아니라 최근 투표 참여 횟수, 네트워크 참여도(온라인 시간) 등에 기반해 지분량을 측정한다. 지분량이 높은 노드가 시스템 유지에 높은 기여를 하는 구조인데 로커스체인의 어카운트는 자기 지분량을 다른 어카운트에 위탁(delegate)할 수 있다. 이를 통해, 네트워크에 항상 접속하지 않는 어카운트도 자신의 지분량을 유효하게 활용할 수 있다. 노드의 지분량은 해당 노드의 대표 어카운트가 가진 자기 지분량과 다른 어카운트로부터 위탁받은 지분량의 합계가 된다. |
=== 선출 방식 === | === 선출 방식 === | ||
20번째 줄: | 18번째 줄: | ||
* '''상태 선택 투표 단계''': 라운드 상태 제안 단계가 수행되면 샤드 내에는 라운드 상태 제안 커미티 만큼의 상태 제안 패킷이 발생한다. 라운드 상태 투표는 이 제안 상태 중 하나를 선택하여 고르는 단계이다. 투표 노드가 제안을 선택하면, 선택된 제안을 사용하여 선택 투표 패킷을 구성, 서명하여 브로드캐스트한다. | * '''상태 선택 투표 단계''': 라운드 상태 제안 단계가 수행되면 샤드 내에는 라운드 상태 제안 커미티 만큼의 상태 제안 패킷이 발생한다. 라운드 상태 투표는 이 제안 상태 중 하나를 선택하여 고르는 단계이다. 투표 노드가 제안을 선택하면, 선택된 제안을 사용하여 선택 투표 패킷을 구성, 서명하여 브로드캐스트한다. | ||
− | * '''상태 확정 투표 단계''': 투표인단 커미티는 각 투표 노드가 발행한 투표 패킷을 수신하여, 각 제안에 대한 투표수를 집계한다. 만약 어떤 한 상태 해쉬값이 투표 노드의 2/3+1이상의 투표수를 모은 경우, 그 상태 해쉬값은 해당 라운드의 최종 상태로서 확정되었다 볼 수 있다. 각 커미티 노드는 투표 패킷을 수신하여, 한 상태 해쉬값이 전체 투표노드 2/3+1이상의 투표수를 수신한 순간 해당 제안을 확정으로 판단, 이에 대해 다시 서명을 실시하여 확정 투표 패킷을 구성, 공유한다. 이 확정된 투표 정보에는 참여한 여러 투표 노드의 서명이 | + | * '''상태 확정 투표 단계''': 투표인단 커미티는 각 투표 노드가 발행한 투표 패킷을 수신하여, 각 제안에 대한 투표수를 집계한다. 만약 어떤 한 상태 해쉬값이 투표 노드의 2/3+1이상의 투표수를 모은 경우, 그 상태 해쉬값은 해당 라운드의 최종 상태로서 확정되었다 볼 수 있다. 각 커미티 노드는 투표 패킷을 수신하여, 한 상태 해쉬값이 전체 투표노드 2/3+1이상의 투표수를 수신한 순간 해당 제안을 확정으로 판단, 이에 대해 다시 서명을 실시하여 확정 투표 패킷을 구성, 공유한다. 이 확정된 투표 정보에는 참여한 여러 투표 노드의 서명이 슈노르(Schnorr) 서명 등의 방법으로 복수 부여되게 된다. 샤드 내의 모든 노드는 충분한 숫자의 커미티 노드가 서명한 확정된 투표 정보를 수신하면, 해당 제안이 확정된것으로 보고 합의를 완결짓는다. |
{{각주}} | {{각주}} | ||
== 참고자료 == | == 참고자료 == | ||
− | * | + | * <[https://www.locuschain.com/ko/socialView?blogSeq=98&blogLanguage=ko&blogCategory=tech 로커스체인 합의알고리즘의 기본 아이디어]>, 《Locus Insight》, 2019-02-01 |
− | * | + | * <[https://www.locuschain.com/ko/socialView?blogSeq=164&blogLanguage=ko&blogCategory=tech 각 트랜잭션의 정당성과 로커스체인 합의알고리즘의 관계]>, 《Locus Insight》, 2019-03-02 |
== 같이 보기 == | == 같이 보기 == | ||
* [[로커스체인]] | * [[로커스체인]] | ||
* [[알고랜드]] | * [[알고랜드]] | ||
− | * [[ | + | * [[위임지분증명]] |
− | |||
− |