Перейти до основного вмісту

Ланцюжок доказів

Домени реєструються пакетно. Час очікування кожної партії становить ~10 хвилин. Кожна партія дає один доказ. Ці докази утворюють ланцюг переходів станів від генезису:

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 першого доказу має дорівнювати відомому кореню походження (порожнє розріджене дерево Меркла).

Перевірка ланцюжка

Верифікатор перевіряє всю історію реєстрації за п’ять кроків:

  1. Отримайте ключ перевірки SP1 -- детерміновано похідний від двійкового файлу гостьової програми
  2. Отримайте всі докази з API
  3. Перевірте кожен доказ SP1 за допомогою ключа підтвердження
  4. Перевірте ланцюг -- genesis == P1.old_root, P1.new_root == P2.old_root, ..., PN.new_root == current_root
  5. Вибіркова перевірка в ланцюжку -- знайдіть будь-який зафіксований 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})

Сканер ніколи не блокує створення доказів. Демон перевірки опитує записи, що очікують на розгляд, і може працювати на окремому обладнанні.