証明チェーン
ドメインはバッチ単位で登録されます。各バッチの待ち時間はおよそ 10 分です。各バッチは証明を 1 つ生み出します。これらの証明は、ジェネシスから続く状態遷移の連なりを形づくります:
genesis_root (empty tree -- known constant)
| +-- "richard.pivx" registered at block 100,
| +-- "john.pivx" registered at block 110,
| ... (could be more registration/update commands)
| ! Proof 1 is generated
| old_root = genesis_root --> new_root_1
| +-- "richard.pivx" put his name on marketplace at block 200,
| +-- "sam.pivx" registered at block 250,
| ... (could be more registration/update commands)
| ! Proof 2 is generated
| old_root = new_root_1 --> new_root_2 (= current root)
各証明の old_root は、直前の証明の new_root と一致していなければなりません。そして最初の証明の old_root は、既知のジェネシスルート(空の疎マークルツリー)と一致していなければなりません。
チェーンの検証
検証者は登録履歴全体を 5 つのステップで確認します:
- SP1 の検証鍵を取得する — ゲストプログラムのバイナリから決定的に導出されます
- API からすべての証明を取得する
- その検証鍵で各 SP1 証明を検証する
- チェーンを確認する —
genesis == P1.old_root、P1.new_root == P2.old_root、...、PN.new_root == current_root - オンチェーンで抜き取り確認する — コミット済みの任意の
txidを PIVX ノードで調べ、メモ・金額・ブロックが一致することを確認する
すべての確認を通れば、登録履歴全体が正しいことになります — インデクサーを信頼する必要はありません。
証明パイプライン
スキャナーと証明生成器はそれぞれ独立して動きます:
PIVX Blockchain
|
PiNS Registrar Scanner (validates, captures SMT state)
|
Database (status: "pending")
|
SP1 Prover (generates ZK proof, verifies it)
|
Database (status: "proved")
|
New checkpoint published
|
Indexer syncs to the checkpoint
|
API Server (GET /v1.0/resolve/{name})
スキャナーが証明生成を待って止まることはありません。生成器のデーモンは保留中のレコードを自分でポーリングし、別のハードウェア上で動かすこともできます。