ZooBC ウィキ
ZooBC の基本

ジェネシスブロック

ZooBC のチェーンはすべて、ジェネシスブロック、つまりブロック 0 から始まります。それはメッセージではなく、トランザクションも運びません。資金を供給されたアカウントからすべてのコンセンサスパラメータまで、チェーンの開始時の状態全体を表しています。そのすべてが 1 つのハッシュに確定され、そのハッシュがチェーンの身元になります。残高を 1 つ変えるだけで、別のチェーンになります。

設定から作られる

チェーンは設定ファイルからオフラインで作られます。ジェネシストランザクションはありません。設定そのものが状態です。設定は次のものを定めます。

  • 資金を供給されたアカウントとその残高。アプリプール に資金を供給するアプリトレジャリーがあれば、それも含みます。
  • ジェネシストークンとその残高。どのチェーンも、ZUSD や ZBTC など、同じ 14 種のジェネシスコインを持っています(トークンとマーケット)。
  • ベスティングスケジュール
  • 登録済みノード、つまりジェネシス席。各チェーンに 11 あり、ZooBC Foundation が保有し、それぞれノード自身のアカウントに 10 ZBC の運用残高を持ちます。
  • ブロック間隔から開始時の価格まで、コンセンサスパラメータと、すべてのルールの有効化の高さ
  • リリース権限者(リリースとアップデート)などの役割を持つ鍵と、ブリッジコインのカストディアドレス(ブリッジとラップドコイン)

ジェネシスの構築ツールはすべての入金を合計し、合計が 33,333,333.33333333 ZBC の供給上限を超えるジェネシスの書き込みを拒否します。配られなかった分はコインベースプールとなり、15 年かけて放出されます(供給量と発行)。高さ 0 と 1 ではコインベースは支払われません。

ジェネシスブロックは、アカウントと残高、ジェネシス席、ジェネシスコイン、ベスティングスケジュール、パラメータ、ルールの高さを保持します。そのすべてが設定ハッシュに入り、そこからチェーンの身元であるジェネシスハッシュが導かれます。
ジェネシスブロックは、アカウントと残高、ジェネシス席、ジェネシスコイン、ベスティングスケジュール、パラメータ、ルールの高さを保持します。そのすべてが設定ハッシュに入り、そこからチェーンの身元であるジェネシスハッシュが導かれます。

開始時の全体を 1 つのハッシュに

構築ツールは、重要なものすべてを 1 つの設定ハッシュにまとめます。そしてジェネシスハッシュが、ブロックのバージョン、高さ、タイムスタンプ、ゼロの直前ハッシュ、そしてその設定ハッシュから導かれます。ジェネシスブロック自体は、すべてゼロのシード、生成者の鍵、署名、直前ハッシュを持ち、そのハッシュは自身のバイト列のハッシュではなく、設定から導かれた値です。読み込まれても確定されない値が 2 つあります。total_supply と node_operating_balance です。

確定された値をどれか 1 つでも変えると新しいジェネシスハッシュになり、したがって別のチェーンになります。

チェーンの身元

ジェネシスハッシュはチェーンの唯一の身元です。ネットワーク ID のバイトはありません。

  • ノードは接続するときにジェネシスハッシュを比較し、ハッシュの異なるピアを拒否します。
  • すべてのトランザクションの署名がそれを対象にしています。署名者は SHA3-256("ZBC-TX" ‖ genesis hash ‖ the unsigned transaction bytes) に署名するため、あるチェーン用に署名されたトランザクションは他のすべてのチェーンで無効です(チェーン束縛署名)。
  • ノードは /api/v1/node/info でそれを genesis_hash として報告するため、ウォレットはどのチェーンと通信しているかを知ることができます。
  • 再立ち上げされたテストネットワークは新しいハッシュを得ます。

そのため devnet、testnet、mainnet は、残高も署名も共有しません(devnet、testnet、mainnet)。

ノードが自分でジェネシスを作ることは決してありません。ノードが起動するとき、ブロック 0 はすでにデータベースに入っていなければなりません(ノードの運用)。

マスターキーはない

ジェネシスは、後でチェーンを書き換えられる鍵を何も持っていません。ルールとパラメータが変わるのは、ルールが適用される高さを運ぶ新しいリリースと、レジストリの席による範囲の限られた価格投票(価格投票)を通じてだけです。メッセージに署名することでルール、パラメータ、残高を変えられる鍵はなく、自分のチェーンに記録されたルールの高さと食い違うノードのバイナリは動作を拒否します。バージョン 0.5.8 以降、121 のコンセンサスルールはすべて高さ 0 から有効です。

関連項目