ZooBC 위키
ZooBC 기본

블록과 시간

ZooBC는 모든 네트워크에서 약 15초마다 체인에 블록 하나를 더합니다. 프로토콜은 시간을 블록으로 잽니다. 규칙에서 "하루"라고 하면 5,760블록을 뜻합니다. 이 환산을 알면 이 위키의 숫자 대부분을 쉽게 읽을 수 있습니다.

15초마다 블록 하나

15초 간격은 각 체인 제네시스의 파라미터(min_block_interval)이며, devnet, testnet, mainnet에서 모두 같습니다. 각 블록 이후 추첨이 다음 블록을 만들 수 있는 노드들을 순서대로 지명합니다(추첨). 첫 번째로 추첨된 노드가 이전 블록 15초 뒤를 목표로 하는 첫 라운드를 맡습니다. 그 노드가 늦거나 오프라인이면 다음 라운드에 추첨된 노드가 15초 뒤에 블록을 만들 수 있고, 그렇게 이어지므로, 생산자가 자리에 없으면 체인이 멈추는 것이 아니라 블록 하나가 늦어질 뿐입니다(라운드, 타이밍, 시간 창).

부모 블록 이후 13초가 지나기 전에 도착한 블록은 "너무 빨리 생산됨"으로 거부되므로, 어떤 생산자도 체인을 빠르게 할 수 없습니다.

빈 블록도 의미가 있습니다

블록은 누가 트랜잭션을 보내든 말든 계속 나옵니다. 트랜잭션이 없는 블록도 일을 합니다.

  • 노드들이 서로 데이터를 중계했다는 서명된 증명인 영수증을 담으며, 이는 참여 점수의 바탕이 됩니다.
  • 버전 0.5.8부터는 꽉 찬 블록과 똑같이 그 시각에 예정된 새 코인, 즉 코인베이스를 담습니다.

새 ZBC의 방출은 블록 수가 아니라 시계를 따릅니다. 블록의 코인베이스는 15년 일정이 이전 블록의 타임스탬프와 자기 타임스탬프 사이에 방출하는 양입니다(공급과 발행). 블록이 느리게 이어지는 구간이 있어도 하루 동안 덜 발행되지 않고, 블록이 빠르게 몰려도 더 발행되지 않습니다.

트랜잭션이 없을 때도 15초마다 블록 하나: 하루 5,760블록, 일주일 40,320블록. 스파인 체인은 하루에 1블록을 만듭니다.
트랜잭션이 없을 때도 15초마다 블록 하나: 하루 5,760블록, 일주일 40,320블록. 스파인 체인은 하루에 1블록을 만듭니다.

블록 수로 세는 기간

간격이 고정되어 있으므로 프로토콜은 기간을 블록 수로 적습니다. 다음은 자주 쓰는 환산과, 이 위키 곳곳에 나오는 기간 일부입니다(mainnet 값).

블록시간등장하는 곳
12030분노드 키 교체가 효력을 갖기까지의 지연 (노드의 키)
2401시간저장 증명 에포크 하나 (분산 저장소 풀)
7203시간롤백 한도 (최종성과 롤백)
2,88012시간노드가 2,880개 미만일 때 점수 시계의 단위인 점수 단위 (놓친 차례, 정지, 퇴출)
5,7601일대기열 노드의 참석 윈도우 (대기열)
11,5202일자동 업데이트 노드가 릴리스를 설치하기 전 기본 대기 시간 (릴리스와 업데이트)
40,3201주노드 스테이크의 퇴장 쿨다운 (레지스트리에서 나가기)
172,80030일스냅샷 주기 하나이자 계정 임대료와 가격 투표의 기간 (계정 임대료와 정리, 가격 투표)

몇 가지 한도는 타임스탬프를 비교하기 때문에 대신 초 단위로 셉니다. 예를 들어 트랜잭션은 기본적으로 자기 타임스탬프 이후 1시간까지 블록에 포함될 수 있습니다(만료와 타임스탬프).

스파인: 하루에 블록 하나

모든 노드는 메인 체인 옆에 트랜잭션을 담지 않는 느린 동반 체크포인트 체인인 스파인을 보관합니다(스파인 체인). 스파인은 testnet과 mainnet에서 하루에 블록 하나(86,400초마다), devnet에서는 한 시간에 하나를 만듭니다. 각 스파인 블록은 등록 노드들이 공동 서명하며 760블록(3시간 10분) 깊이의 메인 체인 블록을 지정하는데, 이것이 메인 체인에 어떤 재구성도 넘을 수 없는 하한을 줍니다(최종성과 롤백).

devnet의 타이밍

개발 네트워크인 devnet은 15초 블록은 그대로 두되, 롤백 한도(60블록)와 스냅샷 주기(240블록)처럼 위의 여러 기간을 줄여서 그 효과가 몇 분이나 몇 시간 안에 드러나게 합니다. testnet과 mainnet은 같은 값을 씁니다. 전체 비교는 devnet, testnet, mainnet에 있습니다.

같이 보기