Розробники NEAR здійснили одну з найризикованіших і технічно найскладніших операцій у сучасному блокчейні: вони замінили віртуальну машину, яка виконує всі смарт-контракти, прямо в працюючій основній мережі. І найдивовижніше — переважна більшість користувачів і розробників цього навіть не помітили.
Довгий час серцем NEAR була кастомна віртуальна машина NearVM — форк двигуна Wasmer. Цей «приватний компілятор» був справжнім «податком» на інновації: кожне оновлення Rust, кожна нова функція безпеки лягали тягарем виключно на команду проєкту. Проєкту одного разу неймовірно пощастило: він випадково пропустив синхронізацію з upstream якраз перед тим, як в оригінальному Wasmer виявили критичну вразливість. Але покладатися на удачу в блокчейні — неприпустима розкіш.
Вибір припав на Wasmtime — індустріальний стандарт, який підтримується Bytecode Alliance. Щоб довести безпеку переходу, вузли мережі паралельно прогоняли реальний трафік через обидві віртуальні машини, звіряючи кожен результат. Результати виявилися вражаючими: повний збіг результатів, різниця в комісіях склала менше 0,002%, а швидкість виконання зросла приблизно в чотири рази.
Заборонене рішення та інженерна кмітливість
Головна складність, однак, була не у виконанні. У мережі NEAR розгортання контракту компілюється прямо всередині блоку тривалістю 600 мілісекунд. У оптимізувального компілятора немає верхньої межі часу роботи, що відкривало шлях для атаки. Команда створила тестовий контракт розміром 128 КБ, компіляція якого займала близько 7 секунд — цього було достатньо, щоб «промахнутися» повз блок і сповільнити всю мережу.
Здавалося б, очевидне рішення — встановити жорсткий ліміт часу на компіляцію. Але це виявилося забороненим: різні валідатори витрачають на компіляцію різний час, і пограничний контракт одні вузли прийняли б, а інші — відхилили, що призвело б до розколу мережі. Консенсус вимагає повної передбачуваності навіть на рівні часу збірки.
Команда знайшла елегантний вихід. Вони впровадили Winch — однопрохідний бекенд Wasmtime — і додали до нього відсутні функції. Результат перевершив очікування: «найгірший випадок компіляції» скоротився з 7,6 секунди до 36 мілісекунд. Робота поза блокчейном дала «розкіш, недоступну протоколу»: компіляцію можна винести на окремий тип обробників, не пов'язаний з виконувальними вузлами.
Реліз Nearcore 2.12 перевів середовище виконання NEAR з NearVM на Wasmtime. Для розробників і користувачів нічого не змінилося — і в цьому весь сенс. Команда закрила критичний технічний борг, нічого не зламавши. Це той рівень інженерної культури, який рідко потрапляє в заголовки, але саме він відрізняє зрілі блокчейн-мережі від експериментальних проєктів.
Думка аналітика: Міграція на Wasmtime — це не просто банальне оновлення. Це стратегічний крок, який знімає з команди NEAR тягар підтримки форка та підключає проєкт до загальногалузевих стандартів безпеки. Прискорення в 4 рази — приємний бонус, але головне тут — усунення вектора атаки через «уповільнення компіляції» та забезпечення довгострокової стійкості мережі. Це той випадок, коли «тиха» робота говорить про зрілість проєкту голосніше за будь-які гучні заяви.