EVM є основною частиною Ethereum, відповідальною за виконання смарт-контрактів та обробку транзакцій. Як обчислювальний двигун, EVM надає абстракцію обчислень і зберігання, подібно до специфікації Java Virtual Machine. EVM виконує власний набір байт-коду, який зазвичай компілюється з Solidity.
EVM є майже тюрінговою машиною. "Майже" тому, що всі кроки виконання споживають обмежені ресурси Gas, що запобігає можливим безкінечним циклам, які можуть призвести до зупинки всієї платформи Ethereum.
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 у майбутньому, щоб забезпечити більш ефективний та простий рівень виконання Ethereum, що робить його придатним для повноцінної децентралізованої обчислювальної платформи.
eBPF є еволюцією BPF, яка спочатку була призначена для ефективного фільтрування мережевих пакетів. Вона забезпечує більш розширений набір інструкцій, що дозволяє здійснювати динамічне втручання в ядро операційної системи та змінювати його поведінку без зміни вихідного коду. Усі смарт-контракти, виконувані на певному блокчейні, компілюються в байт-код SBF (на основі eBPF) і виконуються в його блокчейн-мережі.
Move є новою мовою програмування смарт-контрактів, яка акцентує увагу на гнучкості, безпеці та перевіряності. Мова Move призначена для вирішення проблем безпеки в активах та транзакціях, щоб активи та транзакції могли бути строго визначені та контрольовані. Байтовий код 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 тільки трьома наступними категоріями:
Вдосконалення паралельного виконання Layer1, сумісного з EVM, без використання технології паралельного виконання;
Використовує технологію паралельного виконання EVM-сумісного Layer1;
Використано технологію паралельного виконання в рішенні, сумісному з EVM, на Layer 1, що не є сумісним з 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 розробляють свої оптимізаційні рішення, спираючись на недолік нездатності Ethereum до паралельної обробки. Тут ми обговоримо лише оптимізацію виконавчого рівня, тобто віртуальної машини та паралельного виконання.
Віртуальна машина
EVM спроектована як 256-бітна віртуальна машина, метою якої є полегшення обробки хеш-алгоритмів Ethereum. Проте для фактичного виконання EVM комп'ютери повинні відображати 256-бітні байти на локальну архітектуру для виконання смарт-контрактів, що робить всю систему дуже неефективною та непрактичною. Тому при виборі віртуальної машини високопродуктивні Layer1 частіше використовують віртуальні машини на основі WASM, eBPF байт-коду або Move байт-коду, а не EVM.
WASM є форматом байт-коду, який має малий об'єм, швидко завантажується, портативний і заснований на механізмі безпеки пісочниці. Розробники можуть використовувати різні мови програмування для написання смарт-контрактів, а потім компілювати їх у байт-код WASM і виконувати. WASM вже був прийнятий багатьма проектами блокчейн як стандарт, і Ethereum також інтегрує WASM у майбутньому, щоб забезпечити більш ефективний та простий рівень виконання Ethereum, що робить його придатним для повноцінної децентралізованої обчислювальної платформи.
eBPF є еволюцією BPF, яка спочатку була призначена для ефективного фільтрування мережевих пакетів. Вона забезпечує більш розширений набір інструкцій, що дозволяє здійснювати динамічне втручання в ядро операційної системи та змінювати його поведінку без зміни вихідного коду. Усі смарт-контракти, виконувані на певному блокчейні, компілюються в байт-код SBF (на основі eBPF) і виконуються в його блокчейн-мережі.
Move є новою мовою програмування смарт-контрактів, яка акцентує увагу на гнучкості, безпеці та перевіряності. Мова Move призначена для вирішення проблем безпеки в активах та транзакціях, щоб активи та транзакції могли бути строго визначені та контрольовані. Байтовий код 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 тільки трьома наступними категоріями:
Вдосконалення паралельного виконання Layer1, сумісного з EVM, без використання технології паралельного виконання;
Використовує технологію паралельного виконання EVM-сумісного Layer1;
Використано технологію паралельного виконання в рішенні, сумісному з EVM, на Layer 1, що не є сумісним з 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, можливо, заслуговують на більшу увагу.