Вы можете доказать, что вам больше 18 лет, не раскрывая дату рождения. Вы можете доказать, что у вас достаточно денег для транзакции, не раскрывая свой баланс. Вы можете доказать, что вычисление было выполнено правильно, не раскрывая входные данные. Доказательства с нулевым разглашением делают все это возможным, и они тихо становятся самым важным криптографическим примитивом в блокчейне со времен хеш-функции.
Резюме
Большинство введений в доказательства с нулевым разглашением начинаются с аналогии с пещерой Али-Бабы, где кто-то доказывает, что знает секретное слово для открытия двери, последовательно выходя с той стороны, которую запрашивает проверяющий, не раскрывая самого слова. Аналогия очаровательна и совершенно бесполезна для понимания того, почему ZK-доказательства важны на практике. Она говорит вам, что такое доказательство возможно. Она не говорит вам, зачем кому-то оно может понадобиться в блокчейне.
Практическая отправная точка проще. Каждый блокчейн сталкивается с одним и тем же противоречием: прозрачность обеспечивает доверие, но прозрачность также уничтожает конфиденциальность. Реестр Биткоина публичен. Каждая транзакция, каждый баланс, каждый адрес видны всем. Эфириум такой же. Эта прозрачность делает систему проверяемой и заслуживающей доверия, но она также означает, что любой, кто узнает, какой адрес принадлежит вам, может видеть каждую транзакцию, которую вы когда-либо совершали, каждый токен, которым вы владеете, и каждый протокол, с которым вы взаимодействовали.
Доказательства с нулевым разглашением разрешают это противоречие. Они позволяют вам доказывать факты о ваших данных, не раскрывая сами данные. Вы можете доказать, что ваш баланс превышает порог, не раскрывая точный баланс. Вы можете доказать, что транзакция действительна, не раскрывая отправителя, получателя или сумму. Вы можете доказать, что вас нет в санкционном списке, не раскрывая свою личность.
Математика, стоящая за этим, глубока. Применения немедленны.
Три свойства, которыми должно обладать каждое ZK-доказательство
Каждая система доказательств с нулевым разглашением должна удовлетворять трем свойствам, и их понимание необходимо для оценки любого протокола на основе ZK.
Полнота. Если утверждение истинно и и доказывающий, и проверяющий следуют протоколу, проверяющий всегда будет убежден. Действительное доказательство никогда не проваливает проверку. Если вы действительно знаете секрет, доказательство всегда сработает.
Корректность. Если утверждение ложно, никакой мошенничающий доказывающий не сможет убедить проверяющего в его истинности, за исключением пренебрежимо малой вероятности. Недобросовестный доказывающий не может сфабриковать действительное доказательство. Вероятность того, что ложное доказательство пройдет проверку, настолько мала (обычно менее одного на 2^128), что это практически невозможно.
Нулевое разглашение. Проверяющий узнает только то, что утверждение истинно. Доказательство не раскрывает никакой информации о самом секрете, о любых промежуточных вычислениях или о любых данных, использованных для генерации доказательства. Знания проверяющего после просмотра доказательства идентичны тому, что было бы, если бы кто-то просто сказал ему, что утверждение истинно.
Третье свойство делает ZK-доказательства полезными, а не просто корректными. Стандартные цифровые подписи доказывают, что сообщение было подписано конкретным ключом, но они раскрывают содержимое сообщения. Стандартные хеш-обязательства доказывают, что значение было зафиксировано, но они раскрывают значение при открытии. ZK-доказательства доказывают, что между секретными значениями существует связь, не раскрывая эти значения ни в какой момент.
Чем zk-SNARKs и zk-STARKs отличаются
Две доминирующие системы ZK-доказательств в блокчейне — это zk-SNARKs и zk-STARKs. Они решают одну и ту же проблему с разными компромиссами.
zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge) создают небольшие доказательства, которые быстро проверяются. Типичное zk-SNARK доказательство составляет около 200-300 байт и может быть проверено в цепочке примерно за 200 000-300 000 газа в Эфириуме. Время проверки постоянно независимо от сложности вычисления, которое доказывается. Доказательство, проверяющее одну транзакцию, занимает столько же времени, сколько и доказательство, проверяющее десять тысяч транзакций.
Цена этой краткости — доверенная настройка. Большинство систем zk-SNARK требуют разовой церемонии, на которой генерируются случайные параметры, а случайность после этого уничтожается. Если случайность с этой церемонии не будет должным образом уничтожена, злоумышленник сможет подделать доказательства. Zcash провел одну из самых сложных церемоний доверенной настройки в истории криптографии (церемония «Powers of Tau») с участием сотен участников по всему миру, где предположение безопасности заключается в том, что по крайней мере один участник честно уничтожил свою случайность.
Более новые SNARK-системы, такие как PLONK и Halo 2, уменьшили или устранили требование доверенной настройки, но восприятие сохраняется. Некоторые проекты избегают SNARK именно из-за проблемы доверенной настройки, даже когда используемые ими реализации не требуют её.
zk-STARK (Zero-Knowledge Scalable Transparent Arguments of Knowledge) полностью устраняют доверенную настройку. Они основаны на хеш-функциях, а не на предположениях об эллиптических кривых, что делает их прозрачными (без секретных параметров) и теоретически устойчивыми к квантовым вычислениям (криптография на основе хешей считается безопасной против квантовых компьютеров, в отличие от криптографии на эллиптических кривых).
Компромисс — в размере. Доказательства STARK значительно больше, чем доказательства SNARK, обычно от десятков до сотен килобайт по сравнению с сотнями байт. В блокчейне, где хранение данных стоит газа, большие доказательства означают более высокие затраты на проверку. StarkWare, основной разработчик технологии STARK, решает эту проблему с помощью рекурсивной композиции доказательств: доказательство того, что доказательство действительно, затем доказательство того, что доказательство доказательства действительно, сжимая конечный след в цепочке.
На практике различие имеет меньшее значение, чем пять лет назад. Современные системы доказательств всё чаще сочетают методы из обеих семейств, и инженерный фокус сместился с выбора системы доказательств на то, как быстро доказывающий может генерировать доказательства и насколько дёшево проверяющий может их проверить.
ZK-доказательства для масштабирования блокчейна
Применение ZK-доказательств для масштабирования концептуально просто. Роллап выполняет пакет транзакций вне цепочки, генерирует доказательство того, что пакет был выполнен корректно, и публикует доказательство в Ethereum. Контракт-верификатор Ethereum проверяет доказательство за одну операцию и принимает новое состояние.
Что делает это мощным, так это асимметрия между доказательством и проверкой. Генерация доказательства для пакета из 10 000 транзакций может занять у мощной машины несколько минут. Проверка доказательства занимает долю секунды и стоит фиксированное количество газа независимо от количества транзакций в пакете. Эта асимметрия позволяет ZK-роллапам сжимать тысячи транзакций в одну проверку в Ethereum.
Основные ZK-роллапы по-разному подходят к этой архитектуре.
zkSync Era использует собственную виртуальную машину (zkEVM), совместимую с Solidity на уровне языка, но компилируемую в другой набор инструкций, оптимизированный для генерации ZK-доказательств. Существующие контракты Ethereum могут быть перекомпилированы для zkSync с минимальными изменениями.
StarkNet использует язык программирования Cairo и доказательства STARK. Cairo — это специально созданный язык, предназначенный для доказуемых вычислений, что даёт преимущества в производительности, но требует от разработчиков изучения нового языка и парадигмы.
Polygon zkEVM стремится к эквивалентности EVM, то есть может выполнять тот же байт-код, что и Ethereum, без перекомпиляции. Это максимизирует совместимость, но вносит инженерную сложность в обеспечение доказуемости каждой операции EVM.
Scroll также нацелен на полную эквивалентность EVM и использует подход, управляемый сообществом, к своей реализации zkEVM, с целью быть наиболее совместимым с Ethereum ZK-роллапом.
Конкуренция между этими подходами в конечном счёте является конкуренцией между совместимостью и производительностью. Чем более совместим ZK-роллап с существующими инструментами Ethereum, тем легче разработчикам мигрировать. Чем больше роллап оптимизирует свой набор инструкций для доказуемости, тем быстрее и дешевле становятся его доказательства.
ZK-доказательства для конфиденциальности
Применение для конфиденциальности — это область, где ZK-доказательства становятся наиболее значимыми и наиболее спорными.
Стандартная транзакция Ethereum раскрывает адрес отправителя, адрес получателя, переведённую сумму и вызванный смарт-контракт. Эта информация является постоянно публичной. Фирмы по анализу цепочек, такие как Chainalysis и Elliptic, построили целый бизнес на отслеживании потоков транзакций в прозрачном реестре, связывая адреса с реальными личностями через данные KYC бирж, известные метки сущностей и поведенческие паттерны.
ZK-протоколы конфиденциальности разрывают эту цепочку видимости. В частной транзакции на основе ZK пользователь генерирует доказательство того, что его транзакция действительна (у отправителя достаточно средств, нет двойного расходования, суммы сбалансированы), не раскрывая, кто отправил, кто получил или сколько было переведено. Доказательство публикуется в цепочке и проверяется сетью, но детали базовой транзакции остаются зашифрованными.
Zcash был первой крупной реализацией этой концепции, запущенной в 2016 году с защищёнными транзакциями, использующими zk-SNARKs. Пользователь Zcash может выбирать между прозрачными транзакциями (идентичными публичному реестру Биткоина) и защищёнными транзакциями (где отправитель, получатель и сумма скрыты за ZK-доказательством). На практике принятие защищённых транзакций в Zcash было ниже, чем надеялись сторонники, и большинство транзакций Zcash по-прежнему используют прозрачный пул.
Новые протоколы строят программируемую конфиденциальность, где не только переводы токенов, но и произвольная логика смарт-контрактов может выполняться приватно. Aztec Network строит ориентированный на конфиденциальность второй уровень на Ethereum, где все транзакции приватны по умолчанию. Aleo строит блокчейн первого уровня с нативной поддержкой ZK для приватных смарт-контрактов. Оба используют ZK-доказательства для проверки переходов состояний без раскрытия вычислений или данных.
Потенциал конфиденциальности выходит за рамки отдельных транзакций. ZK-доказательства могут обеспечить приватное голосование (доказать, что вы проголосовали, не раскрывая свой выбор), приватную проверку личности (доказать, что вы гражданин определённой страны, не раскрывая номер паспорта) и приватные DeFi (предоставить ликвидность пулу, не раскрывая свой адрес или размер позиции).
Столкновение с регулированием
Конфиденциальность в криптовалютах занимает спорное правовое пространство, которое всё ещё определяется.
В августе 2022 года Управление по контролю за иностранными активами (OFAC) Министерства финансов США ввело санкции против Tornado Cash, микшера на основе Ethereum, который использовал ZK-доказательства для разрыва связи между адресами депозита и вывода. Санкции против открытого кода смарт-контракта, а не против человека или компании, были беспрецедентными и вызвали шок в сообществе криптоконфиденциальности.
В мае 2024 года Алексей Перцев, один из разработчиков Tornado Cash, был признан голландским судом виновным в содействии отмыванию денег. Этот приговор установил юридический прецедент, согласно которому написание кода, сохраняющего конфиденциальность, может повлечь уголовную ответственность, если инструмент используется в незаконных целях, независимо от того, способствовал ли разработчик лично незаконной деятельности.
Эти действия определили направление развития ZK-конфиденциальности. Нынешнее поколение протоколов конфиденциальности строится с учётом регуляторных ограничений, а не игнорируя их.
Избирательное раскрытие позволяет пользователю доказывать конкретные факты о своей личности или истории транзакций, не раскрывая всё. Пользователь может доказать, что он прошёл KYC в лицензированной бирже, доказать, что он не находится в санкционном списке OFAC, или доказать, что его средства не поступили с санкционированного адреса, всё это с использованием ZK-доказательств, которые раскрывают только конкретное проверяемое утверждение.
Приватные пулы, концепция, формализованная Виталиком Бутериным и другими, позволяют пользователям доказывать, что их вывод из приватного набора принадлежит чистой подгруппе депозитов. Вместо того чтобы смешивать все депозиты без разбора, протокол поддерживает наборы ассоциаций, которые исключают известные незаконные адреса. Пользователи доказывают членство в чистом наборе, не раскрывая, какой конкретный депозит они выводят.
Увидим ли мы, удовлетворят ли эти компромиссы регуляторов, покажет время. Фундаментальное противоречие между конфиденциальностью и наблюдением, которые архитектурно несовместимы, не будет решено только технологиями. ZK-доказательства дают политикам инструмент, которого у них никогда не было: возможность проверять соблюдение требований без необходимости раскрытия информации. Используют ли они его, это политический вопрос, а не криптографический.
Стоимость доказательства имеет конкретные последствия для того, какие приложения первыми внедряют технологию ZK. Финансовые транзакции с высокой стоимостью, где стоимость генерации доказательства ничтожна по сравнению с размером транзакции, были самыми ранними последователями. Институциональные межцепочечные переводы, крупные позиции DeFi и корпоративные расчётные системы могут поглощать стоимость доказательства в несколько долларов за транзакцию без ущерба для своей экономики. Потребительские приложения, где отдельные транзакции могут стоить всего несколько долларов, нуждаются в снижении стоимости доказательства ещё на порядок, прежде чем ZK-конфиденциальность станет практичной для повседневного использования. Усилия по аппаратному ускорению компаний, создающих специализированные ASIC для ZK, направлены непосредственно на преодоление этого барьера стоимости.
Конвергенция масштабирования и приложений конфиденциальности, возможно, является наиболее недооценённым аспектом технологии ZK. ZK-роллап, который обрабатывает транзакции приватно, сочетал бы преимущества пропускной способности выполнения вне цепочки с преимуществами конфиденциальности зашифрованных переходов состояний. Пользователи получали бы быстрые, дешёвые транзакции, которые также невидимы для анализа цепочек. Несколько проектов, включая Aztec и Polygon Miden, строят именно такую комбинацию, хотя инженерная сложность объединения обеих функций в производственную систему остаётся значительной.
Что это не охватывает
Эта статья не охватывает математику полиномиальных обязательств, спариваний на эллиптических кривых или преобразований Фиата-Шамира, которые лежат в основе систем доказательств с нулевым разглашением. Понимание этого требует абстрактной алгебры уровня аспирантуры и не обязательно для оценки протоколов на основе ZK в качестве пользователя или инвестора.
Эта статья не охватывает ZK-машинное обучение (zkML), новую область, которая использует доказательства с нулевым разглашением для проверки того, что модель машинного обучения выдала конкретный результат, не раскрывая весов модели или обучающих данных. Это применение является экспериментальным, и его практические последствия все еще изучаются.
Эта статья не рассматривает гонку аппаратного ускорения для генерации ZK-доказательств. Такие компании, как Cysic, Ingonyama и Fabric Cryptography, создают специализированные ASIC и FPGA специально для ZK-доказательств, что может снизить стоимость доказательств на порядки. Аппаратный ландшафт меняется слишком быстро для статического анализа.
Практические проверки перед использованием протокола на основе ZK
Проверьте статус аудита системы доказательств. Системы доказательств с нулевым разглашением математически сложны, и ошибки реализации могут быть катастрофическими. Ошибка в схеме (математическом представлении вычисления, которое доказывается) может позволить злоумышленнику подделать доказательства и выпустить токены или украсть средства. Проверьте, были ли система доказательств и ее схемы проверены фирмами, специализирующимися на ZK-криптографии, а не только общими аудиторами смарт-контрактов.
Поймите, что на самом деле является приватным. Не все протоколы на основе ZK обеспечивают одинаковый уровень конфиденциальности. Некоторые скрывают суммы транзакций, но раскрывают адреса. Некоторые скрывают адреса, но раскрывают суммы. Некоторые скрывают все. Прочитайте документацию протокола, чтобы точно понять, какая информация скрыта, а какая остается видимой. Метаданные, такие как время транзакций, паттерны газа и частота взаимодействий, часто могут деанонимизировать пользователей, даже когда основные данные транзакций скрыты.
Проверьте статус доверенной настройки. Если протокол использует zk-SNARK, определите, требовалась ли доверенная настройка и как она проводилась. Церемонии с многосторонними вычислениями с участием сотен участников более надежны, чем небольшие церемонии с несколькими известными сущностями. Протоколы, использующие STARK, PLONK с универсальной настройкой или Halo 2, вообще не требуют доверенной настройки.
Оцените регуляторный риск. Протоколы конфиденциальности работают в юридически неопределенной среде. Рассмотрите, есть ли у протокола механизм соответствия (избирательное раскрытие, пулы конфиденциальности, доказательства соответствия по выбору) и был ли этот механизм проверен на реальное регуляторное внимание. Использование протокола конфиденциальности, который позже попадет под санкции, может осложнить вашу возможность перемещать или продавать активы.
Проверьте время доказательства. Генерация ZK-доказательства требует больших вычислительных затрат. На мобильном устройстве доказательство простой транзакции может занять от 30 секунд до двух минут. На настольном компьютере это может занять несколько секунд. Если время доказательства слишком велико для вашего варианта использования, протокол может оказаться непрактичным для частых транзакций. Некоторые протоколы перекладывают доказательство на выделенные серверы, что быстрее, но вводит предположение о доверии, что сервер не узнает ваши личные данные.
Что такое доказательство с нулевым разглашением простыми словами?
Доказательство с нулевым разглашением — это способ доказать, что что-то истинно, не раскрывая, почему это истинно. В блокчейне это означает, что вы можете доказать, что транзакция действительна, что у вас достаточно средств или что вычисление было выполнено правильно, не раскрывая при этом фактические детали транзакции, ваш баланс или данные, использованные в вычислении. Проверяющий убеждается, что утверждение истинно, но не узнает ничего другого.
В чем разница между zk-SNARKs и zk-STARKs?
zk-SNARKs создают очень маленькие доказательства (сотни байт), которые дешево проверять, но исторически требовали доверенной настройки для генерации начальных параметров системы. zk-STARKs создают большие доказательства (от десятков до сотен килобайт), но не требуют доверенной настройки и теоретически устойчивы к атакам квантовых компьютеров. На практике современные системы доказательств сближаются, и компромиссы между размером, скоростью и предположениями о доверии становятся менее резкими.
Как ZK-доказательства помогают масштабированию блокчейна?
ZK-роллапы выполняют тысячи транзакций вне сети и генерируют одно доказательство того, что все транзакции были выполнены правильно. Это доказательство проверяется в Ethereum одной операцией, которая стоит фиксированное количество газа независимо от того, сколько транзакций было в пакете. Асимметрия между стоимостью генерации доказательства (высокая, но ее несет оператор роллапа) и его проверки (низкая и оплачивается один раз за весь пакет) создает эффект масштабирования.
Являются ли конфиденциальные монеты на основе ZK незаконными?
Конфиденциальные монеты на основе ZK, такие как Zcash, не являются по своей сути незаконными в большинстве юрисдикций. Однако подходы регулирования значительно различаются. Некоторые биржи исключили конфиденциальные монеты из листинга, чтобы соблюсти правила по борьбе с отмыванием денег. Санкции против Tornado Cash в 2022 году показали, что протоколы, сохраняющие конфиденциальность, могут столкнуться с регуляторными действиями. Законность зависит от вашей юрисдикции и того, как вы используете технологию, а не от самой технологии.
Что такое доверенная настройка и почему она важна?
Доверенная настройка — это разовая церемония, требуемая некоторыми системами zk-SNARK для генерации криптографических параметров. Во время церемонии создаются случайные значения, которые после этого должны быть уничтожены. Если любой участник сохранит случайные значения, он теоретически сможет подделать доказательства. Многосторонние церемонии снижают этот риск, требуя, чтобы только один участник из потенциально сотен честно уничтожил свою случайность. Новые системы доказательств, такие как PLONK и Halo 2, устранили или минимизировали требование доверенной настройки.
Могут ли ZK-доказательства сделать все транзакции блокчейна конфиденциальными?
Технически да. Протоколы, такие как Aztec Network и Aleo, строят системы, в которых все взаимодействия со смарт-контрактами конфиденциальны по умолчанию, а не только переводы токенов. Однако полная конфиденциальность всех транзакций создает регуляторные проблемы, увеличивает вычислительные затраты (генерация ZK-доказательств дорога) и меняет пользовательский опыт (доказательство занимает время). Станет ли полная конфиденциальность в сети стандартом, зависит как от регуляторных решений, так и от технических возможностей.
Как работают пулы конфиденциальности?
Пулы конфиденциальности позволяют пользователям вносить средства в общий пул и снимать их с другого адреса, разрывая связь между двумя адресами в цепочке. В отличие от простых миксеров, пулы конфиденциальности используют ZK-доказательства в сочетании с наборами ассоциаций, чтобы позволить пользователям доказать, что их вывод принадлежит подмножеству депозитов, исключающему известные незаконные адреса. Это дает пользователям конфиденциальность, обеспечивая при этом механизм соответствия требованиям. Пользователь доказывает, что он находится в чистом наборе, не раскрывая, какой конкретный депозит он выводит.
Каковы основные риски использования протоколов на основе ZK?
Основные риски включают ошибки реализации в ZK-схемах (которые могут позволить подделать доказательства), уязвимости доверенной настройки в старых системах SNARK, регуляторные действия против функций конфиденциальности, высокие вычислительные требования для генерации доказательств на потребительском оборудовании и относительную незрелость ZK-инструментов по сравнению со стандартной разработкой смарт-контрактов. Кроме того, утечка метаданных (время транзакций, структура газа, частота взаимодействий) иногда может деанонимизировать пользователей, даже когда основные данные транзакции конфиденциальны.














