Перейти к основному содержимому

Гарантии безопасности

Эта страница точно описывает, что PiNS гарантирует, а что — нет. Точность здесь полезнее успокоительных формулировок: сильные стороны действительно сильны, а понимание границ — это как раз то, что позволяет на них полагаться.

Свойство системы: нарушения очевидны

PiNS обладает свойством очевидности нарушений (fraud-evident). Любое нарушение правил либо в принципе невозможно доказать, либо публично видно каждому, кто посмотрит, — а данные, нужные чтобы посмотреть, опубликованы, так что для этого не требуется ни разрешения, ни содействия оператора.

Стоит понимать разницу между двумя половинами системы. Владение и переходы состояния обеспечиваются криптографией и просто не могут быть нарушены. Всё остальное устанавливается независимым воспроизведением, где отклонение опровергается сразу всеми репликами. Оба механизма сильны — но сильны по-разному, и эта страница прямо говорит, где действует какой.

Что невозможно в принципе

Это обеспечивается математикой. Никакие действия оператора этого не обойдут.

  • Домен нельзя отобрать у владельца. Любое изменение состояния требует подписи Ed25519 тем ключом, которого требует операция, и проверяется внутри схемы строгой верификацией. Регистратор не хранит ваш ключ и не может его подделать.
  • Имя нельзя зарегистрировать дважды. REG требует доказательства отсутствия, а уже существующее имя такого доказательства дать не может.
  • Продажа невозможна по цене, которую продавец не подписывал. BUY требует, чтобы уплаченная цена равнялась выставленной, а та зафиксирована в дереве подписанной продавцом командой LST.
  • Корень состояния нельзя закрепить без корректного доказательства. Якорный контракт в BNB Smart Chain проверяет каждое доказательство относительно programVkey, прежде чем принять корень. Некорректный переход просто невозможно доказать.
  • Схему нельзя подменить незаметно. programVkey фиксирует конкретную скомпилированную программу. Изменение одной строки меняет ключ, а смена ключа в блокчейне — двустороннее действие, требующее участия и секвенсора, и владельца.

Что проверяется наблюдением, а не схемой

Некоторые свойства не обеспечиваются внутри доказательства, а устанавливаются любым, кто воспроизведёт публичные данные. Это другой механизм, но не более слабый результат: такие свойства может проверить любой наблюдатель без всякого разрешения, и отклонение видно сразу всем, а не избранным.

  • Включение команд и их порядок. Пакеты собирает регистратор, значит, именно он расставляет команды по порядку. Но поскольку протокольный адрес и ключ просмотра опубликованы, каждый независимый индексатор выводит тот же порядок из самой цепочки и вычисляет тот же корень. Пропущенная или переставленная команда даёт корень, который опровергается всеми репликами — сразу и без того, чтобы кто-то специально его искал.
  • Значение end_block_height, которое сообщает пакет. Оно передаётся в публичные выходные данные, а не ограничивается внутри схемы, потому что воспроизведение уже его устанавливает: индексатор, проигрывающий цепочку, знает, какой блок покрывал пакет, так что неверная высота выявляется так же, как любое другое отклонение.
  • Адреса назначения при выводе средств. Суммы выплат, комиссии и обязательства полностью проверяемы по опубликованному ключу просмотра: каждая выплата снабжена memo с указанием аккаунта, по которому она проводится, так что реестр балансов может восстановить кто угодно. Чего нет в публичной записи, так это адреса назначения, который указал пользователь, — этот запрос делается на сайте. Эту часть подтверждает сам получатель, у которого остаётся подписанный им запрос. См. Доверие и приватность.

Почему настоящая гарантия — это воспроизведение

ZK-доказательство отвечает на вопрос: при этих входных данных — были ли соблюдены правила?

Воспроизведение отвечает на вопрос: а были ли это настоящие входные данные?

На практике важнее второй вопрос, и криптография на него не отвечает — на него отвечает то, что регистратор публикует свой протокольный адрес и ключ просмотра к нему. Благодаря этому любой может расшифровать всю историю команд с самого начала, воспроизвести её через индексатор с открытым исходным кодом и сравнить корни. Регистратор, который отклонится от правил, получит корень, опровергаемый каждой независимой репликой.

Именно поэтому публичность ключа просмотра — не деталь. Это и есть механизм.

Суверенный rollup, если говорить точно

Структурно PiNS — это ZK-rollup:

  • Доступность данных — каждая команда живёт в поле memo транзакции PIVX, а платёж находится в той же экранированной ноте, так что намерение и оплата связаны неразрывно.
  • Исполнение — вне блокчейна, в SP1 zkVM.
  • Расчёты — BNB Smart Chain хранит закреплённый корень и проверяет доказательства за секунды.

От типичного rollup это отличается тем, что слоем доступности данных служит приватная цепочка, поэтому фраза «входные данные может прочитать любой» требует публикации ключа просмотра — что и сделано.

Как проверить это самостоятельно

Ничто из сказанного выше не нужно принимать на веру:

  • Воспроизведите programVkey, скомпилировав генератор доказательств и сравнив результат с контрактом.
  • Проиграйте цепочку с опубликованным ключом просмотра через собственный индексатор и сравните корни.
  • Проверьте любое отдельное разрешение имени доказательством Меркла плюс сверкой корня в блокчейне — см. Проверка доказательств.