신뢰성증명(PoB)의 도입 - 더욱 분산적인 컨센서스를 설계하는 방법
서론
각 블록체인 시스템은 자체적으로 마이크로 소사이어티(micro-society)인 네트워크 노드로 구성된 적응적 조직(adaptive organization)입니다. 이 조직의 운영은 컨센서스 메커니즘으로 규제됩니다. 컨센서스 메커니즘은 사람들을 참석하게하고, 보안 네트워크를 구축하고, 결정을 내릴 수 있도록 운영되는 프로그램이 가능하도록 수치로 변환해주는 규칙입니다.
IOST 신뢰성증명 컨센서스 메커니즘에서 블록 생산 위원회는 17석이며, 이는 10분마다 변경됩니다. 가장 많은 Servi를 가진 17개의 노드가 각 라운드에서 위원회로 선출되며, 차례로 블록을 생산하고 보상을 받습니다. 각 노드가 블록 생성에 참여하기 위해 선정될 때마다, 모든 위원회 구성원은 Servi를 소비합니다. 그러므로 선정되지 않은 노드가 더 많은 Servi를 보유하게 되며 다음 라운드에 위원회로 선출될 가능성이 더 커집니다. 이러한 메커니즘 하에서 매일 수백 개의 다양한 노드가 위원회로 선정될 수 있습니다.
신뢰성증명 메커니즘에서 후보가 되는 진입 장벽이 더 낮으므로, 더 많은 커뮤니티 구성원이 참여할 수 있습니다. 동시에 위원회 구성원이 더 자주 변화되고 변동이 발생합니다. 위원회의 유동성은 매우 역동적이며, 분산화 수준은 소수의 슈퍼 노드와 후보 노드를 기반으로 한 EOS보다 더 높으므로, 더 나은 커뮤니티의 자율성을 성취하며 더 높은 보안성을 보장합니다.
IOST의 CTO Terrence Wang
초록
IOST의 컨센서스 알고리즘인 신뢰성증명은 현재의 DPoS 시스템보다 더 분산화된 위원회 선출 과정을 포함하면서도, 확장성 혜택 및 검열 저항력을 가집니다.
저희의 컨센서스 알고리즘을 소개하는 시리즈의 첫 번째 글에서, 블록 생산, 거래 유효성 및 네트워크 무결성의 분산된 관리를 보장하는 위원회 구성과 블록 생산자 선출에 관련된 신뢰성증명 메커니즘에 관하여 설명합니다.
저희의 계획은 대부분의 노드가 블록 생산에 자격을 부여받고(상위 몇 개의 노드만이 아닌) 더 많은 투표를 받는 노드가 블록을 생산할 수 있는 더 높은 확률을 가지는 투표와 위원회 구성 과정을 보장합니다.
이를 달성하기 위하여, 저희는 투표 결과를 선출을 위한 유일한 요소로 사용하지 않습니다. 대신, 저희는 포인트 시스템(Servi)을 도입하여 위원회 구성원을 결정하고 순환하게 합니다.
후보 되기
네트워크 안전성을 보장하기 위해 신뢰성증명은 블록 생산자 후보의 진입 장벽이 됩니다. 현재 버전에서 이 장벽은 네트워크상의 유효한 투표수의 0.1%로 설정되어 있습니다. 노드가 임계값보다 더 많은 투표를 받으면, 후보가 되어 위원회 구성 및 블록 생산 과정에 참여할 수 있는 특정 트랜잭션을 전송할 수 있습니다.
Servi 획득 및 투표(voting)
투표 결과가 위원회 구성원을 직접 결정하지는 않지만, Servi 획득률에 비례하여 영향을 끼칩니다. 현재 버전에서 블록 생산을 위해 17명의 위원회 구성원이 라운드마다 선정됩니다.
각 라운드는 다음의 세 단계로 구성됩니다.
모든 후보자는 투표수에 비례하여 Servi를 받게 됩니다.
Servi로 순위가 매겨지며, 최상위 17개의 노드가 다음 라운드의 블록 생산을 담당하는 위원회를 구성합니다.
선정된 모든 위원회 구성원은 17번째 노드의 보유량만큼 Servi 보유량이 삭감됩니다. 즉, 17번째 노드는 Servi가 0으로 리셋되며, 16번째 노드는 그만큼을 잃게 됩니다.
현재 버전에서 투표 기간은 10분입니다. 이 결과 IOST 네트워크에서 매 10분마다 위원회가 교대됩니다.
예시
단순화를 위해, 각 위원회를 위해 3개의 노드가 선정되고 현재 후보자는 5개인 단순화시킨 버전을 가정해봅시다.
노드는 10, 8, 5, 4 및 1개의 Servi를 각각 받습니다. 이를 A, B, C, D 및 E라고 이름을 붙입시다. 또한, 투표수는 투표 기간에 변경되지 않는다고 가정합시다.
첫 번째 라운드에서 각각의 포인트는 10, 8, 5, 4, 1입니다. A, B 그리고 C는 가장 많은 Servi를 가졌기에 위원회 구성원이 됩니다.
그러면 그들의 Servi 잔고에서 C가 가졌던 양과 같은 양인 5씩 공제됩니다. D와 E의 Servi 잔고는 변하지 않습니다. 이제 노드의 Servi 잔고가 5, 3, 0, 4 그리고 1이 되었습니다.
두 번째 라운드에서 각 노드에게 Servi를 다시 줍니다. 이제 각 잔고는 15, 11, 5, 8 그리고 2입니다.
A, B 그리고 D는 위원회 구성원이 되고, 모두 8개의 Servi(노드 D의 Servi 잔고량)를 잃습니다. 이제 Servi 잔고는 7, 3, 5, 0 그리고 2입니다.
세 번째 라운드에서 17, 11, 10, 4, 3의 잔고를 가집니다. 이번 라운드에 A, B 및 C는 다시 한번 위원회로 선출됩니다.
빠르게 9라운드로 갑시다. 이제 Servi 잔고는 26, 8, 5, 12 그리고 9입니다. 노드 E는 각 라운드에서 1 Servi밖에 받지 못했지만 위원회 구성원이 되었습니다.
참고사항
투표 및 위원회 구성원 선출이 완료되면, "라운드 로빈(round robin)" 위임지분증명방식( DPoS)과 같은 순환 블록 생성이 시작됩니다. 즉, 형성되는 각 위원회에 대해 각 구성원은 차례로 하나의 블록을 생성하며, 나머지 모든 위원회 구성원은 모든 블록을 검증합니다.
대부분 가장 많은 Servi를 가진 후보가 위원회의 구성원이 됩니다. 이를 제한하기 위해, Servi 잔고가 총투표수의 10배 이상이 되지 않도록 규칙을 설정했습니다.
17위에 동점자가 있다면, 먼저 후보 자격을 얻은 노드가 우위에 섭니다. 실제로 이것은 극히 드문 경우입니다.
후보 노드는 유효성을 입증하기 위해 6회(1시간)마다 유효성 확인 트랜잭션을 제출해야 합니다. 그렇지 않으면 이 후보는 후보 자격과 모든 표를 잃게 됩니다.
위원회 구성원이 한 라운드에서 블록을 생성하지 않으면, 모든 표와 후보 자격을 잃게 됩니다.
투표에 사용된 토큰은 7일 후에 상환되며, 후보 자격을 잃은 노드에도 똑같이 적용됩니다. 그러므로 위의 이유로 후보 자격을 잃은 노드는 "냉각(cooling off)" 기간을 가지며 선택 자격이 없습니다.
결론
IOST의 신뢰성증명 컨센서스 메커니즘은 생산된 블록 수가 투표수와 밀접하게 비례하는 Servi 포인트 시스템을 도입하여 더 분산화된 투표 및 위원회 구축 프로세스를 제공합니다.
이러한 설계는 블록 생성 프로세스의 분산화와 네트워크 전반의 공정성을 보장하지만, 높은 확장성 및 처리 속도를 가능하게 하는 위임증명(DPoS) 시스템의 단점(중앙화)을 가지지는 않습니다.
저희는 아직도 이 시스템의 스트레스 테스팅(stress testing) 중이며 개선과 트윗 디자인에 노력하고 있습니다. 피드백, 제안 또는 의견이 있으시면, 언제든지 kevin@iost.io로 연락하십시오. invite.iost.io 사이트를 방문하여 저희 기술팀과 직접 연락하실 수도 있습니다.
Q&A
질문: 누구나(IOST 1개를 가진 자) 투표할 수 있습니까?
답변: 네, 저희 네트워크는 모두에게 열려있으며 참가를 막는 장벽은 없습니다. 사실, 충분한 사람들이 여러분을 신뢰하게 하고 여러분에게 투표하게 하도록 하는 한, 표준 가정용 PC만 있으면 어떠한 투자도 요구하지 않고 후보가 되고, 위원회에 참가하고, 블록을 검증 및 생산하며 IOST를 획득할 수 있습니다.
질문: 위원회에는 몇 개의 노드가 있습니까?
답변: 블록을 생산하고 검증하기 위한 위원회를 형성하는 노드는 17개이지만, 분산화 및 순환 선출 프로세스로 인해 매일 위원회에 참가하도록 선출되는 수백 개의 다른 노드가 있을 수 있습니다.
질문: 얼마나 자주 이러한 노드가 변경됩니까?
답변: 현재 버전에서 선거 기간은 10분입니다. 이는Servi(투표로 획득)가 공제된 후 IOST 네트워크 상에서 10분마다 위원회가 변경된다는 점을 의미합니다. 이는 다른 위임지분증명 시스템보다 훨씬 더 분산화된 선출을 만들어냅니다. 예를 들어, 투표 변경 사항이 너무 작기 때문에 투표가 변경되더라도 EOS 블록 생산자는 바꾸지 않습니다. IOST의 신뢰성증명 알고리즘은 이러한 변경의 효과를 보장합니다.
질문: IOST는 분산화된 투표 및 선거 과정 면에서 EOS와 같은 것과 어떤 차이가 있습니까?
답변: IOST는 블록을 생성하고 검증하기 위한 최종 위원회 투표, 참가, 선출을 위한 보다 더 분산화된 메커니즘을 보유하고 있습니다. EOS에서 투표가 재개되지 않으면(스테이킹되지 않은 후에 3일의 대기 기간이 있음) 위원회 구성원을 순환할 수 있는 메커니즘은 없습니다. 이는 최초의 블록 생산자 21명이 위원회에 남아 모든 블록을 생산할 가능성이 높다는 점을 의미합니다. IOST에서 저희의 선거 프로세스는 블록 생산자가 지속적으로 교체되는 점을 보장합니다.
EOS에서는 종합적인 개인정보 보호를 위해 블록 생산자가 1명만 선택되었지만, 이는 투명성이 전혀 없는 가장 중앙 집중적인 프로세스입니다.
EOS 네트워크에서 투표하는 것은 매우 기술적이며 사용자 친화적이지 않으므로, 참가 장벽이 높아지고 제삼자 기관과 개인키가 공유되어야 하므로 많은 보안 문제가 야기됩니다. 또한, EOS를 사용하면 30개의 노드마다 1표의 투표권이 주어지므로, 소수의 토큰 소지자의 투표권의 가치가 약화됩니다.
IOST 네트워크에서 영원히 위원회에 남는 것은 불가능하므로, 위원회 창출에 아주 강력한 분산화된 프로세스가 구축됩니다.
질문: 어떻게 노드간의 공모를 막고 서로에게 투표하는 것을 막습니까?
답변: 가장 많은 투표수를 받은 후보자는 블록을 생산할 수 있는 가장 높은 기회를 가지므로, 투표를 공유하고 선정 기회를 줄인다는 것은 말이 되지 않습니다. 이는 선거 프로세스와 Servi 공제 메커니즘으로 인해 더욱 명백해집니다. 다른 후보와 투표수의 차가 큰 것이 더 유리합니다. 다른 위임지분증명 시스템을 사용하면 여러분은 오직 여러분의 경쟁자만 이길 투표수만 있으면 되며, 이는 공모 및 투표 배분을 유도합니다.
질문:다수의 노드를 호스팅하는 하나의 단체를 어떻게 막습니까?
답변: 같은 단체가 다수의 노드의 소유 여부에 대해서는 식별할 수 없습니다. 이곳은 오픈 네트워크이자 분산형 네트워크이며, 노드를 호스팅하기 위한 사전 조건이 없습니다. 하지만 위에서 설명했듯이, 투표수를 배분하는 것은 효율적이지 않으며 후보자로 선정되지 못할 위험 또는 위원회로 선정되지 못할 위험이 있습니다.
질문: 0.1% 임계값을 넘는 충분한 노드가 없다면 어떻게 됩니까?
답변: 저희의 프로토콜은 최적화되므로 이러한 일은 발생되지 않을 것입니다. 또한 진입 장벽은 이에 따라 조정될 것입니다. 하지만 저희의 컨센서스 메커니즘은 매우 유연하며 오류가 없습니다. 최대 위원회 구성원 수 보다 적은(또는 예, 위원회 구성원이 오프라인 됨) 아주 드문 상황에서는 최대 위원회 구성원 수보다 적어도 기능할 수 있으며 이에 따라 자체 조정할 수 있습니다.
질문: 네트워크 상에서 토큰이 스테이크되어야 합니까?
답변: 네, IOST 토큰은 투표 및 네트워크 자원 사용을 포함한 다양한 목적으로 스테이크될 수 있습니다. 이는 위원회 선거 공정성, 자원 유효성의 평등성을 보장하며, 네트워크 상의 공격 및 스팸을 피하기 위해 "낫씽 앳 스테이크(nothing at stake)" 문제를 제거합니다.
질문: 후보 자격을 얻기 위해, 후보자는 네트워크 상에 유효한 총 투표수의 0.1%를 받아야 하며, 여기서 1 IOST = 1 표입니다. 맞습니까?
답변: 네, 맞습니다. 저희 테스트 네트워크 검사를 기반으로 네트워크 안전성 및 보안을 위협하지 않고 진입 장벽이 너무 높지 않다는 것을 보장하기 위하여 메인넷 전 필요에 따라 저희는 이 숫자를 조정할 것입니다.
질문: 투표 시스템은 실제로 어떻게 작동합니까? IOST 소지자는 어떻게 투표하고 투표를 어떻게 변경할 수 있습니까?
답변: 엄밀히 말하자면, 이는 트랜잭션 및 스마트 계약을 보냄으로써 작동합니다. 사용자 관점에서 직관적인 사용자 인터페이스로 누구나 쉽고 간단하게 참여할 수 있습니다.
질문: 위원회는 어떻게 선출됩니까?
답변:
후보자 되기: 현재 버전에서, 전체 네트워크에서 IOST 투표수의 0.1%를 획득하면 블록체인 네트워크에 특정 트랜잭션을 전송할 수 있으며 위원회 후보자가 될 수 있습니다.
Servi 수령 및 선출되기: 홍보 및 프로모션을 통해 후보자는 커뮤니티의 신용 및 IOST 투표를 얻어 특정한 양의 Servi를 획득합니다. 선거 기간에 Servi양에 따른 상위 17개의 노드가 시스템에 의해 위원회 구성원으로 승인되고 차례로 블록을 생성하고 보상을 받습니다.
Servi 업데이트 및 위원회 변경: 선출된 모든 노드는 선출된 마지막 순위의 노드(가장 적은 양의 Servi를 보유한 위원회 구성원)가 받은 Servi 양이 공제됩니다. 이러한 Servi의 양은 모든 위원회 구성원 노드에서 공제되며, 새로운 위원회가 선출되고 형성됩니다. 현재 버전에서 위원회는 10분마다 변경됩니다.
질문: 선거가 Servi 및 IOST 토큰과 모두 관련있습니까? 비율은 어떻습니까?
투표수는 IOST 네트워크에서 IOST 토큰에 해당하며 투표에 사용될 수 있습니다. 토큰이 더 많을수록 더 많은 투표권을 가집니다. 후보 노드는 득표수에 근거하여 일정양의 Servi를 획득하며, 동시에 각 선거가 성공적으로 끝난 후에 일정양의 Servi가 공제되며, 마지막으로 Servi에 따라 후보 노드에서 위원회 구성원이 선출됩니다.
질문: 모두가 블록 생산자가 되고 싶어하는 이유는 무엇입니까?
답변: 블록 생산자는 블록 생산 및 트랜잭션 검증에 대하여 IOST를 받습니다. 본 글은 차후 기고 될 내용에서 설명할 수수료 모델 및 구조와 함께 분산화된 후보 및 위원회 선출에 관한 것입니다.
질문: 노드가 유효하지 않은 블록을 생성할 경우 어떻게 됩니까?
답변: 모든 블록은 모든 위원회 구성원이 검증하며 ⅔의 컨센서스를 요구합니다. 유효하지 않은 블록이 생산된 상황에서 나머지 위원회는 해당 블록을 검증하지 않으며 유효하지 않은 블록을 생산한 노드는 위원회에서 제거됩니다.
질문: 사용자가 자신의 투표권을 다른 사용자에게 위임("프록시")할 수 있습니까?
네, 이는 가능하며 이미 프로토콜 및 투표 기능의 기본 기능에 통합되어 있습니다.
IOST 공식 홈페이지 : http://iost.io
Steemit: https://steemit.com/@iostoken-kr
Facebook : http://bit.ly/IOSTKr_fb
Twitter : http://bit.ly/IOSTKr_twitter
Kakao : http://bit.ly/IOSTKr_kakao
Telegram : http://bit.ly/IOSTKr_telegram
짱짱맨 호출에 응답하여 보팅하였습니다.
Thank you so much for sharing this amazing post with us!
Have you heard about Partiko? It’s a really convenient mobile app for Steem! With Partiko, you can easily see what’s going on in the Steem community, make posts and comments (no beneficiary cut forever!), and always stayed connected with your followers via push notification!
Partiko also rewards you with Partiko Points (3000 Partiko Point bonus when you first use it!), and Partiko Points can be converted into Steem tokens. You can earn Partiko Points easily by making posts and comments using Partiko.
We also noticed that your Steem Power is low. We will be very happy to delegate 15 Steem Power to you once you have made a post using Partiko! With more Steem Power, you can make more posts and comments, and earn more rewards!
If that all sounds interesting, you can:
Thank you so much for reading this message!
Congratulations @iostoken-kr! You received a personal award!
Click here to view your Board
Vote for @Steemitboard as a witness and get one more award and increased upvotes!
Congratulations @iostoken-kr! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Do not miss the last post from @steemitboard:
Vote for @Steemitboard as a witness to get one more award and increased upvotes!