Что такое zkEVM?

Что такое zkEVM и как она работает?

zkEVM — виртуальная машина Ethereum (EVM) с нулевым разглашением (ZK). Как и обычная виртуальная машина Ethereum, она предназначена для выполнения смарт-контрактов, но с использованием криптографической технологии доказательства с нулевым разглашением (Zero-Knowledge Proof).

zkEVM является одним из типов решений 2 слоя (Layer 2) для масштабирования Ethereum, которые призваны повысить пропускную способность сети за счет вынесения вычислений за пределы основной сети. ZK-накопитель отправляет объединенные в сверток (zkRollup) транзакции в Ethereum вместе с доказательством, подтверждающим достоверность пакетов транзакций, произведенных за пределами основной сети.

Как работает zkEVM?

ZkEVM генерирует доказательства с нулевым разглашением (zkProof) для проверки различных элементов в каждом вычислении:

  • Доступ по байт-коду. Был ли правильно загружен соответствующий программный код с правильного адреса? 
  • Операции чтения/записи. Извлекала ли программа правильные значения из стека/памяти/хранилища перед вычислением? Записала ли программа правильные выходные значения в стек/память/хранилище после завершения выполнения?
  • Вычисление. Правильно ли выполнялись коды операций?

ZkEVM разделен на три части: среда выполнения, схема проверки и контракт верификатора. Каждый компонент способствует выполнению программы zkEVM, генерации доказательств и проверке доказательств. 

1. Среда выполнения — это место, где смарт-контракты запускаются в zkEVM. Среда выполнения zkEVM во многом похожа на EVM, она принимает начальное состояние и текущую транзакцию для вывода нового состояния.

2. Схема проверки создает доказательства с нулевым разглашением, проверяющие достоверности транзакций, вычисленных в среде выполнения. После этого доказывающая сторона получает краткое доказательство правильности этого конкретного перехода состояния.

Схема проверки zkEVM

3. Контракт с верификатором. ZK-свертки отправляют доказательства достоверности смарт-контракту, развернутому в основной сети L1 (Ethereum), для проверки. Входные данные и выходные данные также передаются в контракт верификатора. Затем верификатор запускает вычисления на основе предоставленного доказательства и подтверждает, что представленные выходные данные были правильно вычислены на основе входных данных.

Преимущества zkEVM?

Среди основных преимуществ zkEVM можно выделить следующие:

1. Безопасная масштабируемость

EVM-совместимые ZK-свертки могут исправить проблемы с пропускной способностью Ethereum, не жертвуя безопасностью сети. Как и другие протоколы масштабирования, ZK-свертки не обременены правилами протокола консенсуса Ethereum и могут быть оптимизированы для скорости выполнения. По некоторым оценкам, ZK-свертки могут обрабатывать около 2000 транзакций в секунду. 

При этом ZK-свертки имеют более высокие гарантии безопасности по сравнению с другими проектами масштабирования, такими как Omtimism, работающими на основе оптимистичных свертков (Optimistic Rollup). Они проверяют правильность вычислений вне сети с помощью доказательств достоверности. Это означает, что транзакции, выполняемые смарт-контрактами на втором уровне (L2), могут быть надежно проверены на L1 (Ethereum) без необходимости повторного выполнения операций узлами. Это может значительно увеличить скорость обработки транзакций в Ethereum без снижения безопасности.

2. Быстрая финализация

Еще одним преимуществом ZK-свертков над оптимистичными свертками является быстрая финализация. Финализация в блокчейне — это процесс, после которого транзакции становятся не обратимыми. Транзакции в блокчейне могут быть завершены только в том случае, если все участники сети имеют неопровержимые доказательства достоверности.

При использовании ZK-свертков транзакции, выполненные в zkEVM, завершаются сразу после их публикации в основной сети (Ethereum). Поскольку каждый пакет транзакций поставляется с мгновенно проверяемым доказательством действительности, основная цепочка Ethereum может быстро применять обновления состояния.

Это дает ZK-сверткам огромное преимущество над оптимистичными свертками, финализация которых может составлять 1-2 недели, в течении которых любой может оспорить транзакцию после ее отправки в основную сеть.

3. Более низкие комиссии

Накопители обеспечивают безопасность основной сети Ethereum, записывая данные транзакций в Ethereum как CALLDATA. Однако оптимистичные роллапы и ZK-роллапы различаются тем, сколько данных они должны публиковать в Ethereum.

Поскольку оптимистичные свертки не обеспечивают доказательств достоверности транзакций вне сети, им необходимо публиковать все данные, связанные с транзакциями, в сети (включая подписи и параметры транзакций). Без передачи всех данных в цепочку претенденты не могут создать доказательства мошенничества, используемые для оспаривания недействительных накопительных транзакций.

И наоборот, ZK-свертки могут позволить себе публиковать минимальные данные в Ethereum, потому что доказательства достоверности уже гарантируют достоверность переходов между состояниями. zkEVM может даже опускать входные данные транзакций и публиковать только окончательные изменения состояния, что еще больше снижает требования передаче данных в основную сеть.

Существующие платформы EVM

Не смотря на сложность реализации совместимости EVM с технологией доказательства с нулевым разглашением, множество платформ взялись за разработку своих виртуальных машин zkEVM. Среди, проектов, которые добились серьезных успехов, можно выделить следующие:

Polygon

Polygon Hermez — это ZK-накопитель Polygon с виртуальной машиной с нулевым разглашением, разработанной для поддержки совместимости с EVM. Для этого байт-код EVM компилируется в микрокоды операций и выполняется в uVM — виртуальной машине, которая использует доказательства SNARK и STARK для проверки правильности выполнения программы.

zkSync 2.0

zkSync — это EVM-совместимый ZK-накопитель, разработанный Matter Labs и работающий на собственном zkEVM . ZkSync обеспечивает совместимость с Ethereum, компилируя код контракта, написанный на Solidity, в Yul, промежуточный язык, который можно компилировать в байт-код для разных виртуальных машин. Затем компилирует байт-кода Yul в пользовательский, совместимый со схемами набор байт-кодов, специально разработанный для zkEVM от zkSync.

StarkNet

Подобно другим решениям 2 слоя на базе «роллапов», таким как zkSync и Polygon, блокчейн StarkNet объединяет огромное количество транзакций в свертки и используя криптографию подтверждает их достоверность. Отличительной чертой StarkNet является использование собственного механизма, доказательства с нулевым разглашением zkSTARK.

Scroll

Это новая идея реализации EVM с нулевым разглашением, находящаяся в разработке. Команда Scroll планирует разработать схемы с нулевым разглашением для каждого кода операции EVM. Это позволит разработчикам развертывать встроенные в Ethereum смарт-контракты на Scroll без необходимости изменять базовый байт-код EVM.