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

Навіщо потрібні докази?

Індексатор сканує блокчейн PIVX і будує реєстр імен. Але чому хтось має йому довіряти? Що як він:

  • Вигадає реєстрацію, якої в блокчейні не було?
  • Візьме неправильну плату?
  • Зареєструє ім'я двічі?
  • Підробить стан реєстру?

ZK-докази знімають ці запитання. Кожен доказ — криптографічний сертифікат того, що реєстрацію оброблено правильно. Перевірити його самостійно може будь-хто.

Що перевіряє кожен доказ

Генератор доказів PIVX використовує SP1 — віртуальну машину з нульовим розголошенням на архітектурі RISC-V. Для кожної транзакції з доменом генератор виконує всередині zkVM такі перевірки:

  1. Коректність імені — від 1 до 64 символів, малі літери, цифри й дефіси, у дозволеній зоні
  2. Коректність адреси — цільова адреса є екранованою адресою PIVX Sapling потрібної мережі в сучасній формі bech32
  3. Підпис Ed25519 — підпис під точним підписуваним повідомленням дійсний і зроблений тим ключем, якого вимагає операція
  4. Інваріанти операції — володіння, стан ціни й порядок nonce узгоджуються з виконуваною операцією
  5. Захист від повтору — nonce строго більший за попередній nonce запису
  6. Перехід стану — доказ Меркла відновлює старий корінь, а новий корінь випливає із застосування рівно цієї зміни

Якщо хоч одна перевірка не проходить, доказ створити неможливо.

Що доказ не перевіряє

Тут точність важливіша за переконливість:

  • Платіж усередині схеми не перевіряється. Чи сплатила транзакція правильну суму і чи справді BUY переказав кошти — це забезпечує реєстратор поза блокчейном, і перевірити це може будь-хто, хто відтворить ланцюжок з опублікованим ключем перегляду. Доказ володіння нотою всередині zkVM коштував би значно більше, ніж сьогодні коштує весь пакет, і дав би слабшу гарантію, ніж уже дає відтворення: схема бачить лише зобов'язання ноти, а індексатор, який відтворює, — розшифровану суму й memo.
  • Схема не доводить, що вхідні дані взяті зі справжнього ланцюжка. Вона доводить, що за даного пакета перехід відповідає правилам. А те, що пакет — це справжній, повний і правильно впорядкований потік команд, встановлюється відтворенням, див. Довіра та приватність.

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

Публічні вихідні дані

Кожен доказ фіксує 3 значення, назавжди з ним пов'язані:

ВихідОпис
old_rootКорінь дерева Меркла до цієї реєстрації
new_rootКорінь дерева Меркла після цієї реєстрації
end_block_heightОстанній блок PIVX у пакеті реєстрацій

end_block_height прив'язує доказ до конкретного блоку PIVX, як контрольна точка. Будь-хто може просканувати ланцюжок до цієї висоти з опублікованим ключем перегляду і переконатися, що memo й суми збігаються з тим, що стверджував пакет.