Цепочки ZKsync, такие как Era, работают на EraVM, ZK-оптимизированной виртуальной машине, которая отличается от виртуальной машины Ethereum (EVM) своим набором команд и моделью выполнения. Хотя Solidity и Vyper могут быть скомпилированы в байт-код EraVM, различия в исполнении и инструментарии в некоторых случаях потребовали внесения изменений.
Чтобы решить эту проблему, ZKsync вводит режим выполнения EVM через интерпретатор байт-кода EVM, позволяющий неизмененному байт-коду EVM запускаться в цепочках ZKsync без перекомпиляции или изменений в инструментарии разработчика. Это позволяет проектам, созданным для Ethereum, выполняться в ZKsync, сохраняя при этом EraVM в качестве основной среды выполнения.
«ZKSync стал полностью EVM-совместим, и это означает, что все EVM-протоколы теперь могут быть развернуты с полной функциональностью EVM и быстрее. Ожидаем увидеть больше DeFi на ZKSync Era», — написал Стани Кулешов, основатель Aave.
Модель выполнения
EraVM остается основной средой выполнения. Интерпретатор EVM не заменяет EraVM, а действует как уровень трансляции, позволяя выполнять байт-код EVM поверх EraVM.
Контракты EVM помечаются для интерпретации. При развертывании EVM-контракта его байт-кодовый хэш помечается специальным идентификатором. Вместо запуска собственного байт-кода EraVM система перенаправляет выполнение через интерпретатор.
Коды операций EVM интерпретируются во время выполнения. Интерпретатор преобразует инструкции EVM в операции EraVM, обеспечивая максимально точное соответствие выполнения семантике EVM.
Ключевые характеристики
- Развертывание контрактов Solidity и Vyper без рекомпиляции. Нет необходимости в рекомпиляции с
zksolc
илиzkvyper
. - Совместимость со стандартными инструментами Ethereum. Работает с Foundry, Hardhat и Remix, не требуя дополнительных плагинов или модификаций.
- Последовательный вывод адресов.
create
иcreate2
генерируют те же адреса контрактов, что и в Ethereum. - Предварительно развернутые системные контракты. Доступны такие контракты как
create2
,multicall3 и
singletonFactory (ERC2470).
Использование интерпретатора EVM упрощает развертывание контрактов для проектов, требующих совместимости с байт-кодом EVM, но контракты, основанные на EraVM, остаются более эффективными.
«ZKsync прокладывает свой путь. Мы работает над будущим Ethereum и EVM», — отметили в ZKsync.