EVM є ядром Ethereum, відповідальним за виконання смарт-контрактів та обробку транзакцій. Це обчислювальний движок, який забезпечує абстракцію обчислень та зберігання, схожу на Java Virtual Machine. EVM виконує свій власний набір байт-коду, зазвичай сформований із Solidity.
EVM є напівтурінговою машиною станів. "Напів" тому, що всі кроки виконання споживають обмежені ресурси Gas, що запобігає можливим безкінечним циклам, які можуть призвести до зупинки всієї платформи.
EVM не має функції планування, виконавчий модуль Ethereum витягує транзакції з блоку, EVM відповідає за їх послідовне виконання. Процес виконання змінює останній світовий стан, після завершення виконання транзакції відбувається накопичення стану, досягаючи останнього світового стану після завершення блоку. Виконання наступного блоку суворо залежить від світового стану після виконання попереднього блоку, тому лінійний процес виконання транзакцій в Ethereum важко оптимізувати для паралельного виконання.
Протокол Ethereum передбачає виконання транзакцій у порядку. Хоча послідовне виконання забезпечує те, що транзакції та смарт-контракти можуть виконуватися в визначеному порядку, що гарантує безпеку, в умовах високого навантаження це може призвести до заторів у мережі та затримок, що є причиною існування продуктивних обмежень Ethereum та необхідності розширення Layer2.
Шлях до паралельного високо продуктивного Layer1
Більшість високопродуктивних Layer1 розробляють свої власні оптимізаційні рішення на основі недоліків Ethereum, які не можуть обробляти паралельно, зосереджуючись переважно на віртуальних машинах і паралельному виконанні.
Віртуальна машина
EVM спроектовано як 256-бітну віртуальну машину, метою якої є спрощення обробки хеш-алгоритму Ethereum. Однак комп'ютери, що фактично виконують EVM, повинні відображати 256-бітні байти на локальну архітектуру для виконання смарт-контрактів, що робить всю систему малоефективною. Тому високопродуктивні Layer1 більше використовують віртуальні машини на основі WASM, eBPF байт-коду або Move байт-коду, а не EVM.
WASM є форматом байт-коду, який має малий обсяг, швидко завантажується, є портативним та базується на механізмах безпеки пісочниці. Розробники можуть використовувати різні мови програмування для написання смарт-контрактів, а потім компілювати їх у байт-код WASM та виконувати. Багато блокчейн-проєктів вже прийняли WASM як стандарт, Ethereum у майбутньому також інтегрує WASM.
eBPF походить від BPF, надає більш багатий набір інструкцій, що дозволяє динамічно втручатися в ядро операційної системи без зміни вихідного коду. Деякі смарт-контракти, що виконуються на блокчейнах, компілюються у байт-код на основі eBPF та виконуються.
Move є новою мовою програмування смарт-контрактів, яка акцентує увагу на гнучкості, безпеці та перевіряємості. Move має на меті вирішення проблем безпеки в активах та операціях, дозволяючи чітко визначати та контролювати активи та операції. Деякі блокчейни використовують власні кастомізовані версії Move для написання смарт-контрактів.
Паралельне виконання
Паралельне виконання в блокчейні означає одночасну обробку нерелевантних транзакцій. Основним викликом для реалізації паралельного виконання є визначення, які транзакції є нерелевантними, а які незалежними. Більшість високопродуктивних Layer1 покладаються на два методи: метод доступу до стану та оптимістичну паралельну модель.
Метод доступу до стану вимагає заздалегідь знати, яку частину стану блокчейну може отримати кожна транзакція, щоб проаналізувати, які транзакції є незалежними. Деякі програми блокчейну ( смарт-контрактів ) є безстановими і потребують використання облікових записів для доступу або збереження стану. Транзакції повинні вказувати, які облікові записи будуть доступні, щоб під час обробки транзакцій можна було планувати паралельне виконання неперекриваючих транзакцій, при цьому забезпечуючи узгодженість даних.
Оптимістична паралельна модель припускає, що всі транзакції є незалежними, просто ретроспективно перевіряючи це припущення та за необхідності вносячи корективи. Деякі блокчейни використовують методи програмного забезпечення блоків для застосування оптимістичного паралельного виконання. Транзакції спочатку встановлюються в певному порядку, а потім розподіляються між різними обробними потоками для одночасного виконання. Система відстежує місця пам'яті, де змінюється кожна транзакція, перевіряє всі результати транзакцій після кожного раунду обробки, і якщо виявляється, що якась транзакція торкається місця пам'яті, що змінювалося раніше, то її результати стираються та виконуються заново.
Паралельний EVM
Паралельний EVM був запропонований ще в 2021 році, що означає підтримку одночасної обробки кількох транзакцій EVM, з метою покращення продуктивності та ефективності існуючого EVM. Наприкінці 2023 року в галузі знову згадали про паралельний EVM, що спровокувало хвилю впровадження EVM-сумісних Layer1 з технологією паралельного виконання.
Розумне визначення паралельного EVM включає три категорії:
Вдосконалення паралельного виконання EVM-сумісного Layer1, яке не використовує технологію паралельного виконання.
Використання технології паралельного виконання EVM-сумісного Layer1
Використано технологію паралельного виконання для EVM-сумісного рішення Layer 1, що не є EVM-сумісним.
Деякі нові проекти Layer1 використовують оптимістичну паралельну модель, що дозволяє виконувати транзакції паралельно в межах блоку для підвищення ефективності. Вони починають виконання нових транзакцій до завершення виконання попереднього кроку, відстежуючи вхідні/вихідні дані та повторно виконуючи несумісні транзакції. Статичний аналізатор коду може передбачити залежності, уникнути недійсної паралельності та, у разі невизначеності, повернутися до простої моделі.
Інші проекти використовують EVM для виконання смарт-контрактів, щоб забезпечити сумісність з EVM. Цей підхід безшовно перетворює опкоди EVM у опкоди конкретної віртуальної машини, що дозволяє проектам на Solidity використовувати переваги продуктивності та безпеки інших віртуальних машин без необхідності змінювати код.
Підсумок
Паралельні технології блокчейну - це тема, яка неодноразово обговорюється, в даний час основна увага приділяється модифікації та імітації оптимістичних моделей виконання, що не вистачає суттєвих проривів. У майбутньому можуть з'явитися більше нових проектів Layer1, які приєднаються до конкуренції EVM, деякі старі Layer1 також реалізують паралельне оновлення EVM або рішення, сумісні з EVM.
Окрім високопродуктивного EVM, у сфері блокчейну можуть з'явитися різноманітні технологічні наративи, такі як WASM, SVM та Move VM, що сприятимуть різноманітному розвитку цілої екосистеми.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Поява паралельного EVM: як високопродуктивний Layer1 долає продуктивні обмеження Ethereum
EVM:Ядро компонентів Ethereum
EVM є ядром Ethereum, відповідальним за виконання смарт-контрактів та обробку транзакцій. Це обчислювальний движок, який забезпечує абстракцію обчислень та зберігання, схожу на Java Virtual Machine. EVM виконує свій власний набір байт-коду, зазвичай сформований із Solidity.
EVM є напівтурінговою машиною станів. "Напів" тому, що всі кроки виконання споживають обмежені ресурси Gas, що запобігає можливим безкінечним циклам, які можуть призвести до зупинки всієї платформи.
EVM не має функції планування, виконавчий модуль Ethereum витягує транзакції з блоку, EVM відповідає за їх послідовне виконання. Процес виконання змінює останній світовий стан, після завершення виконання транзакції відбувається накопичення стану, досягаючи останнього світового стану після завершення блоку. Виконання наступного блоку суворо залежить від світового стану після виконання попереднього блоку, тому лінійний процес виконання транзакцій в Ethereum важко оптимізувати для паралельного виконання.
Протокол Ethereum передбачає виконання транзакцій у порядку. Хоча послідовне виконання забезпечує те, що транзакції та смарт-контракти можуть виконуватися в визначеному порядку, що гарантує безпеку, в умовах високого навантаження це може призвести до заторів у мережі та затримок, що є причиною існування продуктивних обмежень Ethereum та необхідності розширення Layer2.
Шлях до паралельного високо продуктивного Layer1
Більшість високопродуктивних Layer1 розробляють свої власні оптимізаційні рішення на основі недоліків Ethereum, які не можуть обробляти паралельно, зосереджуючись переважно на віртуальних машинах і паралельному виконанні.
Віртуальна машина
EVM спроектовано як 256-бітну віртуальну машину, метою якої є спрощення обробки хеш-алгоритму Ethereum. Однак комп'ютери, що фактично виконують EVM, повинні відображати 256-бітні байти на локальну архітектуру для виконання смарт-контрактів, що робить всю систему малоефективною. Тому високопродуктивні Layer1 більше використовують віртуальні машини на основі WASM, eBPF байт-коду або Move байт-коду, а не EVM.
WASM є форматом байт-коду, який має малий обсяг, швидко завантажується, є портативним та базується на механізмах безпеки пісочниці. Розробники можуть використовувати різні мови програмування для написання смарт-контрактів, а потім компілювати їх у байт-код WASM та виконувати. Багато блокчейн-проєктів вже прийняли WASM як стандарт, Ethereum у майбутньому також інтегрує WASM.
eBPF походить від BPF, надає більш багатий набір інструкцій, що дозволяє динамічно втручатися в ядро операційної системи без зміни вихідного коду. Деякі смарт-контракти, що виконуються на блокчейнах, компілюються у байт-код на основі eBPF та виконуються.
Move є новою мовою програмування смарт-контрактів, яка акцентує увагу на гнучкості, безпеці та перевіряємості. Move має на меті вирішення проблем безпеки в активах та операціях, дозволяючи чітко визначати та контролювати активи та операції. Деякі блокчейни використовують власні кастомізовані версії Move для написання смарт-контрактів.
Паралельне виконання
Паралельне виконання в блокчейні означає одночасну обробку нерелевантних транзакцій. Основним викликом для реалізації паралельного виконання є визначення, які транзакції є нерелевантними, а які незалежними. Більшість високопродуктивних Layer1 покладаються на два методи: метод доступу до стану та оптимістичну паралельну модель.
Метод доступу до стану вимагає заздалегідь знати, яку частину стану блокчейну може отримати кожна транзакція, щоб проаналізувати, які транзакції є незалежними. Деякі програми блокчейну ( смарт-контрактів ) є безстановими і потребують використання облікових записів для доступу або збереження стану. Транзакції повинні вказувати, які облікові записи будуть доступні, щоб під час обробки транзакцій можна було планувати паралельне виконання неперекриваючих транзакцій, при цьому забезпечуючи узгодженість даних.
Оптимістична паралельна модель припускає, що всі транзакції є незалежними, просто ретроспективно перевіряючи це припущення та за необхідності вносячи корективи. Деякі блокчейни використовують методи програмного забезпечення блоків для застосування оптимістичного паралельного виконання. Транзакції спочатку встановлюються в певному порядку, а потім розподіляються між різними обробними потоками для одночасного виконання. Система відстежує місця пам'яті, де змінюється кожна транзакція, перевіряє всі результати транзакцій після кожного раунду обробки, і якщо виявляється, що якась транзакція торкається місця пам'яті, що змінювалося раніше, то її результати стираються та виконуються заново.
Паралельний EVM
Паралельний EVM був запропонований ще в 2021 році, що означає підтримку одночасної обробки кількох транзакцій EVM, з метою покращення продуктивності та ефективності існуючого EVM. Наприкінці 2023 року в галузі знову згадали про паралельний EVM, що спровокувало хвилю впровадження EVM-сумісних Layer1 з технологією паралельного виконання.
Розумне визначення паралельного EVM включає три категорії:
Деякі нові проекти Layer1 використовують оптимістичну паралельну модель, що дозволяє виконувати транзакції паралельно в межах блоку для підвищення ефективності. Вони починають виконання нових транзакцій до завершення виконання попереднього кроку, відстежуючи вхідні/вихідні дані та повторно виконуючи несумісні транзакції. Статичний аналізатор коду може передбачити залежності, уникнути недійсної паралельності та, у разі невизначеності, повернутися до простої моделі.
Інші проекти використовують EVM для виконання смарт-контрактів, щоб забезпечити сумісність з EVM. Цей підхід безшовно перетворює опкоди EVM у опкоди конкретної віртуальної машини, що дозволяє проектам на Solidity використовувати переваги продуктивності та безпеки інших віртуальних машин без необхідності змінювати код.
Підсумок
Паралельні технології блокчейну - це тема, яка неодноразово обговорюється, в даний час основна увага приділяється модифікації та імітації оптимістичних моделей виконання, що не вистачає суттєвих проривів. У майбутньому можуть з'явитися більше нових проектів Layer1, які приєднаються до конкуренції EVM, деякі старі Layer1 також реалізують паралельне оновлення EVM або рішення, сумісні з EVM.
Окрім високопродуктивного EVM, у сфері блокчейну можуть з'явитися різноманітні технологічні наративи, такі як WASM, SVM та Move VM, що сприятимуть різноманітному розвитку цілої екосистеми.