SummerCrypto: доказательство в смарт-контракте без раскрытия секрета
Совместная публикация о zk-SNARK, ZoKrates и Solidity: как доказать принадлежность данных дереву Меркла и что именно остаётся открытым.
На SummerCrypto 2025 участвовал в совместной работе «Протокол доказательства с нулевым разглашением в смарт-контрактах». Она опубликована в сборнике летней школы-конференции «Криптография и информационная безопасность» на страницах 250–258. В списке восьми соавторов указан как Г. М. Зайцев, СПбГУАП.
Школа и командная работа
Школа проходила 7–21 июля 2025 года в Петербурге, в Точке кипения ГУАП. В этом году организаторы из Новосибирска проводили её в сотрудничестве с ГУАП. Программа сочетала лекции, обсуждения и работу над исследовательскими проектами.


Задача исследования
В открытом блокчейне входные данные и результат транзакции доступны участникам сети. Если обычный контракт получает секрет вместе с доказательством права на действие, сам секрет уже становится частью открытого обмена.
Исследовали другой путь: подтвердить знание данных, принадлежащих дереву Меркла, с помощью zk-SNARK. Доказывающая сторона знает приватные данные и путь проверки, а смарт-контракт получает доказательство и согласованные публичные входы.
Важна точная граница приватности: публичный корень, хеш листа и результат проверки остаются видимыми. Нулевое разглашение относится к скрытому свидетелю доказательства, а не превращает весь блокчейн или любую транзакцию в закрытую систему.
Как устроена схема
Для подготовки схемы и генерации доказательств использовали ZoKrates, для проверяющего контракта — Solidity на Ethereum. Генерация происходит вне блокчейна, а контракт проверяет переданное доказательство.

| Этап | Что происходит |
|---|---|
| Подготовка | Схема фиксирует утверждение, которое нужно доказать |
| Настройка | Создаются ключ генерации и ключ проверки |
| Генерация | ZoKrates использует приватные данные и путь Меркла для получения доказательства |
| Проверка | Solidity-контракт сопоставляет доказательство с публичными входами |
| Результат | Проверка возвращает, прошло ли доказательство |
Так вычисление, требующее знания секрета, остаётся у доказывающей стороны. На сторону проверяющего переносится проверка соответствия утверждению.
Почему дерево Меркла
Дерево связывает листья с одним корнем через последовательность хешей. Для обычной проверки принадлежности нужен лист и путь соседних значений. В исследуемой схеме вычисление такого пути входит в доказательство: проверяющий убеждается в соответствии известному корню, не получая сам приватный путь.

Идея полезна для сценариев, где нужно подтвердить допустимость действия или принадлежность известному множеству. Конкретные свойства такой системы зависят от того, какие значения схема объявляет публичными и какое утверждение она действительно проверяет.
Моя роль и результат
Участвовал как соавтор учебного исследования. Реализация и опубликованное описание — общий результат команды из восьми человек под руководством куратора Дмитрия Кондырева из НГУ.
Результат работы — реализация протокола и совместная публикация.

Ограничения
Для используемого подхода важна доверенная первоначальная настройка: безопасность зависит и от обращения с её секретными параметрами. В статье также рассмотрены стоимость генерации доказательства и проверки в контракте, а развитие схемы связывается с изменяющимися деревьями и дальнейшей оптимизацией.
Мой главный вывод из работы — приватность нужно описывать через конкретные входы и проверяемое утверждение. Само слово ZKP не говорит, какие данные система скрывает, от кого и при каких предположениях.
Совместная статья в официальном сборнике SummerCrypto 2025, печатные страницы 250–258.
