Ланцюжок доказів
Домени реєструються пакетами. Кожен пакет чекає близько 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 найпершого доказу має збігатися з відомим початковим коренем (порожнім розрідженим деревом Меркла).
Перевірка ланцюжка
Верифікатор перевіряє всю історію реєстрацій за п'ять кроків:
- Отримати ключ верифікації SP1 — він детерміновано виводиться з двійкового файлу гостьової програми
- Завантажити всі докази з API
- Перевірити кожен доказ SP1 за допомогою цього ключа верифікації
- Перевірити ланцюжок —
genesis == P1.old_root,P1.new_root == P2.old_root, ...,PN.new_root == current_root - Вибірково звірити з блокчейном — знайти будь-який зафіксований
txidна вузлі PIVX і переконатися, що memo, сума й блок збігаються
Якщо всі перевірки пройдені, уся історія реєстрацій правильна — довіряти індексатору не потрібно.
Конвеєр доказів
Сканер і генератор доказів працюють незалежно:
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})
Сканер ніколи не простоює в очікуванні генерації доказу. Демон-генератор сам опитує базу щодо записів, які очікують, і може працювати на окремому обладнанні.