ZooBC ウィキ
Proof of Participation

Proof of Participation

Proof of Participation(PoP)は、ZooBC がブロックについて合意する仕組みです。ブロックを作るのはオンチェーンのノードレジストリに登録されたノードで、直前のブロックのシードから抽選で選ばれ、すべての席が同じ確率を持ちます。各ノードは、ネットワークが必要とする仕事、すなわちプロトコルが割り当てたピアへブロックとトランザクションを渡すことについて計測され、その計測結果が新しいコインの取り分を決めます。ブロックが有効なのは正しい鍵がそれに署名したからであり、すべてのノードがそれを自分で確認します。

4 つの設計目標

  • ブロック生成力の均一化。 残高、ステーク、ハードウェア、スコアは、席の確率を変えません。
  • 開かれているがペースの決まったメンバー構成。 誰でもステークをロックして席を求めてキューに並べます。プロトコルは 1 サイクルにつき 1 つの新規ノードを加入させます。
  • 計測され、報酬が与えられる参加。 中継は受け取ったピアが署名するレシートによって証明され、レシートが各ノードの収入を決めます。
  • 無駄な作業なし。 安全性はパズルではなく、署名、ハッシュ、検証可能ランダム関数から得られます。

Proof of Participation と PoW・PoS の比較 では、これらの目標を Proof of Work、Proof of Stake、そしてそれらの委任型やフェデレーテッド型の変種と比較しています。

1 つのブロックができるまで

  1. 抽選。 直前のブロックのシードが、すべてのノードが同じように実行する乱数生成器を初期化します。生成器はラウンド 1 の生成者、ラウンド 2 の別の生成者、というように順に指名します(抽選)。
  2. ラウンド。 ラウンド 1 の生成者は、直前のブロックの 15 秒後にブロックのタイムスタンプを押すことを目標とします。そのノードが沈黙していれば、15 秒後にラウンド 2 の生成者が引き継ぎます(ラウンド、タイミング、時間枠)。トランザクションを含められるのは最初の 10 ラウンドだけで、直前のブロックの生成者は降格されます(優先ラウンド、空のブロック、直前の生成者)。
  3. ブロック。 生成者はノード鍵でブロックに署名し、検証可能ランダム関数で新しいシードを証明するため、そのシードを選ぶことはできません(ブロックシード(VRF))。
  4. 確認。 すべてのノードが、生成者がタイムスタンプの属するラウンドかその 1 つ前のラウンドに抽選されていたこと、署名、シードの証明、すべてのトランザクション、すべてのレシートを確認します。空のブロックも有効です。
  5. 仕事。 ノードはブロックとトランザクションを優先ピアに中継し、署名付きのレシートを集めます(レシートとネットワークトポロジー)。ノードが自分のブロックで提示するレシートが 参加スコア を動かし、スコアが コインベース抽選 の重みになります。
  6. 不在の代償。 番を飛ばしたノードは「欠席」となり、収入がなくなりスコアが下がります。4 回続けて番を逃すと一時停止され、スコアがゼロになると除名されます(逃した番、一時停止、除名)。
ノード A がブロックをノード B に中継し、B は自分が署名したレシートを返します。A の次のブロックがそのレシートを運び、それが A の参加スコアを動かし、スコアが新しい ZBC の取り分を得る A の確率を決めます。
ノード A がブロックをノード B に中継し、B は自分が署名したレシートを返します。A の次のブロックがそのレシートを運び、それが A の参加スコアを動かし、スコアが新しい ZBC の取り分を得る A の確率を決めます。

力と収入を切り離す

生成者の抽選はスコアを無視し、コインベース抽選はステークを無視します。スコアの高いノードはより多く稼ぎますが、より多くのブロックを作ることも、より多くのシードを選ぶこともありません。力はすべての席で同じままで、収入は各ノードが行う仕事に従います。より大きな力を得るには席を増やすしかなく、席はキューを通じて一度に 1 つずつしか加入が認められません(加入ペース)。

スコアが 90 % と 30 % の 2 つのノード:生成者の抽選では取り分は等しく(1 : 1)、コインベース抽選では 3 : 1 です。スコアが動かすのは報酬であって、ブロック生成ではありません。
スコアが 90 % と 30 % の 2 つのノード:生成者の抽選では取り分は等しく(1 : 1)、コインベース抽選では 3 : 1 です。スコアが動かすのは報酬であって、ブロック生成ではありません。

ブランチが競合するとき

ノードは累積難易度が最も大きいブランチに従います。累積難易度では、時間どおりのブロックが遅れたブロックより重くなります。完全な同点は先端ハッシュの小さい方が勝ちます(フォーク選択と累積難易度)。どのノードも 720 ブロック(3 時間)を超えて、またはスパインチェーン上で共同署名された最後のチェックポイントより下にロールバックすることはありません(ファイナリティとロールバック)。同じ親の上に 2 つのブロックに署名した生成者は、報告されて代償を課されることがあります(二重署名(equivocation))。

主な数値

項目値(mainnet)
ブロック間隔とラウンドの長さ15 秒
チェーンごとのジェネシス席11
トランザクションを含められるラウンド1 から 10
参加スコアの開始値20 %
一時停止までの連続した逃した番4
ノードごとの優先ピアと再割り当ての間隔12、40 ブロックごと
ロールバック制限720 ブロック(3 時間)

関連項目

このトピックの記事