Zum Hauptinhalt springen

Die Beweiskette

Domains werden im Batch registriert. Jeder Batch wartet rund 10 Minuten. Jeder Batch erzeugt einen Beweis. Diese Beweise bilden eine Kette von Zustandsübergängen ab Genesis:

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)

Der old_root jedes Beweises muss dem new_root des vorherigen entsprechen. Der old_root des ersten Beweises muss dem bekannten Genesis-Root entsprechen (einem leeren Sparse Merkle Tree).

Die Kette prüfen

Ein Verifizierer prüft die gesamte Registrierungshistorie in fünf Schritten:

  1. Den SP1-Verification-Key holen — er wird deterministisch aus der Binärdatei des Gastprogramms abgeleitet
  2. Alle Beweise abrufen über die API
  3. Jeden SP1-Beweis prüfen mit diesem Verification Key
  4. Die Kette prüfengenesis == P1.old_root, P1.new_root == P2.old_root, ..., PN.new_root == current_root
  5. Stichprobe on-chain — eine beliebige festgeschriebene txid auf einem PIVX-Knoten nachschlagen und bestätigen, dass Memo, Betrag und Block übereinstimmen

Bestehen alle Prüfungen, ist die gesamte Registrierungshistorie korrekt — Vertrauen in den Indexer ist nicht nötig.

Die Beweis-Pipeline

Scanner und Prover laufen unabhängig voneinander:

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})

Der Scanner wartet nie auf die Beweiserzeugung. Der Prover-Daemon fragt selbst nach offenen Datensätzen und kann auf separater Hardware laufen.