ZooBC 위키
ZooBC 기본

제네시스 블록

모든 ZooBC 체인은 제네시스 블록, 즉 블록 0으로 시작합니다. 제네시스 블록은 메시지가 아니며 트랜잭션을 담지도 않습니다. 이 블록은 자금이 들어 있는 계정부터 모든 합의 파라미터까지 체인의 시작 상태 전체를 나타냅니다. 이 모든 것이 하나의 해시로 확정되며, 그 해시가 체인의 신원입니다. 잔액 하나만 바꿔도 다른 체인이 됩니다.

구성으로부터 만들어짐

체인은 구성 파일로부터 오프라인에서 만들어집니다. 제네시스 트랜잭션은 없으며, 구성이 곧 상태입니다. 구성은 다음을 정합니다.

  • 자금이 들어 있는 계정과 그 잔액. 앱 풀에 자금을 대는 앱 트레저리가 있다면 그것도 포함됩니다.
  • 제네시스 토큰과 그 잔액. 모든 체인은 ZUSD와 ZBTC 같은 똑같은 14개의 제네시스 코인을 가집니다(토큰과 마켓).
  • 베스팅 일정
  • 등록 노드, 즉 제네시스 좌석. 각 체인에 11개이며 ZooBC Foundation이 보유하고, 각각 노드 자신의 계정에 10 ZBC의 운영 잔액이 있습니다.
  • 블록 간격부터 시작 가격까지의 합의 파라미터, 그리고 모든 규칙의 활성화 높이
  • 릴리스 권한자(릴리스와 업데이트) 같은 역할 키, 그리고 브리지 코인의 커스터디 주소(브리지와 래핑된 코인)

제네시스 생성 도구는 모든 입금액을 합산하며, 총합이 공급 상한 33,333,333.33333333 ZBC를 넘는 제네시스는 작성을 거부합니다. 나눠 주지 않은 부분은 코인베이스 풀이 되어 15년에 걸쳐 방출됩니다(공급과 발행). 높이 0과 1에서는 코인베이스가 지급되지 않습니다.

제네시스 블록은 계정과 잔액, 제네시스 좌석, 제네시스 코인, 베스팅 일정, 파라미터와 규칙 높이를 담습니다. 이 모두가 구성 해시에 들어가고, 그로부터 체인의 신원인 제네시스 해시가 도출됩니다.
제네시스 블록은 계정과 잔액, 제네시스 좌석, 제네시스 코인, 베스팅 일정, 파라미터와 규칙 높이를 담습니다. 이 모두가 구성 해시에 들어가고, 그로부터 체인의 신원인 제네시스 해시가 도출됩니다.

시작 전체를 담는 하나의 해시

생성 도구는 중요한 모든 것을 하나의 구성 해시로 접어 넣습니다. 그다음 제네시스 해시는 블록의 버전, 높이, 타임스탬프, 0으로 된 이전 해시, 그리고 그 구성 해시로부터 도출됩니다. 제네시스 블록 자체는 모두 0인 시드, 생산자 키, 서명, 이전 해시를 담으며, 그 해시는 블록 자체 바이트의 해시가 아니라 구성에서 도출된 값입니다. 두 값은 읽기는 하지만 확정에 포함되지 않습니다. total_supply와 node_operating_balance입니다.

확정에 포함된 값을 하나라도 바꾸면 새 제네시스 해시가 나오고, 따라서 다른 체인이 됩니다.

체인의 신원

제네시스 해시는 체인의 유일한 신원입니다. 네트워크 ID 바이트는 없습니다.

  • 노드는 연결할 때 제네시스 해시를 비교하고, 해시가 다른 피어는 거부합니다.
  • 모든 트랜잭션 서명이 제네시스 해시를 포함합니다. 서명자는 SHA3-256("ZBC-TX" ‖ 제네시스 해시 ‖ 서명되지 않은 트랜잭션 바이트)에 서명하므로, 한 체인을 위해 서명된 트랜잭션은 다른 모든 체인에서 무효입니다(체인 결속 서명).
  • 노드는 /api/v1/node/info에서 이를 genesis_hash로 알려 주므로, 지갑은 자신이 어느 체인과 통신하는지 알 수 있습니다.
  • 다시 출시된 테스트 네트워크는 새 해시를 받습니다.

그래서 devnet, testnet, mainnet은 잔액도 서명도 공유하지 않습니다(devnet, testnet, mainnet).

노드는 제네시스를 직접 만들지 않습니다. 블록 0은 노드가 시작할 때 이미 데이터베이스에 있어야 합니다(노드 운영).

마스터 키는 없습니다

제네시스에는 나중에 체인을 다시 쓸 수 있는 키가 없습니다. 규칙과 파라미터는 규칙이 적용되는 높이를 담은 새 릴리스와, 레지스트리 좌석들의 범위가 정해진 가격 투표를 통해서만 바뀝니다(가격 투표). 어떤 키도 메시지에 서명하는 것으로 규칙, 파라미터, 잔액을 바꾸지 못하며, 자기 체인에 기록된 규칙 높이와 맞지 않는 노드 바이너리는 실행을 거부합니다. 버전 0.5.8부터 121개의 합의 규칙이 모두 높이 0부터 적용됩니다.

같이 보기