ZooBC 위키
참여 증명 (PoP)

참여 증명 (PoP)

참여 증명(PoP)은 ZooBC가 블록에 합의하는 방식입니다. 블록은 온체인 노드 레지스트리에 있는 노드들이 만들며, 이 노드들은 이전 블록의 시드로 추첨되고 모든 좌석은 같은 기회를 갖습니다. 각 노드는 네트워크에 필요한 일, 즉 프로토콜이 배정한 피어들에게 블록과 트랜잭션을 전달하는 일로 측정되며, 그 측정 결과가 새 코인에서 노드가 받을 몫을 정합니다. 블록은 올바른 키가 서명했기 때문에 유효하며, 모든 노드가 이를 직접 확인합니다.

네 가지 설계 목표

  • 균일한 블록 생산 권한. 잔액, 스테이크, 하드웨어, 점수는 좌석의 기회를 바꾸지 않습니다.
  • 열려 있되 속도가 정해진 참여. 누구나 스테이크를 잠그고 좌석을 얻기 위해 대기열에 들어갈 수 있으며, 프로토콜은 주기마다 새 노드 하나를 입회시킵니다.
  • 측정되고 보상받는 참여. 중계는 데이터를 받은 피어가 서명한 영수증으로 증명되며, 영수증이 각 노드의 수입을 결정합니다.
  • 낭비되는 작업이 없음. 보안은 퍼즐이 아니라 서명, 해시, 검증 가능한 난수 함수에서 나옵니다.

참여 증명과 PoW·PoS의 비교에서는 이 목표들을 작업 증명, 지분 증명, 그리고 그 위임형·연합형 변형과 비교합니다.

블록 하나가 만들어지는 과정

  1. 추첨. 이전 블록의 시드가 모든 노드에서 똑같이 실행되는 난수 생성기를 시작시킵니다. 생성기는 1라운드의 생산자, 2라운드의 생산자를 차례로 지명합니다(추첨).
  2. 라운드. 1라운드 생산자는 이전 블록 15초 뒤의 타임스탬프를 목표로 블록을 만듭니다. 이 생산자가 응답하지 않으면 15초 뒤 2라운드 생산자가 이어받습니다(라운드, 타이밍, 시간 창). 처음 10개 라운드만 트랜잭션을 담을 수 있으며, 이전 블록의 생산자는 강등됩니다(우선 라운드, 빈 블록, 이전 생산자).
  3. 블록. 생산자는 노드 키로 블록에 서명하고 검증 가능한 난수 함수로 새 시드를 증명하므로, 그 시드를 고를 수 없습니다(블록 시드 (VRF)).
  4. 검사. 모든 노드는 생산자가 타임스탬프가 속한 라운드나 그 직전 라운드에 추첨되었는지, 그리고 서명, 시드 증명, 모든 트랜잭션과 모든 영수증을 검사합니다. 빈 블록도 유효합니다.
  5. 일. 노드는 블록과 트랜잭션을 우선 피어에게 중계하고 서명된 영수증을 모읍니다(영수증과 네트워크 토폴로지). 노드가 자기 블록에 담는 영수증이 그 노드의 참여 점수를 움직이고, 참여 점수는 코인베이스 추첨에 가중치를 줍니다.
  6. 부재의 대가. 차례를 건너뛴 노드는 "누락 상태"가 되어 수입이 없고 점수가 떨어집니다. 네 번 연속으로 놓치면 정지되고, 점수가 0이 되면 퇴출됩니다(놓친 차례, 정지, 퇴출).
노드 A가 노드 B에 블록을 중계하고, B는 자신이 서명한 영수증을 돌려보냅니다. A의 다음 블록이 그 영수증을 담으면 A의 참여 점수가 움직이고, 그 점수가 A가 새 ZBC의 몫을 받을 확률을 정합니다.
노드 A가 노드 B에 블록을 중계하고, B는 자신이 서명한 영수증을 돌려보냅니다. A의 다음 블록이 그 영수증을 담으면 A의 참여 점수가 움직이고, 그 점수가 A가 새 ZBC의 몫을 받을 확률을 정합니다.

권한과 수입의 분리

생산자 추첨은 점수를 무시하고, 코인베이스 추첨은 스테이크를 무시합니다. 점수가 높은 노드는 더 많이 벌지만 블록을 더 많이 만들지도, 시드를 더 많이 고르지도 않습니다. 권한은 모든 좌석에 똑같이 유지되고, 수입은 각 노드가 하는 일을 따릅니다. 더 큰 권한은 더 많은 좌석을 뜻하며, 좌석은 오직 대기열을 통해 한 번에 한 입회씩 주어집니다(입회 속도).

점수가 90 %와 30 %인 두 노드: 생산자 추첨에서 두 노드의 몫은 같고(1 : 1), 코인베이스 추첨에서는 3 : 1입니다. 점수는 블록 생산이 아니라 보상을 움직입니다.
점수가 90 %와 30 %인 두 노드: 생산자 추첨에서 두 노드의 몫은 같고(1 : 1), 코인베이스 추첨에서는 3 : 1입니다. 점수는 블록 생산이 아니라 보상을 움직입니다.

분기가 경쟁할 때

노드는 누적 난이도가 가장 큰 분기를 따르며, 이 난이도에서는 제시간에 만든 블록이 늦은 블록보다 무겁습니다. 정확히 같으면 최상단 해시가 더 낮은 쪽이 이깁니다(포크 선택과 누적 난이도). 어떤 노드도 720블록(3시간)보다 많이 롤백하지 않으며, 스파인 체인에서 공동 서명된 마지막 체크포인트 아래로도 롤백하지 않습니다(최종성과 롤백). 같은 부모 위에 두 블록에 서명한 생산자는 신고되어 불이익을 받을 수 있습니다(이중 서명 (equivocation)).

주요 수치

항목값 (mainnet)
블록 간격, 라운드 길이15초
체인당 제네시스 좌석11
트랜잭션을 담을 수 있는 라운드1~10
참여 점수 시작값20 %
정지되기까지 연속으로 놓친 차례4
노드당 우선 피어 수, 재배정 주기12개, 40블록마다
롤백 한도720블록 (3시간)

같이 보기

이 주제의 문서