ЧТо такое zkEVM
zkEVM — виртуальная машина Ethereum EVM (Ethereum Virtual Machine) с нулевым разглашением ZK (Zero Knowledge). Как и обычная виртуальная машина Ethereum, она предназначена для выполнения смарт-контрактов, но с использованием криптографической технологии Zero-Knowledge Proof (доказательство с нулевым разглашением)
zkEVM является одним из типов решений Layer2 для масштабирования Ethereum, которые призваны повысить пропускную способность сети за счет вынесения вычислений за пределы основной сети. ZK-накопитель отправляет объединенные в сверток (zkRollup) транзакции в Ethereum вместе с доказательством, подтверждающим достоверность пакетов транзакций, произведенных за пределами основной сети.
Как работает zkEVM?
ZkEVM генерирует доказательства с нулевым разглашением (zkProof) для проверки различных элементов в каждом вычислении:
- Доступ по байт-коду. Был ли правильно загружен соответствующий программный код с правильного адреса?
- Операции чтения/записи. Извлекала ли программа правильные значения из стека/памяти/хранилища перед вычислением? Записала ли программа правильные выходные значения в стек/память/хранилище после завершения выполнения?
- Вычисление. Правильно ли выполнялись коды операций?
ZkEVM разделен на три части: среда выполнения, схема проверки и контракт верификатора. Каждый компонент способствует выполнению программы zkEVM, генерации доказательств и проверке доказательств.
1. Среда выполнения — это место, где смарт-контракты запускаются в zkEVM. Среда выполнения zkEVM во многом похожа на EVM, она принимает начальное состояние и текущую транзакцию для вывода нового состояния.
2. Схема проверки создает доказательства с нулевым разглашением, проверяющие достоверности транзакций, вычисленных в среде выполнения. После этого доказывающая сторона получает краткое доказательство правильности этого конкретного перехода состояния.
3. Контракт с верификатором. ZK-свертки отправляют доказательства достоверности смарт-контракту, развернутому в основной сети L1 (Ethereum), для проверки. Входные данные и выходные данные также передаются в контракт верификатора. Затем верификатор запускает вычисления на основе предоставленного доказательства и подтверждает, что представленные выходные данные были правильно вычислены на основе входных данных.
Преимущества zkEVM?
Среди основных преимуществ zkEVM можно выделить следующие:
1. Безопасная масштабируемость
EVM-совместимые ZK-свертки могут исправить проблемы с пропускной способностью Ethereum, не жертвуя безопасностью сети. Как и другие протоколы масштабирования, ZK-свертки не обременены правилами протокола консенсуса Ethereum и могут быть оптимизированы для скорости выполнения. По некоторым оценкам, ZK-свертки могут обрабатывать около 2000 транзакций в секунду.
При этом ZK-свертки имеют более высокие гарантии безопасности по сравнению с другими проектами масштабирования, такими как Omtimism, работающими на основе оптимистичных свертков (Optimistic Rollup). Они проверяют правильность вычислений вне сети с помощью доказательств достоверности. Это означает, что транзакции, выполняемые смарт-контрактами на втором уровне (L2), могут быть надежно проверены на L1 (Ethereum) без необходимости повторного выполнения операций узлами. Это может значительно увеличить скорость обработки транзакций в Ethereum без снижения безопасности.
Еще одним преимуществом ZK-свертков над оптимистичными свертками является быстрая финализация. Финализация в блокчейне — это процесс, после которого транзакции становятся не обратимыми. Транзакции в блокчейне могут быть завершены только в том случае, если все участники сети имеют неопровержимые доказательства достоверности.
При использовании ZK-свертков транзакции, выполненные в zkEVM, завершаются сразу после их публикации в основной сети (Ethereum). Поскольку каждый пакет транзакций поставляется с мгновенно проверяемым доказательством действительности, основная цепочка Ethereum может быстро применять обновления состояния.
Это дает ZK-сверткам огромное преимущество над оптимистичными свертками, финализация которых может составлять 1-2 недели, в течении которых любой может оспорить транзакцию после ее отправки в основную сеть.
Накопители обеспечивают безопасность основной сети Ethereum, записывая данные транзакций в Ethereum как CALLDATA. Однако оптимистичные роллапы и ZK-роллапы различаются тем, сколько данных они должны публиковать в Ethereum.
Поскольку оптимистичные свертки не обеспечивают доказательств достоверности транзакций вне сети, им необходимо публиковать все данные, связанные с транзакциями, в сети (включая подписи и параметры транзакций). Без передачи всех данных в цепочку претенденты не могут создать доказательства мошенничества, используемые для оспаривания недействительных накопительных транзакций.
И наоборот, ZK-свертки могут позволить себе публиковать минимальные данные в Ethereum, потому что доказательства достоверности уже гарантируют достоверность переходов между состояниями. zkEVM может даже опускать входные данные транзакций и публиковать только окончательные изменения состояния, что еще больше снижает требования передаче данных в основную сеть.
Существующие платформы EVM
Не смотря на сложность реализации совместимости EVM с технологией доказательства с нулевым разглашением, множество платформ взялись за разработку своих виртуальных машин zkEVM. Среди, проектов, которые добились серьезных успехов, можно выделить следующие:
Polygon Hermez — это ZK-накопитель Polygon с виртуальной машиной с нулевым разглашением, разработанной для поддержки совместимости с EVM. Для этого байт-код EVM компилируется в микрокоды операций и выполняется в uVM — виртуальной машине, которая использует доказательства SNARK и STARK для проверки правильности выполнения программы.
zkSync — это EVM-совместимый ZK-накопитель, разработанный Matter Labs и работающий на собственном zkEVM . ZkSync обеспечивает совместимость с Ethereum, компилируя код контракта, написанный на Solidity, в Yul, промежуточный язык, который можно компилировать в байт-код для разных виртуальных машин. Затем компилирует байт-кода Yul в пользовательский, совместимый со схемами набор байт-кодов, специально разработанный для zkEVM от zkSync.
Подобно другим решениям 2 слоя на базе «роллапов», таким как zkSync и Polygon, блокчейн StarkNet объединяет огромное количество транзакций в свертки и используя криптографию подтверждает их достоверность. Отличительной чертой StarkNet является использование собственного механизма, доказательства с нулевым разглашением zkSTARK.
Это новая идея реализации EVM с нулевым разглашением, находящаяся в разработке. Команда Scroll планирует разработать схемы с нулевым разглашением для каждого кода операции EVM. Это позволит разработчикам развертывать встроенные в Ethereum смарт-контракты на Scroll без необходимости изменять базовый байт-код EVM.