Вступ до віртуальної машини Ethereum (EVM): двигун, на якому працює кожен смарт-контракт
Я пам'ятаю, як вперше комісія за бензин з'їла половину моєї транзакції. Це був 2021 рік, я намагався щось створити на OpenSea, і мережа вимагала 87 доларів лише за обробку. У той момент я зрозумів, що насправді не розумію, що відбувається «під капотом». Чому це коштує так дорого? Куди поділися гроші? Що насправді виконувало мою транзакцію? Відповідь на всі три питання була однаковою: віртуальна машина Ethereum.
Більшість криптолюбів чули про "EVM". Набагато менше людей можуть розповісти вам, що він робить. Це важливо, тому що EVM формує майже все на Ethereum та на понад 390 блокчейнах, які запозичили його дизайн. Наразі в мережах EVM зберігається понад 190 мільярдів доларів DeFi. Якщо ви коли-небудь використовували MetaMask, обмінювалися токенами або натискали кнопку на децентралізованих додатках (dapp), то EVM виконував роботу за екраном. Вузли виконують смарт-контракти на всіх цих блокчейнах, і саме EVM забезпечує виконання кожного з цих викликів.
Тож давайте розберемося. Не з підручникової версії, а з справжньої.
Що таке віртуальна машина Ethereum і чому вона важлива
Добре, спочатку найпростіший варіант. Знаєте програми-калькулятори? Введіть 2 + 2, отримайте 4. Нудно. А тепер уявіть, що цей калькулятор працює одночасно на 10 000 телефонах. Кожен телефон отримує однакову відповідь. Якщо один телефон намагається стверджувати, що «2 + 2 = 5», інші 9 999 миттєво відхиляють його. Ніхто не контролює калькулятор, ніхто не може його вимкнути і ніхто не може його підтасувати. Це, по суті, те, що робить EVM, за винятком того, що замість математичного завдання він запускає смарт-контракти, які переміщують реальні гроші.
Комп'ютерні фахівці називають це машиною станів. Ethereum відстежує велику кількість даних: кому належать які монети, які смарт-контракти існують, скільки ефіру міститься за кожною адресою, яку інформацію зберігає кожен контракт. Все це і є «стан». Ви надсилаєте транзакцію. EVM порівнює її з поточним станом. З'являється новий стан. Старий стан плюс транзакція дорівнює новому стану. Формула на папері: Y(S, T) = S'. Готово.
Найдивовижніше — це надмірність. Ваша транзакція не потрапляє на один сервер у Вірджинії. Вона потрапляє на тисячі вузлів по всій мережі Ethereum. Кожен з них виконує обчислення самостійно. Вони порівнюють відповіді. Збіг? Круто, новий штат додається до блокчейну. Невідповідність? Погану версію відкидають. Я завжди уявляю собі тисячі бухгалтерів, які заповнюють одну й ту саму податкову декларацію. Один з них пише різне число, всі зупиняються і знаходять помилку.
І ось що відрізняє його від звичайного програмного забезпечення. Ніхто не керує EVM. Жодна компанія, що стоїть за ним. Жодної служби підтримки. Жодного адміністратора, який може непомітно скасувати угоду о 2-й ночі. Код має відкритий вихідний код, працює однаково на кожному вузлі, а довіра випливає з цього величезного обсягу згоди, а не з того, що якась авторитетна особа каже: «Довірся мені».

Як працює EVM: від надійності до виконання
Дозвольте мені розповісти про життєвий цикл смарт-контракту, адже як тільки ви побачите повний ланцюжок подій, EVM стане набагато зрозумілішим.
Крок перший: ви пишете код. Solidity – це мова програмування, яку обирають приблизно 90% розробників EVM. Вона запозичує синтаксис з JavaScript: фігурні дужки, функції, змінні – все звичне. Vyper також існує (ближче до Python, навмисно простіший), але Solidity керує всім. Ось у чому заковика для новачків: кожен рядок коду коштує реальних грошей для запуску. Немає «пісочниці». Ніяких відкатів. Ви розгортаєте контракт з помилкою, і ця помилка є постійною, якщо ви заздалегідь не створили механізм оновлення. Я зрозумів це на власному гіркому досвіді, спостерігаючи, як мій друг-розробник не може заснути через неправильно розставлений десятковий знак.
Крок другий: ваша Solidity компілюється в байт-код. Уявіть собі байт-код як машинну мову EVM. Ви пишете код, який може прочитати людина. Компілятор перетворює його на шістнадцятковий код, який EVM насправді розуміє. Усередині цього шістнадцяткового коду знаходяться операції, приблизно 150 з них. ADD виконує додавання. SSTORE зберігає дані назавжди. CALL дозволяє одному контракту взаємодіяти з іншим. Один операційний код, одне крихітне завдання. Ваш контракт об'єднує тисячі таких завдань разом.
Крок третій — це третій етап, де починається найцікавіше. Хтось викликає ваш контракт. Кожен вузол у мережі отримує транзакцію, завантажує ваш байт-код і починає послідовно обробляти коди операцій. Процесор працює на основі стеку: уявіть собі стопку пластин, де ви можете торкнутися лише верхньої. Введіть число. Введіть інше число. Виконайте ADD. Обидва числа витягуються з верхньої частини, підсумовуються, результат повертається назад. Максимальна глибина 1024 елементи, кожен шириною 256 бітів.
Кожен вузол робить це самостійно. Той самий байт-код, ті самі вхідні дані, той самий початковий стан. Та сама відповідь щоразу. Саме ця передбачуваність є причиною, чому консенсус блокчейну взагалі працює. Якби EVM могла видавати різні результати на різних машинах, весь картковий будиночок зруйнувався б.
Архітектура EVM: стек, пам'ять та сховище
EVM обробляє дані у три рівні. Ця частина важлива, оскільки безпосередньо впливає на вартість ваших транзакцій.
Стек – це робоча конячка. Усі обчислення відбуваються тут. Завантаження, виштовхування, виконання, повторення. Це швидко, дешево (близько 3 газів на операцію) і зникає після завершення виконання. Більшість операційних кодів працюють безпосередньо зі стеком.
Пам'ять схожа на блокнот. Ви можете читати та записувати дані в будь-яку позицію в ньому, що робить його гнучкішим, ніж стек, для таких речей, як рядки або великі масиви. Але пам'ять також зникає після транзакції. З точки зору вартості, вона знаходиться посередині: дорожча за стек, набагато дешевша за сховище. Вона зростає за потреби, а вартість газу зростає квадратично, чим більше пам'яті ви виділяєте.
Потім є сховище . Це дороге, і не без підстав. Сховище є постійним. Коли ваш смарт-контракт фіксує, що Аліса володіє 500 токенами, ці дані записуються у стан Ethereum і залишаються там. Кожен вузол у мережі зберігає їх. Назавжди. Новий запис у сховище коштує 20 000 газу. Оновлення коштує 5 000 газу. Для контексту, проста передача ефіру коштує загалом 21 000 газу. Тож один запис у сховище майже такий же дорогий, як ціла базова транзакція.
| Рівень даних | Як довго це триває | Вартість газу | Для чого це потрібно |
|---|---|---|---|
| Стек | Зник після страти | ~3 гази за операцію | Математика, логіка, порівняння |
| Пам'ять | Зник після транзакції | 3 газ + вартість розширення | Тимчасові дані, аргументи функцій |
| Зберігання | Постійний | 5 000–20 000 газів на запис | Баланси токенів, записи про власність, налаштування |
Якщо ви коли-небудь замислювалися, чому розгортання смарт-контракту коштує так дорого, то ось чому. Розгортання записує весь байт-код контракту та початкові дані в сховище. Це купа операцій з 20 000 газів.
Якщо це звучить знайомо, то так і має бути. Звичайні комп'ютери працюють так само. Регістри процесора швидкі, але крихітні, як і стек. Оперативна пам'ять більша та повільніша, як і пам'ять. Жорсткі диски зберігають все, але витрачають найбільше часу на запис, як і сховище. Розробники Ethereum навмисно налаштували це таким чином. Вони хочуть, щоб ви відчували фінансовий біль від постійного розміщення даних у блокчейні, тому ви зберігаєте лише те, що дійсно потрібно.
Комісії за газ на EVM: як розраховуються ціни на Ethereum
Мені потрібно поговорити про бензин, бо це водночас найрозумніша та найнезручніша частина EVM.
EVM є повною за Тюрінгом. Простою мовою: вона може виконувати будь-які обчислення, які ви їй задасте. Включаючи нескінченні цикли. Уявіть собі, що хтось розгортає контракт з while(true) і не має витрат на його запуск. Кожен вузол зависає. Блокчейн зависає. Кінець гри.
Бензин запобігає цьому. Кожен опкод має цінник. ADD коштує 3 бензини. SSTORE коштує 5000 або 20 000 бензину. Коли ви надсилаєте транзакцію, ви встановлюєте бюджет на бензин. Обчислення завершується нижче бюджету? Ви отримуєте відшкодування за те, що не використали. Досягнуто ліміту? Все скасовується, але ви все одно платите за спалений бензин. Нескінченні цикли вичерпують бюджет і вмирають.
Те, що витрачається з вашого гаманця, це кількість використаного бензину, помножена на ціну на бензин. Витрачений бензин залежить від фактичної транзакції. Ціна на бензин коливається залежно від завантаженості мережі, вимірюється в гвеях (одна мільярдна частина ефіру). Багато людей торгують? Бензин дорожчає. Тиха неділя? Бензин падає.
І ось тут історія стає цікавою. Пам'ятаєте мою монету в 87 доларів у 2021 році? Тоді бензин регулярно коштував 100-200 gwei. Влітку DeFi та бум NFT мережа працювала на повну потужність. Перенесемося на початок 2026 року, і середня ціна на бензин становить близько 3 gwei. Базовий переказ ETH коштує приблизно від 0,30 до 0,67 долара. Це на 96% менше, ніж у 2021 році.
| Рік | Середня комісія за транзакцію | Діапазон цін на газ | Що це спричинило |
|---|---|---|---|
| 2021 рік | ~$24 | 100-200 гвей | NFT-манія, DeFi-фермерство |
| 2022 рік | 5-15 доларів США | 30-80 гвей | Крах ринку, зниження активності |
| 2023 рік | 2-8 доларів США | 15-40 гвей | Врегулювання ведмежого ринку |
| 2024 рік | 0,50-2 долари | 5-15 гвей | Оновлення Dencun, EIP-4844 |
| 1 квартал 2026 року | 0,30–0,67 дол. США | ~3 гвей | Міграція L2, транзакції BLOB-блоків |
Що змінилося? Дві речі. По-перше, оновлення Dencun у березні 2024 року представило EIP-4844, який створив "блоб-сховище" для зведених даних. До появи блобів мережі другого рівня мали публікувати свої дані як дані викликів в основній мережі Ethereum, що було дорого. Блоби є тимчасовими та набагато дешевшими, що скорочує витрати на публікацію другого рівня приблизно на 95%. По-друге, більша частина активності просто перемістилася до мереж другого рівня. Коли ваш своп Uniswap працює в Arbitrum замість основної мережі, базовий рівень залишається непереповненим.
У мережах другого рівня обмін може коштувати менше копійки. Arbitrum, Base та Optimism використовують EVM, тому ваш код Solidity працює однаково. Ви просто платите лише частину бензину.

Сумісність з EVM: чому понад 390 блокчейнів скопіювали план Ethereum
Саме тут історія EVM перетворюється з цікавої на справді значущу для всієї галузі.
Коли BNB Chain запускали, Binance не винаходили нову віртуальну машину. Вони взяли EVM та налаштували її. Polygon зробили те саме. Avalanche, Fantom, Cronos, Harmony, Gnosis Chain: та ж історія. Навіть спеціально створені збірні схеми другого рівня, такі як Arbitrum та Optimism, запускають EVM безпосередньо. Результатом є екосистема з понад 390 сумісних з EVM ланцюгів, хоча лише близько 40-50 мають значну щоденну активність.
Чому варто копіювати Ethereum, а не створювати щось нове? Три причини, всі вони практичні.
По-перше, розробники. У світі понад 20 000 розробників Solidity. Запустіть ланцюжок EVM, і кожен з них зможе випускати код з першого ж дня, не вивчаючи нову мову програмування. Solana використовує Rust. Aptos та Sui використовують Move. Цим ланцюжкам довелося створювати свої пули розробки з нуля. Ланцюжок EVM повністю пропускає цю проблему.
По-друге, безкоштовні інструменти. MetaMask, Hardhat, Foundry, Ethers.js, OpenZeppelin, Etherscan. Весь інструментарій Ethereum працює на будь-якому ланцюжку EVM без жодних змін. Той самий гаманець. Той самий фреймворк для тестування. Той самий дослідник блоків. Це економить роки роботи.
По-третє, DeFi рухається разом з EVM. Uniswap, Aave, Curve, SushiSwap. Усі вони працюють на п'яти або більше ланцюжках EVM. Контракти копіюються з Ethereum в Polygon, Arbitrum і BNB Chain. Той самий код, той самий аудит, та сама модель безпеки. Мости з'єднують ліквідність. EVM – це клей.
Але копіювання EVM означає, що ви також копіюєте її проблеми. Одна транзакція за раз. 256-бітні слова на 64-бітних процесорах, що додає накладних витрат. Газова система, яка працює, але додає складності, яку пропускають новіші віртуальні машини. SVM Solana виконує транзакції паралельно. MoveVM має модель ресурсів, яка знищує цілі категорії помилок. FuelVM запозичує ідеї із сучасного дизайну процесорів.
Чи хтось із них встиг впровадити EVM? Ні. Навіть близько не. Кращі технології на папері не перевершують мережеві ефекти в реальному світі. EVM має найбільше розробників, найбільше активних протоколів, найбільше перевірених шаблонів коду та найбільше шрамів від злому та виживання. У криптовалюті, де один баг може призвести до дев'ятизначних витрат, шрами важать більше, ніж бенчмарки.
Стан Ethereum та як EVM підтримує консенсус
Ця частина стає більш технічною, але вона важлива. Вона пояснює, чому вузлам Ethereum потрібне справжнє обладнання та чому збереження даних у блокчейні коштує чимало.
Ethereum має величезну таблицю пошуку. Дайте йому будь-яку адресу, і він поверне баланс ефіру, nonce (кількість транзакцій), а для адрес контрактів – повний байт-код плюс усі збережені дані. Мільйони адрес. Сотні гігабайт. Це стан Ethereum.
Все це знаходиться в дереві Меркла Патрісії. Короткий варіант: це дерево, де кожна гілка отримує свій власний хеш, і всі хеші зводяться в один кореневий хеш на вершині. Цей кореневий хеш знаходиться в кожному заголовку блоку. Перемістіть 0,001 ETH між двома гаманцями, і кореневий хеш повністю зміниться. Валідатори перевіряють блоки, запускаючи кожну транзакцію, обчислюючи результуючий кореневий хеш і порівнюючи його. Той самий хеш? Блок хороший. Різний хеш? Блок відхиляється.
Запуск вузла означає оновлення всього цього дерева з кожним блоком. Це насправді найбільша проблема масштабування Ethereum. Сама віртуальна машина досить швидка. Стан просто продовжує зростати. Кожен SSTORE додає новий листок до дерева. Кожен новий контракт накопичує більше даних. Дерева Verkle можуть вирішити це. Команда Ethereum створювала їх кілька років. Вони дозволили б вузлам перевіряти блоки, не зберігаючи повний стан. Якщо Verkle вийде в експлуатацію, запуск вузла стане набагато дешевшим, і більше людей зможуть приєднатися до набору валідаторів.
Реалізація EVM: одна специфікація, багато клієнтів
Більшість людей не усвідомлюють цього: «EVM» — це специфікація, а не програма. Це документ, який говорить: «завдяки цим вхідним даним, створити ці вихідні дані». Будь-хто може створити власну версію будь-якою мовою програмування, якщо вона відповідає специфікації.
Geth — головний. Написаний на Go. Працює на більшості вузлів Ethereum. Але є й інші: Nethermind (C#), Besu (Java, створений для підприємств), Erigon (Go, оптимізований для диска) та Reth (Rust, створений Paradigm). Основні розробники насправді хочуть такого різноманіття. Чому? Якщо 95% вузлів працюють на Geth, а Geth видає критичну помилку, то вся мережа в біді. Розподілена по п'яти клієнтам, помилка вражає лише 20% вузлів. Решта продовжують працювати.
Мережі другого рівня додають свою родзинку. Arbitrum створив модифіковану версію під назвою Arbitrum VM. Оптимізм прагне до «еквівалентності EVM», ідентичної поведінки байт в байт. zkSync Era йде далі. Він компілює байт-код EVM у формат, який працює з доказами з нульовим розголошенням. Зовсім інший шлях виконання «під капотом». Але для розробника Solidity? Він все одно виглядає однаково. Той факт, що радикально різні архітектури мають однакове обличчя для розробників, чесно кажучи, є однією з найбільш недооцінених рис EVM.
Як розробнику, вам здебільшого байдуже, який клієнт обробляє ваш контракт. Ви пишете Solidity, компілюєте в байт-код, розгортаєте. Специфікація гарантує однаковий результат скрізь.
Розробка смарт-контрактів на EVM: з чим насправді мають справу розробники
Веб-розробники, які намагаються створювати для EVM, отримують грубий дзвінок тривоги. Помилки коштують реальних грошей. Ви не можете виправити продакшн. Якщо ви надішлете несправний контракт, він залишиться несправним, якщо ви не сплануєте його заздалегідь.
Solidity базується на понад 90% контрактів EVM. Інструменти стали якісними. Hardhat надає JavaScript/TypeScript з плагінами. Foundry використовує Rust, працює швидше та дозволяє писати тести в самому Solidity. Обидва варіанти запускають локальну EVM, тож ви можете тестувати, не переплачуючи. Я б обрав Foundry для будь-якого нового проекту. Як тільки ваш набір тестів перевищить сотню, розрив у швидкості стане очевидним.
Стандарти токенів підтримують порядок у екосистемі. ERC-20 охоплює взаємозамінні токени, такі як USDT, LINK, UNI. ERC-721 призначений для NFT. ERC-1155 обробляє контракти з кількома токенами. ERC-4626 створює сховища. Усі вони працюють однаково на кожному ланцюжку EVM. Напишіть свій контракт один раз, розгорніть його на Ethereum, Arbitrum, Base, Polygon. Той самий код, та сама поведінка.
Безпека? Жорстка. Атаки з реентранцієм за ці роки виснажили сотні мільйонів. Злом DAO у 2016 році розділив Ethereum на дві частини через помилку реентранції, яка дозволила зловмиснику зациклити виведення коштів та знешкодити 60 мільйонів доларів. Переповнення цілих чисел було лихом, поки Solidity 0.8 не додав перевірки за замовчуванням у 2021 році. Помилки контролю доступу досі з'являються в перевіреному коді професійних команд. Такі інструменти, як Slither, Mythril та Certora, виявляють деякі помилки, але ніщо не замінить належного аудиту. І навіть аудити пропускають деякі речі. Так воно і є.
Розгортання сьогодні: базовий токен ERC-20 коштує 5-20 доларів в основній мережі. Повноцінний протокол DeFi? Можливо, кілька сотень доларів. У мережах L2? Копійки. Не дивно, що 65% нових контрактів у 2025 році було укладено на рівні 2.
Екосистема EVM у 2026 році: домінування другого рівня та що буде далі
Три роки тому мережі другого рівня мали 4 мільярди доларів TVL. Зараз ця цифра перевищує 50 мільярдів доларів. Тільки Arbitrum має 16,6 мільярда доларів. Базова сума становить 10 мільярдів доларів. Оптимізм – 6 мільярдів доларів. Цей зсув стався тому, що комісії другого рівня майже впали до нуля. Свопи менш ніж за копійки на більшості зведених операцій. Навіть комісії основної мережі впали нижче долара. Раніше казали, що Ethereum коштує занадто дорого, і всім слід використовувати Solana. Ця лінія вже не така, як раніше.
Абстракція облікового запису (ERC-4337) непомітно змінила правила гри у 2025 та 2026 роках. Розумні гаманці дозволяють користувачам розплачуватися за бензин у стейблкоїнах, об'єднувати кілька дій в одну транзакцію та відновлювати облікові записи без сід-фраз. Якщо ви коли-небудь бачили, як ваш друг лютував, виходячи з криптовалюти, бо MetaMask змусив його схвалити два спливаючі вікна для одного свопу, ви розумієте, чому це важливо. Розрив між криптогаманцем та звичайним банківським додатком скорочується.
Що далі? Я спостерігаю за кількома речами. EOF (EVM Object Format) очищає байт-код, тому валідація дешевша, а інструменти працюють краще. Дослідження паралельного виконання можуть дозволити EVM обробляти незалежні транзакції одночасно, а не одну за одною. Це ще на ранній стадії, але якщо це спрацює, пропускна здатність зросте, нічого не змінюючи для розробників. А дерева Веркла все ближче до випуску.
Однак конкуренція реальна. SVM від Solana просуває пропускну здатність. MoveVM представив шаблони, які запобігають цілим категоріям помилок. Але подивіться на цифри. Екосистема EVM містить понад 190 мільярдів доларів у DeFi TVL. Щомісячний обсяг DEX перевищує 400 мільярдів доларів. Понад 20 000 розробників будують на ній. Майже 11 років бойового тестування. Новіші віртуальні машини виграють бенчмарки. EVM перемагає в усьому, що дійсно важливо, коли на кону реальні гроші.