#dusk $DUSK @Dusk
На рынке полно проектов, которые заявляют, что они «совместимы с ZK». Но если спокойно разобраться в деталях исполнения, становится видно: у большинства это лишь поверхностные доработки — ZK превращают в навесную заплатку, а не в нативную базовую возможность. Многие сравнивают лишь время генерации ZK-доказательств, но редко обращают внимание на дополнительные затраты газа и задержку при вызове ZK-логики из смарт-контракта. Именно эти скрытые издержки, «спрятанные» в среде исполнения, напрямую определяют, сможет ли приватная финансовая система масштабироваться и работать в реальном объёме.
Подавляющее большинство публичных сетей использует внешнюю схему для выполнения ZK-верификации: либо опираются на precompile-контракты, либо выносят тяжёлые доказательные вычисления на уровень внечейновых сервисов. Порог входа низкий и запуск быстрый, но у подхода ярко выраженные недостатки. На каждую верификацию ZK контракту приходится инициировать кросс-модульные вызовы: каждый дополнительный уровень взаимодействия добавляет очередной раунд расхода газа. По результатам тестов, дополнительный gas на один вызов часто стартует с десятков тысяч (и до сотен тысяч). А если внечейновый сервис перегружен, задержка возврата результата доказательства напрямую блокирует on-chain бизнес-логику. Точки отказа распределяются по цепочке; чем длиннее путь, тем выше вероятность ошибки. По сути, ZK здесь — лишь «вишенка на торте»: функция дополнительная и по приоритету стоит ниже базовой ончейн-логики.
Dusk реализует совершенно противоположный подход: вместо надстройки он «опускает» всю криптографическую верификационную функциональность в нижний уровень времени исполнения. Различные ключевые логики валидации популярных zero-knowledge proof, хэш-алгоритмы и компоненты агрегационных подписей полностью инкапсулированы в хост-функции виртуальной машины. Контрактный уровень может вызывать их напрямую, убирая лишние издержки на прыжки между модулями precompile и на гонки/обмены с внечейновыми сервисами. При той же логике ZK-верификации расход газа на уровне контракта можно сжать примерно на 30%, а задержку вызова опустить до миллисекунд.
В основе лежит отказ от мемори-модели EVM. Вместо этого память переразмечена и спроектирована заново на базе WASM. Нативная модель памяти EVM оптимизирована под обычные смарт-контракты; при ZK-вычислениях частые чтения/записи приводят к большому числу избыточных копирований памяти. В некоторых сложных доказательных сценариях потребление памяти возрастает в несколько раз. Гранулярность памяти в WASM гораздо гибче и лучше подходит под характер ZK — множество циклических хэш-операций и полиномиальные вычисления. Максимальное потребление памяти может снижаться до 40%, а эффективность исполнения заметно улучшается.
И самое важное — это единое «сквозное» решение. ZK-способности не существуют как изолированный компонент. Контрактные интерфейсы и ончейн-примитивы приватных транзакций объединены: верификация доказательства, передача активов и приватная логика могут замыкаться в одном и том же цепочечном маршруте транзакции, без необходимости собирать решение из нескольких систем.
На рынке полно проектов, которые заявляют, что они «совместимы с ZK». Но если спокойно разобраться в деталях исполнения, становится видно: у большинства это лишь поверхностные доработки — ZK превращают в навесную заплатку, а не в нативную базовую возможность. Многие сравнивают лишь время генерации ZK-доказательств, но редко обращают внимание на дополнительные затраты газа и задержку при вызове ZK-логики из смарт-контракта. Именно эти скрытые издержки, «спрятанные» в среде исполнения, напрямую определяют, сможет ли приватная финансовая система масштабироваться и работать в реальном объёме.
Подавляющее большинство публичных сетей использует внешнюю схему для выполнения ZK-верификации: либо опираются на precompile-контракты, либо выносят тяжёлые доказательные вычисления на уровень внечейновых сервисов. Порог входа низкий и запуск быстрый, но у подхода ярко выраженные недостатки. На каждую верификацию ZK контракту приходится инициировать кросс-модульные вызовы: каждый дополнительный уровень взаимодействия добавляет очередной раунд расхода газа. По результатам тестов, дополнительный gas на один вызов часто стартует с десятков тысяч (и до сотен тысяч). А если внечейновый сервис перегружен, задержка возврата результата доказательства напрямую блокирует on-chain бизнес-логику. Точки отказа распределяются по цепочке; чем длиннее путь, тем выше вероятность ошибки. По сути, ZK здесь — лишь «вишенка на торте»: функция дополнительная и по приоритету стоит ниже базовой ончейн-логики.
Dusk реализует совершенно противоположный подход: вместо надстройки он «опускает» всю криптографическую верификационную функциональность в нижний уровень времени исполнения. Различные ключевые логики валидации популярных zero-knowledge proof, хэш-алгоритмы и компоненты агрегационных подписей полностью инкапсулированы в хост-функции виртуальной машины. Контрактный уровень может вызывать их напрямую, убирая лишние издержки на прыжки между модулями precompile и на гонки/обмены с внечейновыми сервисами. При той же логике ZK-верификации расход газа на уровне контракта можно сжать примерно на 30%, а задержку вызова опустить до миллисекунд.
В основе лежит отказ от мемори-модели EVM. Вместо этого память переразмечена и спроектирована заново на базе WASM. Нативная модель памяти EVM оптимизирована под обычные смарт-контракты; при ZK-вычислениях частые чтения/записи приводят к большому числу избыточных копирований памяти. В некоторых сложных доказательных сценариях потребление памяти возрастает в несколько раз. Гранулярность памяти в WASM гораздо гибче и лучше подходит под характер ZK — множество циклических хэш-операций и полиномиальные вычисления. Максимальное потребление памяти может снижаться до 40%, а эффективность исполнения заметно улучшается.
И самое важное — это единое «сквозное» решение. ZK-способности не существуют как изолированный компонент. Контрактные интерфейсы и ончейн-примитивы приватных транзакций объединены: верификация доказательства, передача активов и приватная логика могут замыкаться в одном и том же цепочечном маршруте транзакции, без необходимости собирать решение из нескольких систем.