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

Почему доказательства?

Индексатор сканирует блокчейн ZCash и создает реестр имен. Но почему кто-то должен этому доверять? Что, если это:

  • Фальсифицирует регистрацию, которой никогда не было в сети?
  • Взимает неправильную плату?
  • Регистрирует имя дважды?
  • Вмешивается состояние реестра?

Доказательства ЗК снимают эти вопросы. Каждое доказательство представляет собой криптографический сертификат о том, что регистрация прошла правильно. Любой желающий может проверить это доказательство самостоятельно.

Что подтверждает каждое доказательство

ZCash Prover использует SP1 — виртуальную машину RISC-V с нулевым разглашением. Для каждой транзакции с доменом проверяющий выполняет следующие проверки внутри zkVM:

  1. Действительность имени – 1–64 символа, строчные буквы и цифры + дефисы.
  2. Достаточность комиссии — за транзакцию было выплачено достаточно ZEC для Длина имени.
  3. Целостность команды протокола – все условия протокола соблюдены.
  4. Подпись Ed25519 — подпись над memo command действительна.
  5. Вставка дерева Меркла – имя еще не существовало, и новый корень состояния правильный.

Если какая-либо проверка не удалась, доказательство не может быть создано.

Публичные выходы

Каждое доказательство фиксирует 3 значения, которые навсегда с ним связаны:

ВыходОписание
old_rootКорень дерева Меркла до этой регистрации
new_rootКорень дерева Меркла после этой регистрации
end_block_heightПоследний блок ZCash регистрационного пакета

block_height закрепляет доказательство за конкретным блоком ZCash (например, контрольной точкой). Любой может найти транзакции на узле ZCash и подтвердить совпадение примечаний и значений.