EVM является ключевой частью Ethereum, отвечающей за выполнение смарт-контрактов и обработку транзакций. В качестве вычислительного движка EVM предоставляет абстракцию вычислений и хранения, аналогично спецификации Java Virtual Machine. EVM выполняет свой собственный набор байт-кода, который обычно компилируется из Solidity.
EVM является почти тьюрингом полной конечной машиной. "Почти" потому, что все шаги выполнения будут расходовать ограниченные ресурсы Gas, что позволяет избежать возможных бесконечных циклов, которые могут привести к остановке всей платформы Ethereum.
EVM не имеет функции планирования, модуль исполнения Ethereum извлекает транзакции из блока, EVM отвечает за последовательное выполнение. В процессе выполнения изменяется последнее состояние мира, после завершения выполнения транзакции происходит накопление состояния, достигая последнего состояния мира после завершения блока. Выполнение следующего блока строго зависит от состояния мира после выполнения предыдущего блока, поэтому линейный процесс выполнения транзакций в Ethereum сложно оптимизировать для параллельного выполнения.
В этом смысле протокол Ethereum предписывает выполнение транзакций в порядке очереди. Хотя последовательное выполнение обеспечивает выполнение транзакций и смарт-контрактов в определенном порядке, что гарантирует безопасность, в условиях высокой нагрузки это может привести к перегрузке сети и задержкам, и именно поэтому у Ethereum есть значительные узкие места в производительности, что требует расширения Layer2.
Параллельный путь высокопроизводительного Layer1
Большинство высокопроизводительных Layer1 разрабатывают свои собственные оптимизационные решения, основываясь на недостатках Эфира, который не может обрабатывать параллельно. Здесь мы поговорим только об оптимизации уровня исполнения, то есть виртуальной машины и параллельного исполнения.
Виртуальная машина
EVM спроектирован как 256-битная виртуальная машина, цель которой заключается в упрощении обработки хеш-алгоритма Эфира. Однако компьютеры, выполняющие EVM, должны сопоставлять 256-битные байты с локальной архитектурой для выполнения смарт-контрактов, что делает всю систему крайне неэффективной и непрактичной. Поэтому в выборе виртуальной машины высокопроизводительные Layer1 чаще используют виртуальные машины на основе WASM, eBPF байт-кода или Move байт-кода, а не EVM.
WASM — это формат байткода, который имеет небольшой размер, быстро загружается, переносим и основан на механизме безопасности песочницы. Разработчики могут использовать различные языки программирования для написания смарт-контрактов, а затем компилировать их в байткод WASM и выполнять. Многие проекты блокчейна уже приняли WASM в качестве стандарта, а Ethereum в будущем также интегрирует WASM, что сделает уровень выполнения Ethereum более эффективным и простым, подходящим в качестве полностью децентрализованной вычислительной платформы.
eBPF изначально был BPF, который предназначался для эффективной фильтрации сетевых пакетов. Затем он эволюционировал в eBPF, предоставляя более богатый набор инструкций, что позволяет динамически вмешиваться в ядро операционной системы и изменять его поведение без изменения исходного кода. Умные контракты, выполняемые на определенной блокчейн-платформе, компилируются в байт-код SBF (основанный на eBPF) и выполняются в ее блокчейн-сети.
Move является новым языком программирования смарт-контрактов, который акцентирует внимание на гибкости, безопасности и проверяемости. Язык Move предназначен для решения проблем безопасности активов и транзакций, позволяя строго определять и контролировать активы и транзакции. Верifier байт-кода Move является инструментом статического анализа, который анализирует байт-код Move и определяет, соответствует ли он необходимым типам, правилам безопасности памяти и ресурсов, без необходимости реализации и проверки на уровне смарт-контрактов во время выполнения. Некоторые проекты блокчейна унаследовали Move или написали свои смарт-контракты с помощью собственной кастомной версии.
Параллельное выполнение
Параллельное выполнение в блокчейне означает одновременную обработку независимых транзакций. Рассматривайте независимые транзакции как события, не влияющие друг на друга. Например, если два человека торгуют токенами на разных торговых платформах, их транзакции могут обрабатываться одновременно. Однако, если они торгуют на одной и той же платформе, может потребоваться выполнение транзакций в определенном порядке.
Основная проблема реализации параллельного выполнения заключается в определении, какие транзакции не связаны, а какие независимы. Большинство высокопроизводительных Layer1 полагаются на два метода: метод доступа к состоянию и оптимистичную параллельную модель.
Метод доступа к состоянию требует предварительного знания, какая часть состояния блокчейна доступна для каждой транзакции, чтобы определить, какие транзакции являются независимыми.
В некоторых блокчейнах программы (умные контракты) являются безсостояниями, поскольку они не могут самостоятельно получать доступ (читать или записывать) к какому-либо состоянию, которое существует в течение всего процесса транзакции. Для доступа или поддержания состояния программы необходимо использовать аккаунт. Каждая транзакция должна указывать, к каким аккаунтам будет осуществляться доступ в ходе выполнения транзакции, чтобы обработчик транзакций мог планировать параллельное выполнение неперекрывающихся транзакций, одновременно обеспечивая согласованность данных.
В некоторых блокчейнах каждый смарт-контракт является модулем, состоящим из функций и определений структур. Структуры инстанцируются в функциях и могут быть переданы другим модулям через вызов функций. Инстансы структур, хранящиеся во время выполнения, являются объектами. Существуют три различных типа объектов: объекты-владельцы, совместные объекты и неизменяемые объекты. Стратегия параллелизации аналогична вышеописанной, транзакции также требуют указания, какие объекты будут обрабатываться.
Оптимистичная параллельная модель работает на предположении, что все транзакции независимы, просто ретроспективно проверяя это предположение и при необходимости внося изменения.
Некоторые блокчейны используют метод Block-STM (блок программного обеспечения для транзакционной памяти) для применения оптимистичного параллельного исполнения. В Block-STM транзакции сначала настраиваются в блоке в определенном порядке, а затем разбиваются между различными потоками обработки для одновременного выполнения. При обработке этих транзакций система отслеживает каждое измененное местоположение в памяти. После каждого раунда обработки система проверяет все результаты транзакций. Если она обнаруживает, что какая-то транзакция затрагивает местоположение в памяти, измененное ранними транзакциями, то результат этой транзакции стирается, и она выполняется снова. Этот процесс продолжается до тех пор, пока каждая транзакция в блоке не будет обработана.
Параллельный EVM
Параллельный EVM (Parallel EVM) был упомянут еще в 2021 году, тогда речь шла о поддержке одновременной обработки нескольких транзакций в EVM, с целью улучшения производительности и эффективности существующего EVM. Представленные решения включают параллельный EVM, реализованный на основе Block-STM на одной платформе, и параллельный EVM, разработанный в сотрудничестве с другой платформой.
Но в конце 2023 года эксперты отрасли единогласно упомянули параллельный EVM, прогнозируя тенденции на 2024 год, что привело к популяризации EVM-совместимых Layer1, использующих технологии параллельного исполнения, включая Monand и Sei.
Сегодня некоторые проекты Layer1 и Layer2 во всем мире наклеивают ярлык параллельного EVM, вызывая головокружение.
Я считаю, что разумно определить параллельный EVM только тремя следующими категориями:
Обновление параллельного исполнения для EVM-совместимого Layer1 без использования технологий параллельного исполнения;
Использующий параллельное выполнение EVM-совместимый Layer1;
Применяемая параллельная технология выполнения для не-EVM-совместимого Layer1 EVM-совместимого решения.
Здесь кратко представлены несколько代表性项目.
Monad является высокопроизводительным Layer1, совместимым с EVM, который использует механизм PoS и направлен на значительное улучшение масштабируемости и скорости транзакций за счет параллельного выполнения. Monad позволяет выполнять транзакции параллельно внутри блока для повышения эффективности. Он использует оптимистичную параллельную модель, начиная выполнение новых транзакций до завершения выполнения предыдущих. Для решения проблемы некорректных результатов Monad отслеживает входные/выходные данные и повторно выполняет несогласованные транзакции. Статический анализатор кода может предсказать зависимости, избежать недействительной параллельности и в случае неопределенности вернуться к простой модели. Это параллельное выполнение увеличивает пропускную способность и одновременно снижает вероятность неудачи транзакций.
Sei - это Layer1, разработанный на базе Cosmos SDK, специально созданный для DeFi. Sei V2 - это масштабное обновление сети Sei, целью которого является становление первым полностью параллельным EVM. Как и Monad, Sei V2 будет использовать оптимистичную параллелизацию. Это позволяет блокчейну одновременно исполнять транзакции, не требуя от разработчиков определения каких-либо зависимостей. Когда возникают конфликты, блокчейн будет отслеживать каждую часть хранилища, затрагиваемую транзакцией, и последовательно повторно выполнять эти транзакции. Этот процесс будет рекурсивно продолжаться, пока все неразрешенные конфликты не будут решены.
Artela — это масштабируемая блокчейн-сеть, которая позволяет разработчикам создавать функционально насыщенные децентрализованные приложения (dApps). EVM++, представленный Artela, символизирует высокую масштабируемость + высокую производительность параллельного EVM и реализуется в два этапа. На первом этапе будет разработан параллельный режим выполнения, который на основе параллельного исполнения обеспечит масштабируемость вычислительной мощности узлов сети через эластичные вычисления, что в конечном итоге приведет к эластичному блочному пространству. В рамках параллельного выполнения транзакции будут группироваться в зависимости от анализа конфликтов зависимостей транзакций для поддержки параллельного выполнения.
Решение, совместимое с EVM, на одной платформе — это решение для выполнения транзакций EVM на этой платформе. На самом деле это смарт-контракт на этой платформе, который реализует интерпретатор EVM, скомпилированный в специфический байт-код. В нем реализована система модели транзакций и модели аккаунтов Ethereum, пользователю нужно только заплатить комиссию EVM GAS для отправки транзакции. Комиссия сети этой платформы оплачивается агентом. Платформа требует предоставления списка аккаунтов для транзакций, что также касается упаковки транзакций, поэтому обязанности агента включают в себя создание этого списка аккаунтов, а также получение возможностей параллельного выполнения транзакций на этой платформе.
Существуют и другие проекты, аналогично использующие EVM для выполнения смарт-контрактов и реализации совместимых с EVM решений. Теоретически на некоторых платформах также можно использовать это решение для достижения неконтролируемой совместимости с EVM. Некоторые проекты работают над созданием модульной структуры для построения и развертывания инфраструктуры, приложений и блокчейнов на основе Move в любой распределенной среде. Один из модулей этого проекта может бесшовно преобразовывать коды операций EVM в коды операций Move, что означает, что проекты на Solidity могут использовать преимущества производительности и безопасности Move, не написав ни одной строки кода на Move.
Совместимость с EVM позволяет разработчикам легко переносить свои приложения Ethereum на блокчейн, не требуя масштабных изменений, что является хорошим направлением для построения экосистемы.
Итог
Параллельные технологии блокчейна уже давно стали распространенной темой, и нарратив время от времени поднимается, но в настоящее время в основном происходит модификация и имитация оптимистичной модели выполнения, представленной механизмом Block-STM какого-то блокчейна, без существенных прорывов, поэтому интерес трудно поддерживать.
Взглянув в будущее, мы увидим больше новых перспективных проектов Layer1, присоединяющихся к конкуренции EVM, а для некоторых старых Layer1 также будут реализованы параллельные обновления EVM или решения, совместимые с EVM. Оба направления ведут к одной цели, и также появятся новые нарративы, связанные с повышением производительности.
Однако по сравнению с повествованием о высокопроизводительном EVM, блокчейн может расцвести разнообразием, и появление подобных WASM, SVM и Move VM повествований, возможно, более ожидаемо.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
10 Лайков
Награда
10
6
Поделиться
комментарий
0/400
BlockImposter
· 21ч назад
Газ真贵
Посмотреть ОригиналОтветить0
RektHunter
· 21ч назад
Газ поднялся, есть альтернативные цепочки. Кто играет, тот дурак.
Посмотреть ОригиналОтветить0
degenonymous
· 21ч назад
Добавить Газ, это же ужасно.
Посмотреть ОригиналОтветить0
SchrodingerGas
· 21ч назад
Газ война действительно ерунда. Позавчера ночью я снова пытался чеканить и сжег свои три значные суммы.
Восхождение параллельного EVM: эволюционный путь высокопроизводительного Layer1
EVM: Основной компонент Ethereum
EVM является ключевой частью Ethereum, отвечающей за выполнение смарт-контрактов и обработку транзакций. В качестве вычислительного движка EVM предоставляет абстракцию вычислений и хранения, аналогично спецификации Java Virtual Machine. EVM выполняет свой собственный набор байт-кода, который обычно компилируется из Solidity.
EVM является почти тьюрингом полной конечной машиной. "Почти" потому, что все шаги выполнения будут расходовать ограниченные ресурсы Gas, что позволяет избежать возможных бесконечных циклов, которые могут привести к остановке всей платформы Ethereum.
EVM не имеет функции планирования, модуль исполнения Ethereum извлекает транзакции из блока, EVM отвечает за последовательное выполнение. В процессе выполнения изменяется последнее состояние мира, после завершения выполнения транзакции происходит накопление состояния, достигая последнего состояния мира после завершения блока. Выполнение следующего блока строго зависит от состояния мира после выполнения предыдущего блока, поэтому линейный процесс выполнения транзакций в Ethereum сложно оптимизировать для параллельного выполнения.
В этом смысле протокол Ethereum предписывает выполнение транзакций в порядке очереди. Хотя последовательное выполнение обеспечивает выполнение транзакций и смарт-контрактов в определенном порядке, что гарантирует безопасность, в условиях высокой нагрузки это может привести к перегрузке сети и задержкам, и именно поэтому у Ethereum есть значительные узкие места в производительности, что требует расширения Layer2.
Параллельный путь высокопроизводительного Layer1
Большинство высокопроизводительных Layer1 разрабатывают свои собственные оптимизационные решения, основываясь на недостатках Эфира, который не может обрабатывать параллельно. Здесь мы поговорим только об оптимизации уровня исполнения, то есть виртуальной машины и параллельного исполнения.
Виртуальная машина
EVM спроектирован как 256-битная виртуальная машина, цель которой заключается в упрощении обработки хеш-алгоритма Эфира. Однако компьютеры, выполняющие EVM, должны сопоставлять 256-битные байты с локальной архитектурой для выполнения смарт-контрактов, что делает всю систему крайне неэффективной и непрактичной. Поэтому в выборе виртуальной машины высокопроизводительные Layer1 чаще используют виртуальные машины на основе WASM, eBPF байт-кода или Move байт-кода, а не EVM.
WASM — это формат байткода, который имеет небольшой размер, быстро загружается, переносим и основан на механизме безопасности песочницы. Разработчики могут использовать различные языки программирования для написания смарт-контрактов, а затем компилировать их в байткод WASM и выполнять. Многие проекты блокчейна уже приняли WASM в качестве стандарта, а Ethereum в будущем также интегрирует WASM, что сделает уровень выполнения Ethereum более эффективным и простым, подходящим в качестве полностью децентрализованной вычислительной платформы.
eBPF изначально был BPF, который предназначался для эффективной фильтрации сетевых пакетов. Затем он эволюционировал в eBPF, предоставляя более богатый набор инструкций, что позволяет динамически вмешиваться в ядро операционной системы и изменять его поведение без изменения исходного кода. Умные контракты, выполняемые на определенной блокчейн-платформе, компилируются в байт-код SBF (основанный на eBPF) и выполняются в ее блокчейн-сети.
Move является новым языком программирования смарт-контрактов, который акцентирует внимание на гибкости, безопасности и проверяемости. Язык Move предназначен для решения проблем безопасности активов и транзакций, позволяя строго определять и контролировать активы и транзакции. Верifier байт-кода Move является инструментом статического анализа, который анализирует байт-код Move и определяет, соответствует ли он необходимым типам, правилам безопасности памяти и ресурсов, без необходимости реализации и проверки на уровне смарт-контрактов во время выполнения. Некоторые проекты блокчейна унаследовали Move или написали свои смарт-контракты с помощью собственной кастомной версии.
Параллельное выполнение
Параллельное выполнение в блокчейне означает одновременную обработку независимых транзакций. Рассматривайте независимые транзакции как события, не влияющие друг на друга. Например, если два человека торгуют токенами на разных торговых платформах, их транзакции могут обрабатываться одновременно. Однако, если они торгуют на одной и той же платформе, может потребоваться выполнение транзакций в определенном порядке.
Основная проблема реализации параллельного выполнения заключается в определении, какие транзакции не связаны, а какие независимы. Большинство высокопроизводительных Layer1 полагаются на два метода: метод доступа к состоянию и оптимистичную параллельную модель.
Метод доступа к состоянию требует предварительного знания, какая часть состояния блокчейна доступна для каждой транзакции, чтобы определить, какие транзакции являются независимыми.
В некоторых блокчейнах программы (умные контракты) являются безсостояниями, поскольку они не могут самостоятельно получать доступ (читать или записывать) к какому-либо состоянию, которое существует в течение всего процесса транзакции. Для доступа или поддержания состояния программы необходимо использовать аккаунт. Каждая транзакция должна указывать, к каким аккаунтам будет осуществляться доступ в ходе выполнения транзакции, чтобы обработчик транзакций мог планировать параллельное выполнение неперекрывающихся транзакций, одновременно обеспечивая согласованность данных.
В некоторых блокчейнах каждый смарт-контракт является модулем, состоящим из функций и определений структур. Структуры инстанцируются в функциях и могут быть переданы другим модулям через вызов функций. Инстансы структур, хранящиеся во время выполнения, являются объектами. Существуют три различных типа объектов: объекты-владельцы, совместные объекты и неизменяемые объекты. Стратегия параллелизации аналогична вышеописанной, транзакции также требуют указания, какие объекты будут обрабатываться.
Оптимистичная параллельная модель работает на предположении, что все транзакции независимы, просто ретроспективно проверяя это предположение и при необходимости внося изменения.
Некоторые блокчейны используют метод Block-STM (блок программного обеспечения для транзакционной памяти) для применения оптимистичного параллельного исполнения. В Block-STM транзакции сначала настраиваются в блоке в определенном порядке, а затем разбиваются между различными потоками обработки для одновременного выполнения. При обработке этих транзакций система отслеживает каждое измененное местоположение в памяти. После каждого раунда обработки система проверяет все результаты транзакций. Если она обнаруживает, что какая-то транзакция затрагивает местоположение в памяти, измененное ранними транзакциями, то результат этой транзакции стирается, и она выполняется снова. Этот процесс продолжается до тех пор, пока каждая транзакция в блоке не будет обработана.
Параллельный EVM
Параллельный EVM (Parallel EVM) был упомянут еще в 2021 году, тогда речь шла о поддержке одновременной обработки нескольких транзакций в EVM, с целью улучшения производительности и эффективности существующего EVM. Представленные решения включают параллельный EVM, реализованный на основе Block-STM на одной платформе, и параллельный EVM, разработанный в сотрудничестве с другой платформой.
Но в конце 2023 года эксперты отрасли единогласно упомянули параллельный EVM, прогнозируя тенденции на 2024 год, что привело к популяризации EVM-совместимых Layer1, использующих технологии параллельного исполнения, включая Monand и Sei.
Сегодня некоторые проекты Layer1 и Layer2 во всем мире наклеивают ярлык параллельного EVM, вызывая головокружение.
Я считаю, что разумно определить параллельный EVM только тремя следующими категориями:
Обновление параллельного исполнения для EVM-совместимого Layer1 без использования технологий параллельного исполнения;
Использующий параллельное выполнение EVM-совместимый Layer1;
Применяемая параллельная технология выполнения для не-EVM-совместимого Layer1 EVM-совместимого решения.
Здесь кратко представлены несколько代表性项目.
Monad является высокопроизводительным Layer1, совместимым с EVM, который использует механизм PoS и направлен на значительное улучшение масштабируемости и скорости транзакций за счет параллельного выполнения. Monad позволяет выполнять транзакции параллельно внутри блока для повышения эффективности. Он использует оптимистичную параллельную модель, начиная выполнение новых транзакций до завершения выполнения предыдущих. Для решения проблемы некорректных результатов Monad отслеживает входные/выходные данные и повторно выполняет несогласованные транзакции. Статический анализатор кода может предсказать зависимости, избежать недействительной параллельности и в случае неопределенности вернуться к простой модели. Это параллельное выполнение увеличивает пропускную способность и одновременно снижает вероятность неудачи транзакций.
Sei - это Layer1, разработанный на базе Cosmos SDK, специально созданный для DeFi. Sei V2 - это масштабное обновление сети Sei, целью которого является становление первым полностью параллельным EVM. Как и Monad, Sei V2 будет использовать оптимистичную параллелизацию. Это позволяет блокчейну одновременно исполнять транзакции, не требуя от разработчиков определения каких-либо зависимостей. Когда возникают конфликты, блокчейн будет отслеживать каждую часть хранилища, затрагиваемую транзакцией, и последовательно повторно выполнять эти транзакции. Этот процесс будет рекурсивно продолжаться, пока все неразрешенные конфликты не будут решены.
Artela — это масштабируемая блокчейн-сеть, которая позволяет разработчикам создавать функционально насыщенные децентрализованные приложения (dApps). EVM++, представленный Artela, символизирует высокую масштабируемость + высокую производительность параллельного EVM и реализуется в два этапа. На первом этапе будет разработан параллельный режим выполнения, который на основе параллельного исполнения обеспечит масштабируемость вычислительной мощности узлов сети через эластичные вычисления, что в конечном итоге приведет к эластичному блочному пространству. В рамках параллельного выполнения транзакции будут группироваться в зависимости от анализа конфликтов зависимостей транзакций для поддержки параллельного выполнения.
Решение, совместимое с EVM, на одной платформе — это решение для выполнения транзакций EVM на этой платформе. На самом деле это смарт-контракт на этой платформе, который реализует интерпретатор EVM, скомпилированный в специфический байт-код. В нем реализована система модели транзакций и модели аккаунтов Ethereum, пользователю нужно только заплатить комиссию EVM GAS для отправки транзакции. Комиссия сети этой платформы оплачивается агентом. Платформа требует предоставления списка аккаунтов для транзакций, что также касается упаковки транзакций, поэтому обязанности агента включают в себя создание этого списка аккаунтов, а также получение возможностей параллельного выполнения транзакций на этой платформе.
Существуют и другие проекты, аналогично использующие EVM для выполнения смарт-контрактов и реализации совместимых с EVM решений. Теоретически на некоторых платформах также можно использовать это решение для достижения неконтролируемой совместимости с EVM. Некоторые проекты работают над созданием модульной структуры для построения и развертывания инфраструктуры, приложений и блокчейнов на основе Move в любой распределенной среде. Один из модулей этого проекта может бесшовно преобразовывать коды операций EVM в коды операций Move, что означает, что проекты на Solidity могут использовать преимущества производительности и безопасности Move, не написав ни одной строки кода на Move.
Совместимость с EVM позволяет разработчикам легко переносить свои приложения Ethereum на блокчейн, не требуя масштабных изменений, что является хорошим направлением для построения экосистемы.
Итог
Параллельные технологии блокчейна уже давно стали распространенной темой, и нарратив время от времени поднимается, но в настоящее время в основном происходит модификация и имитация оптимистичной модели выполнения, представленной механизмом Block-STM какого-то блокчейна, без существенных прорывов, поэтому интерес трудно поддерживать.
Взглянув в будущее, мы увидим больше новых перспективных проектов Layer1, присоединяющихся к конкуренции EVM, а для некоторых старых Layer1 также будут реализованы параллельные обновления EVM или решения, совместимые с EVM. Оба направления ведут к одной цели, и также появятся новые нарративы, связанные с повышением производительности.
Однако по сравнению с повествованием о высокопроизводительном EVM, блокчейн может расцвести разнообразием, и появление подобных WASM, SVM и Move VM повествований, возможно, более ожидаемо.