Команда розробників NEAR провернула, мабуть, одну з найвражливіших інженерних операцій року: прямо під час роботи основної мережі, під реальним навантаженням, вони замінили двигун виконання смарт-контрактів. І зробили це практично непомітно для користувачів. Це не просто оновлення — це зміна фундаменту, яка залишилася за лаштунками.

Чому це було необхідно?

Роками NEAR покладався на власну реалізацію віртуальної машини NearVM, побудовану на форку двигуна Wasmer. Цей «приватний» компілятор, за словами колишнього розробника ядра мережі, був справжнім «податком» для проєкту. Кожне оновлення мови Rust, кожна нова функція безпеки лягали на плечі невеликої команди. Одного разу це навіть призвело до того, що проєкт випадково уникнув критичної вразливості в оригінальному Wasmer, просто переставши синхронізуватися з ним за день до виявлення багу. Так довго тривати не могло.

Wasmtime: галузевий стандарт на варті безпеки

Вибір припав на Wasmtime — еталонну реалізацію WebAssembly, яку підтримує альянс Bytecode Alliance. Це не просто заміна «гайки» — це перехід на стандарт, який розвивається всією спільнотою. Доказ безпеки було проведено з хірургічною точністю: вузли мережі паралельно ганяли реальний трафік через обидві віртуальні машини та звіряли кожен результат. Розбіжність за комісіями склала менше 0,002%, а швидкість виконання зросла приблизно в чотири рази.

Заборонене рішення та «бомба» уповільнення

Головна інженерна головоломка крилася не у виконанні, а в компіляції. У мережі NEAR розгортання контракту компілюється прямо всередині блоку тривалістю всього 600 мілісекунд. Проблема в тому, що в оптимізувального компілятора немає верхньої межі часу роботи. Команда створила тестовий контракт розміром 128 КБ, компіляція якого займала близько 7 секунд — цього вистачало, щоб «промахнутися» повз блок і сповільнити всю мережу.

Здавалося б, просте рішення — встановити ліміт часу на компіляцію — виявилося забороненим. Як пояснили розробники, різні валідатори витрачають на компіляцію різний час. Прикордонний контракт одні вузли прийняли б, а інші відхилили. Результат — розкол мережі через одне налаштування компілятора. Консенсус вимагає повної передбачуваності, навіть від часу збірки.

Елегантний вихід: Winch і винесення компіляції

Замість грубої сили команда застосувала інженерну елегантність. Вони впровадили Winch — однопрохідний бекенд Wasmtime — і додали до нього відсутні функції. У результаті «найгірший випадок компіляції» скоротився з 7,6 секунди до 36 мілісекунд. Більше того, компіляцію винесли на окремий тип обробників, не пов'язаний з виконувальними вузлами. Як зазначив Вадим, робота поза блокчейном дає «розкіш, недоступну протоколу».

Вердикт аналітика: Це оновлення — блискучий приклад того, як має виглядати зріла інфраструктура. NEAR не просто змінив двигун, а вирішив фундаментальну проблему безпеки та продуктивності, не привертаючи уваги та не створюючи хайпу. Для мене це сигнал про високу якість інженерної культури проєкту, що в довгостроковій перспективі набагато важливіше за гучні маркетингові заяви.