ブロックと時間
ZooBC は、どのネットワークでもおよそ 15 秒ごとにチェーンにブロックを加えます。プロトコルは時間をブロック数で測ります。ルールが「1 日」と言うとき、それは 5,760 ブロックを意味します。この換算を知っておくと、このウィキのほとんどの数値が読みやすくなります。
15 秒ごとに 1 ブロック
15 秒の間隔は各チェーンのジェネシスのパラメータ(min_block_interval)で、devnet、testnet、mainnet で同じです。各ブロックの後、抽選が次のブロックを作ってよいノードを順番に指名します(抽選)。最初に抽選されたノードが最初のラウンドを担い、直前のブロックの 15 秒後を目標とします。そのノードが遅れたりオフラインだったりすれば、次のラウンドに抽選されたノードが 15 秒後にブロックを作ることができ、以下同様に続きます。そのため、生成者が不在でも 1 つのブロックが遅れるだけで、チェーンが止まることはありません(ラウンド、タイミング、時間枠)。
親の 13 秒未満後に届いたブロックは「速すぎる生成」として拒否されるため、どの生成者もチェーンを速めることはできません。
空のブロックも数えられる
誰かがトランザクションを送るかどうかにかかわらず、ブロックは作られ続けます。トランザクションのないブロックも仕事をしています。
- ノードが互いにデータを中継したことの署名付きの証明である レシートとネットワークトポロジー を運び、それが 参加スコア に反映されます。
- バージョン 0.5.8 以降、満杯のブロックとまったく同じように、その時刻に予定された新しいコイン、つまりコインベースを運びます。
新しい ZBC の放出はブロック数ではなく時計に従います。ブロックのコインベースは、15 年のスケジュールが直前のブロックのタイムスタンプから自身のタイムスタンプまでの間に放出する量です(供給量と発行)。ブロックが遅い期間があっても 1 日の発行が減ることはなく、速いブロックが続いても発行が増えることはありません。
ブロック数で数える期間
間隔が固定されているため、プロトコルは期間をブロック数で書きます。よく使う換算と、このウィキに登場する期間のいくつかを示します(mainnet の値)。
| ブロック数 | 時間 | 登場する場面 |
|---|---|---|
| 120 | 30 分 | ノード鍵のローテーションが有効になるまでの遅延(ノードの鍵) |
| 240 | 1 時間 | ストレージ証明の 1 エポック(分散ストレージプール) |
| 720 | 3 時間 | ロールバック制限(ファイナリティとロールバック) |
| 2,880 | 12 時間 | ノード数が 2,880 未満の間のスコア単位、つまりスコアの時計の刻み(逃した番、一時停止、除名) |
| 5,760 | 1 日 | キューで待機中のノードの出席の時間枠(キュー) |
| 11,520 | 2 日 | 自動更新するノードがリリースをインストールするまでの既定の待ち時間(リリースとアップデート) |
| 40,320 | 1 週間 | ノードのステークの離脱時のクールダウン(レジストリからの離脱) |
| 172,800 | 30 日 | スナップショットサイクル 1 つ。アカウントレントと価格投票の期間でもあります(アカウントレントとプルーニング、価格投票) |
いくつかの制限は、タイムスタンプを比較するため、代わりに秒で数えられます。たとえばトランザクションは、既定では自身のタイムスタンプから 1 時間後までブロックに取り込まれることができます(有効期限とタイムスタンプ)。
スパイン:1 日に 1 ブロック
メインチェーンの横で、すべてのノードはスパインを保持しています。これはトランザクションを運ばない、チェックポイントのためのゆっくりとした連れのチェーンです(スパインチェーン)。testnet と mainnet では 1 日に 1 ブロック(86,400 秒ごと)、devnet では 1 時間に 1 ブロックを作ります。各スパインブロックは登録済みノードによって共同署名され、760 ブロック(3 時間 10 分)深いメインチェーンのブロックを指定します。これによりメインチェーンには、どの再編成も越えられない下限ができます(ファイナリティとロールバック)。
devnet のタイミング
開発用ネットワークである devnet は、15 秒のブロックはそのままに、ロールバック制限(60 ブロック)やスナップショットサイクル(240 ブロック)など、上の期間の多くを短くしています。それらの効果が数分から数時間のうちに現れるようにするためです。testnet と mainnet は同じ値を使います。詳しい比較は devnet、testnet、mainnet にあります。