ZooBC 위키
참여 증명 (PoP)

우선 라운드, 빈 블록, 이전 생산자

두 가지 규칙이 추첨된 생산자가 블록에 무엇을, 언제 넣을 수 있는지 정합니다. 처음 10개 라운드의 생산자만 트랜잭션을 포함할 수 있고, 그 뒤의 생산자는 빈 블록만 만들 수 있습니다. 그리고 이전 블록을 만든 노드는 다음 추첨에서 강등되므로, 늦은 대체 생산자로서만 다음 블록을 만듭니다. 두 규칙은 무슨 일이 있어도 체인이 계속 움직이게 하면서, 중요한 선택권은 추첨이 앞에 놓은 생산자들에게 남겨 둡니다.

우선 라운드

각 생산자에게는 순번이 있습니다. 그 생산자를 지명한 추첨의 0부터 센 번호입니다. 파라미터 max_priority_blocksmiths가 10이므로 다음과 같습니다.

  • 순번 0~9, 즉 1~10라운드는 트랜잭션을 담을 수 있습니다.
  • 순번 10부터(11라운드 이후)는 블록에 트랜잭션이 없어야 합니다. 영수증은 여전히 담을 수 있습니다.

이 규칙은 블록을 생산할 때, 각 노드의 후보 블록 풀에서, 그리고 모든 검증자가 검사합니다. 트랜잭션을 포함한 늦은 블록은 거부됩니다.

1~10라운드는 트랜잭션을 담을 수 있고, 11~14라운드는 빈 블록만 만들며 영수증은 허용됩니다. 12라운드 생산자가 빈 블록을 만들어도 코인베이스는 그대로 지급됩니다.
1~10라운드는 트랜잭션을 담을 수 있고, 11~14라운드는 빈 블록만 만들며 영수증은 허용됩니다. 12라운드 생산자가 빈 블록을 만들어도 코인베이스는 그대로 지급됩니다.

이 규칙은 두 가지 목표의 균형을 잡습니다. 활성성은 결코 상위 생산자들이 온라인인지에 좌우되지 않습니다. 추첨된 노드 다수가 내려가 있더라도 목록 아래쪽의 누군가가 체인을 계속 키웁니다. 그러나 트랜잭션을 고를 권리는 우선순위가 가장 높은 생산자들에게 남으므로, 순위가 낮은 노드는 꽉 찬 블록이나 직접 골라 담은 트랜잭션의 블록을 서둘러 체인에 올려도 얻는 것이 없습니다.

빈 블록도 온전한 블록입니다

빈 블록도 완전히 유효합니다. 빈 블록은 생산자가 얻은 영수증을 담으므로, 생산자의 중계 작업은 여전히 참여 점수에 반영됩니다. 또한 다른 블록과 마찬가지로 그 시각에 예정된 코인베이스를 지급합니다. 버전 0.5.8부터 모든 블록의 코인베이스는 일정과 정확히 같아야 하므로, 코인베이스 추첨은 한 블록도 빠뜨리지 않습니다(공급과 발행 참조).

대기 중인 트랜잭션은 사라지지 않습니다. 트랜잭션을 포함할 수 있는 생산자의 다음 블록을 노드의 풀에서 기다립니다.

이전 생산자는 강등됩니다

블록 N의 생산자는 블록 N+1의 추첨에 남지만, 그 추첨 결과는 트랜잭션을 담을 수 있는 마지막 라운드인 10라운드보다 이르게 계산되지 않습니다. 블록 가중치에도 같은 방식으로 상한이 걸립니다. 가중치 공식에서 이 노드의 추첨 횟수 k는 10보다 작아지지 않으므로, 이 노드가 대체 생산자로서 블록 N+1을 만들더라도, 그 블록은 1라운드 블록 가중치의 최대 10분의 1만 더합니다(포크 선택과 누적 난이도 참조). 실제로는 다른 추첨된 노드가 블록을 만들 수 있을 때면 언제나 그 노드가 블록 N+1을 만듭니다.

강등은 벌칙이 아닙니다. 강등된 추첨은 결코 놓친 차례로 집계되지 않으며, 노드는 좌석과 점수를 유지합니다.

블록 N+1의 추첨: 첫 번째로 추첨된 이전 생산자 D는 10라운드로 밀려나고, 두 번째로 추첨된 노드 B가 블록을 만듭니다. D는 결코 제거되지 않으므로 체인은 멈추지 않습니다.
블록 N+1의 추첨: 첫 번째로 추첨된 이전 생산자 D는 10라운드로 밀려나고, 두 번째로 추첨된 노드 B가 블록을 만듭니다. D는 결코 제거되지 않으므로 체인은 멈추지 않습니다.

왜 연속으로 두 번 생산하지 못하게 하는가

블록 N+1의 시드는 온체인 게임과 베팅의 결과처럼 블록 N에 의존하는 추첨을 확정합니다(블록 시드 (VRF)와 ZooBC의 앱 참조). 두 블록을 모두 만든 노드는 블록의 내용과 그것을 확정하는 시드를 함께 쥐게 됩니다. 다른 노드가 응답할 수 있는 한, 누구도 베팅과 그 베팅을 결정하는 시드를 함께 소유해서는 안 된다는 것이 이 규칙입니다.

왜 추첨에서 빼지 않는가

이전 생산자를 추첨에서 빼면 노드가 둘인 체인은 두 노드 사이를 엄격하게 번갈아 가게 되고, 작동하는 노드가 하나뿐인 체인은 아예 블록을 만들 수 없게 됩니다. 제거되지 않고 강등되므로 이전 생산자는 최후의 생산자로 남습니다. 아무도 블록을 내지 않으면, 목표 시각이 이전 블록 150초 뒤인 10라운드부터 이 노드가 여전히 블록을 만들 수 있습니다. 이 규칙 때문에 체인이 멈추는 일은 없습니다.

같이 보기