Блокчейн
ZK-приложения: privacy, identity, ML
В 2022 году Министерство финансов США впервые в истории наложило санкции на smart-контракт - Tornado Cash, протокол приватных транзакций на Ethereum. Разработчик Алексей Перцев оказался в тюрьме. При этом Worldcoin спокойно сканирует радужные оболочки миллионов людей, чтобы выдать им ZK-proof «я уникальный человек» - и ни один регулятор не возражает. Технология та же - Zero-Knowledge Proofs. Разница - в том, что именно доказывается и что скрывается. ZK вышел далеко за пределы rollups: децентрализованная идентификация, verifiable ML, приватные транзакции нового поколения, off-chain вычисления с on-chain гарантиями. Эти приложения определят, как будет выглядеть Web3 следующего десятилетия.
- **WorldID** (Worldcoin) - более 5 миллионов человек прошли сканирование Orb, получив ZK-proof уникальной личности без привязки к имени, паспорту или аккаунту
- **Aztec Network** - L2 с приватностью по умолчанию: DeFi-операции (swap, lend, borrow) выполняются с зашифрованными суммами, защищая пользователей от MEV и слежки
- **Axiom** - ZK-coprocessor, позволяющий smart-контрактам работать с исторически данными Ethereum (сотни тысяч блоков назад), что принципиально невозможно в обычном EVM
Предварительные знания
ZK-identity: докажи кто ты, не раскрывая себя
Каждый раз, когда ты логинишься на сайте, голосуешь в DAO или проходишь KYC - ты отдаёшь больше данных, чем нужно. Сайту достаточно знать «этот пользователь старше 18», но ты показываешь паспорт целиком. DAO нужно знать «этот адрес имеет право голоса», но ты раскрываешь свой кошелёк и всю историю транзакций. **ZK-identity** решает эту проблему: ты доказываешь факт о себе, не раскрывая личность.
**Semaphore** - протокол анонимных сигналов, разработанный при поддержке Ethereum Foundation. Пользователь генерирует identity commitment (хеш секретного ключа) и добавляет его в Merkle-дерево группы. Когда нужно подать сигнал - например, проголосовать - пользователь создаёт ZK-proof: «я член этой группы, и я ещё не голосовал по этому вопросу». Proof раскрывает **ноль** информации о том, *кто именно* голосует, но гарантирует: это член группы, и он голосует ровно один раз.
**WorldID** (проект Worldcoin) решает другую задачу - **proof of unique human**. Сканер Orb создаёт хеш радужной оболочки глаза (iris code), и из него генерируется identity commitment. ZK-proof доказывает: «я уникальный человек, зарегистрированный в системе, и я ещё не получал этот airdrop / не голосовал». При этом proof **не содержит** биометрических данных, не привязан к имени, и невозможно связать два действия одного пользователя между собой.
**zkPassport** работает с реальными паспортами уже сейчас. Современные биометрические паспорта содержат NFC-чип с данными, подписанными ключом правительства. ZK-circuit читает данные с чипа, проверяет подпись правительства и доказывает нужный факт (возраст, гражданство, валидность) - не раскрывая остальные поля. Всё, что нужно Verifier - публичный ключ правительства, который и так общедоступен.
Пользователь Semaphore дважды пытается проголосовать в одном и том же DAO-голосовании. Что произойдёт и почему?
zkML: доказательство inference без раскрытия модели
Представь: протокол DeFi использует ML-модель для оценки кредитного риска. Пользователь подаёт заявку и получает отказ. Как убедиться, что модель вообще была запущена, что использовалась правильная версия, и что результат не подделан? Сейчас - никак: приходится доверять оператору. **zkML** решает это: ZK-proof доказывает, что конкретная ML-модель была корректно применена к конкретным входным данным, без раскрытия самой модели или данных.
**EZKL** - ведущий фреймворк для zkML. Он конвертирует модели из формата ONNX (стандартный экспорт из PyTorch, TensorFlow) в ZK-circuit на основе Halo2 (система доказательств от Zcash/Electric Coin Co). Процесс: экспортируешь модель в ONNX → EZKL генерирует circuit → создаёшь proof → любой может верифицировать on-chain. Каждая операция нейронной сети (умножение матриц, ReLU, batch normalization) транслируется в арифметические constraints.
**Use cases** zkML уже реальны, хотя и ограничены размером моделей. **On-chain AI**: DeFi-протокол публикует commitment к модели оценки рисков, и каждое решение сопровождается proof корректного inference. **Verifiable inference**: пользователь может проверить, что AI-сервис действительно использовал заявленную модель, а не подменил результат. **Model marketplace**: автор продаёт inference модели без раскрытия весов - покупатель получает результат и proof, но не может скопировать модель.
**Текущие ограничения zkML** существенны: доказательство inference даже для небольшой CNN занимает минуты и гигабайты RAM. Операции с плавающей запятой (float) приходится квантизировать в fixed-point арифметику, что снижает точность. Модели уровня GPT-4 или Stable Diffusion пока абсолютно непрактичны для ZK. Но прогресс стремительный: в 2023 proof для MNIST-классификатора занимал 10 минут, в 2025 - секунды. Направление развития - специализированные ZK-friendly архитектуры нейросетей.
DeFi-протокол использует zkML для кредитного скоринга. Что proof гарантирует пользователю, получившему отказ?
Приватные транзакции: от Tornado Cash до Privacy Pools
Блокчейн по умолчанию - **прозрачный**. Каждая транзакция Ethereum видна всему миру: отправитель, получатель, сумма, время. Это как если бы твоя банковская выписка была публичной. ZK-proofs позволяют создать транзакции, которые **верифицируемы, но не читаемы**: proof доказывает, что перевод валиден (достаточно средств, нет двойной траты), не раскрывая ни одной детали.
**Tornado Cash** - самый известный mixer на Ethereum. Принцип: пользователь вносит фиксированную сумму (0.1 / 1 / 10 / 100 ETH) в пул, получая secret note. Позже, с другого адреса, предъявляет ZK-proof: «я знаю secret, соответствующий одному из депозитов в дереве, и этот secret ещё не использовался». Контракт выдаёт средства, не зная, **какому** депозиту они соответствуют. В августе 2022 года OFAC (Министерство финансов США) внесло Tornado Cash в санкционный список - первый случай санкций против smart-контракта. Разработчик Алексей Перцев был арестован в Нидерландах.
**Aztec** выносит приватные транзакции на уровень L2. Aztec Network - это ZK-rollup, где **все транзакции по умолчанию приватны**. DeFi-операции (swap, lend, borrow) выполняются с зашифрованными суммами и скрытыми адресами. **Penumbra** - приватный DEX на Cosmos, где каждый swap скрыт: невозможно увидеть, кто обменял что и на какую сумму. Это позволяет избежать MEV (Maximal Extractable Value) - фронтраннеры не могут эксплуатировать транзакцию, которую не видят.
**Регуляторная реальность приватных транзакций** - сложная и противоречивая. OFAC санкционировал Tornado Cash в 2022, но в 2023 году апелляционный суд США постановил, что неизменяемый smart-контракт не может быть объектом санкций (имущество, которым никто не владеет). Параллельно Zcash получил лицензию на использование в регулируемых биржах. Privacy Pools - попытка найти баланс: приватность для пользователя + инструменты compliance для регуляторов, без backdoor в криптографии.
Чем Privacy Pools принципиально отличаются от Tornado Cash с точки зрения ZK-доказательства?
ZK-coprocessor: тяжёлые вычисления off-chain, верификация on-chain
Ethereum - гибкая платформа для верификации, но крайне дорогая для вычислений. Чтение исторического состояния (баланс аккаунта 1000 блоков назад), сложная аналитика (средняя цена токена за 30 дней), агрегация данных (топ-100 холдеров NFT) - всё это либо невозможно в smart-контракте, либо стоит миллионы газа. **ZK-coprocessor** - парадигма, где тяжёлые вычисления выполняются off-chain, а на блокчейн отправляется только ZK-proof корректности результата.
**Axiom** - ZK-coprocessor для исторического состояния Ethereum. Он доказывает, что конкретные данные действительно существовали в конкретном блоке, используя Merkle proofs на block headers и ZK-SNARK для компактности. Пример: «баланс адреса 0xABC в блоке 18,000,000 был 5.2 ETH» - Axiom предоставляет proof размером ~300 байт, верифицируемый on-chain за ~300K gas. Без Axiom - контракт физически не может прочитать состояние 1000 блоков назад.
**RISC Zero** заслуживает отдельного внимания. Это **general-purpose zkVM**: виртуальная машина, выполняющая набор инструкций RISC-V внутри ZK-circuit. Разработчик пишет обычный код на Rust, компилирует его в RISC-V, и RISC Zero генерирует ZK-proof того, что программа выполнилась корректно. Не нужно проектировать circuit вручную - zkVM абстрагирует сложность. Это превращает ZK из специализированного инструмента криптографов в универсальную технологию, доступную любому разработчику.
**Почему «coprocessor», а не просто «oracle»?** Oracle (Chainlink, Pyth) полагается на **доверие** к операторам нод и экономические стимулы. ZK-coprocessor обеспечивает **математическую** гарантию: если proof прошёл верификацию - результат корректен, вне зависимости от того, кто его вычислил. Это как разница между «10 человек утверждают, что 2+2=4» (oracle) и «вот формальное доказательство, что 2+2=4» (ZK-coprocessor). Oracle может сговориться или ошибиться; ZK-proof - нет.
ZK-coprocessor - это то же самое, что oracle (Chainlink). Оба просто поставляют данные в smart-контракт, только с разной реализацией.
Oracle и ZK-coprocessor фундаментально различаются в модели доверия. Oracle полагается на **экономические стимулы** и **репутацию** операторов: сеть нод голосует за результат, и мошенничество наказывается штрафом (slashing). ZK-coprocessor обеспечивает **криптографическую** гарантию: proof математически доказывает корректность результата, и его невозможно подделать вне зависимости от экономических стимулов. Кроме того, ZK-coprocessor может доказывать произвольные вычисления (analytics, ML, cross-chain state), а не только поставлять внешние данные.
Oracle решает проблему «откуда взять данные» (цена ETH, погода, курсы валют) - это **data feed**. ZK-coprocessor решает проблему «как выполнить сложные вычисления» над данными, которые уже есть в блокчейне, но недоступны контракту из-за ограничений EVM. Модель доверия: oracle = «доверяй, но проверяй (экономически)», ZK-coprocessor = «не доверяй, верифицируй (математически)».
Итоги
- **ZK-identity** (Semaphore, WorldID, zkPassport) позволяет доказывать факты о личности - членство в группе, уникальность, возраст, гражданство - не раскрывая саму личность. Ключевые примитивы: Merkle tree для membership, nullifier для защиты от повторного использования, selective disclosure для выборочного раскрытия атрибутов
- **zkML** доказывает корректность ML-inference без раскрытия модели или данных. EZKL конвертирует ONNX-модели в ZK-circuits. Пока работает только для небольших моделей (MLP, малые CNN), но прогресс стремителен - от минут до секунд за два года
- **Приватные транзакции** прошли путь от простых mixer'ов (Tornado Cash - санкции OFAC) до полноценных приватных сетей (Zcash, Aztec, Penumbra). **Privacy Pools** (Бутерин, 2023) - компромисс: приватность для честных + compliance для регуляторов через Association Sets
- Помнишь Tornado Cash и Worldcoin из начала урока? Обе технологии используют одни и те же ZK-proofs, но с разными целями. **ZK-coprocessor** (Axiom, RISC Zero, Herodotus) добавляет ещё одно измерение: неограниченные вычисления off-chain с криптографической верификацией on-chain - принципиально иная модель доверия, чем у oracle
Связанные темы
ZK-приложения опираются на фундамент ZK-теории и расширяют экосистему Ethereum:
- Zero-Knowledge Proofs: основы — Все приложения этого урока строятся на трёх свойствах ZKP - completeness, soundness, zero-knowledge - и на переходе от interactive к non-interactive proofs
- ZK-SNARKs: глубокое погружение — Groth16 используется в Zcash (shielded transactions) и Tornado Cash, Halo2 - в EZKL и Axiom, PLONK - в Aztec Network
- zkEVM: EVM внутри ZK-circuit — zkEVM (zkSync, Scroll, Polygon) - rollup-специфичное применение ZK, тогда как ZK-coprocessors решают задачу off-chain вычислений поверх существующего EVM
- Ethereum Roadmap — Приватность, verifiable computation и off-chain coprocessors - ключевые направления The Splurge и The Purge в дорожной карте Ethereum
Вопросы для размышления
- Privacy Pools позволяют доказать, что твои средства «чистые», не раскрывая личность. Но кто решает, какие депозиты включить в Association Set? Если ASP ошибочно исключит легитимный депозит - пользователь не сможет вывести средства. Как децентрализовать этот процесс, сохраняя compliance?
- zkML сейчас работает только для малых моделей. Но если через 5 лет станет возможным доказывать inference GPT-уровня - как это изменит рынок AI? Будут ли модели продаваться как «чёрные ящики» с verifiable output, а не как открытые веса?
- ZK-coprocessor и oracle решают разные задачи, но пересекаются: оба поставляют данные в smart-контракт. Может ли ZK-coprocessor полностью заменить oracle? Подумай: что oracle может, а coprocessor - нет (подсказка: off-chain данные, не записанные в блокчейн).