キュー
新しいノードはすべて、登録から加入までの間、公開されたキューで待ちます。次に誰が加入するかはキューが決め、いつ加入するかは加入タイマーが決めます。順序はコミットメントと忍耐のバランスを取っています。数えられるのは、ステークにそれまでの待機時間を掛けた値です。
順序
キューで待機中のノードは、ステークに待機したブロック数を掛けた値で順位付けされます。同点の場合は登録の高さが早い方、次にノード ID の小さい方が優先されます。待機中のノードはいつでもステークを引き上げることができ、それまでに積み上げた待機時間は維持されます。引き上げにかかるのはトランザクションの手数料だけで、登録と同じ所有証明が必要です(ノードの登録)。
積で数えるということは、10 倍長く待った相手を追い越すには 10 倍多くロックしなければならないということです。
キューで待機中のノードには参加スコアがありません。ノードは加入したときに既定のスコア 20 % を受け取ります。加入タイマーは一度に 1 ノードしか入れないため、2 つのノードが同時に加入することはありません。
出席を示す
席は働くノードのためのものなので、キューで待機中のノードは、5,760 ブロック(1 日)の時間枠ごとに 1 回、オンラインであることを示さなければなりません。チェーン上にノードのしるしがあれば何でも数えられます。たとえばノードが署名したアテステーションです。何もなければ、ノードのソフトウェアが自動的に QueueAttendance トランザクション(タイプ 59)を送ります。その手数料はステークから差し引かれ(ステークが最低額を下回ることはありません)、ロンジェビティプールに入ります。
しるしのない時間枠があると、ノードの待機時間はやり直しになります。待機期間全体で、ノードは加入 1 サイクル分の時間枠を欠かすことができます。max(2, 最大の加入間隔 ÷ 1 日) で、最大の間隔が 90 日である mainnet では 90 時間枠です。91 回目に時間枠を欠かすと、ノードはキューから除外されます。加入するには、最後に評価された時間枠にも出席していなければなりません。
キューからの離脱は 10 % かかる
キューで待機中のノードを取り下げると、オーナーが正規の RemoveNodeRegistration トランザクションを使った場合でも、ステークの 10 % がかかります。出席不足による除外でも同じく 10 % がかかります。どちらの場合も残りの 90 % はオーナーに戻り(除外の場合は直ちに)、10 % は働いているノードに支払うロンジェビティプールに入ります(プール)。バーンされるものはありません(ZBC は決してバーンされない)。
この料金があるのは、参入時の最低額のためです。新規ノードは、すでにキューにいるノードのステークの中央値の少なくとも半分をロックしなければなりません。離脱に料金がなければ、誰かが大きなステークをキューに置いて他の全員の最低額を押し上げ、その後無料で引き上げることができてしまいます。
アクティブなノードがすべて一時停止した場合
キューは予備としても機能します。アクティブなノードがすべて一時停止中の場合、出席を保っているキュー内の最上位のノードがブロックを作ることができ、そのブロックによって直ちに加入が認められます。したがって、レジストリ全体が沈黙した場合でもチェーンは再開できます。
キューを読む
キューは公開されています。GET /api/v1/nodes?status=queued は、待機中のすべてのノードをステークと登録の高さとともに一覧表示するため、誰でも順序を計算して次が誰かを確認できます。