ZooBC ウィキ
ノードの運用

ノードの運用

ZooBC のノードとは、コンピューター上で動く ZooBC のソフトウェアです。チェーンのコピーを保持し、すべてのブロックとトランザクションを他のすべてのノードと同じルールで確認し、公開の HTTP API を提供します。誰でもノードを動かすことができ、チェーンを追跡するだけのノードでも、オーナーは誰も信頼することなくすべてを確認できます。ブロックを作るのは別の段階です。ノードがブロックを作るのは、ノードレジストリとその席 に席を持ってからだけです。

ノードが動かすもの

ノードは zoobc-node --start node.conf で起動する 1 つのプロセスで、1 つの SQLite データベースを持ちます。3 つのポートで待ち受けます。

ポート用途
8001ピアツーピアネットワーク
8080HTTP API。ウェブウォレット も提供します
8545[[metamaskMetaMask]] が使う Ethereum 形式の RPC アダプター。既定ではノード自身のマシン上(ループバック)のみ

ノードがジェネシスブロックを作ることはありません。ブロック 0 はあらかじめデータベースに入っていなければならず、そのブロックのハッシュがチェーンの身元です(ジェネシスブロック を参照)。ノードが抜け出せないブランチに行き詰まった(wedged)場合は、auto_resync の設定が既定でオンなので、自分のチェーンを破棄し、スパインチェーン に固定されたスナップショットから自身を再構築します。リリースは リリースピン を同梱することもできます。これはノード自身のスパインが一致しなければならない既知のスパインブロックです。新しいバージョンは、ノードの横で動き、オーナーが管理するアップデーターを通じて届きます(リリースとアップデート)。

起動からブロック生成まで

  1. 運用者が 2 つの鍵を作成します。マシン用のノード鍵と、ウォレットのオーナー鍵です(ノードの鍵)。
  2. オーナーが、ステークをロックし、2 つの鍵が対応していることの証明を添えた登録を送ります(ノードの登録)。
  3. ノードは、ステークに待機時間を掛けた値で並ぶ公開されたキューで待ちます(キュー)。
  4. 加入タイマーが、プロトコルの定めるゆっくりとしたペースで、1 ノードずつ加入させます(加入ペース)。
  5. 加入が認められると、ノードはブロックを作るよう抽選され(抽選)、割り当てられたピアにブロックとトランザクションを中継し(レシートとネットワークトポロジー)、短い成熟期間の後に報酬の分配を受けます(成熟と収入)。

各チェーンは ZooBC Foundation が保有する 11 のジェネシス席から始まります。それ以外のノードはすべてキューを通じて加入し、誰が入るかを選ぶ者はいません。手作業で与えられる席はなく、Proof of Work のように計算能力で勝ち取れる席もありません。

レジストリにとどまる

席は仕事をすることで維持されます。抽選された番を理由を問わず飛ばした登録済みノードは、次に自分のブロックを作るまで欠席状態になります。欠席中は何も稼げず、参加スコアがスコア単位ごとに(100 点中)5 点下がります。スコア単位は、ノード数 2,880 未満のネットワークでは 12 時間です。ノードが署名するレシートや ping ではこの状態は終わらず、終わるのは自身の次のブロックだけです。

4 回続けて番を逃すと、ノードは一時停止もされます。生成者の抽選から外れますが、席は保持します。オンラインに戻ると、ソフトウェアが ping を送ります。これは一時停止中のノードだけが送れる手数料不要の小さなトランザクションで、ノードを仮復帰として抽選に戻します。スコアがゼロに達すると、ノードは除名されます。詳細は 逃した番、一時停止、除名 に、席が終わるすべての道筋は レジストリからの離脱 に、すべての数値は mainnet のノードパラメータ にあります。

関連項目

このトピックの記事