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