Команда разработчиков NEAR провернула сложнейшую инженерную операцию: под нагрузкой живой сети был заменён движок исполнения всех смарт-контрактов. Пользователи ничего не заметили, а сеть не только не потеряла в производительности, но и получила значительный прирост скорости.
Речь идёт о замене виртуальной машины NearVM — форка движка Wasmer, который проект использовал долгие годы. Как пояснил бывший разработчик ядра NEAR Вадим, NearVM была «частным компилятором»: все обновления языка Rust, исправления безопасности и новые функции ложились исключительно на плечи команды проекта. Это создавало серьёзный «налог» на поддержку и, что критично, риск пропустить уязвимость. По словам эксперта, однажды проекту повезло — он случайно избежал критической бреши в исходном Wasmer, просто не успев синхронизироваться с релизом.
Новым фундаментом стал Wasmtime — отраслевой стандарт, поддерживаемый альянсом Bytecode Alliance. Переход был подготовлен с хирургической точностью: узлы сети параллельно прогоняли реальный трафик через обе виртуальные машины и сверяли каждый результат. Итоги тестов впечатляют: результаты исполнения совпали полностью, расхождение в комиссиях составило менее 0,002%, а скорость самого исполнения выросла примерно в четыре раза.
Главная головная боль: проблема «запретного» решения
Однако ключевая сложность крылась не в самом исполнении, а в компиляции контрактов. В сети NEAR развёртывание контракта компилируется прямо внутри блока длиной 600 миллисекунд. У оптимизирующего компилятора нет верхнего предела времени работы, что открывало путь для атаки. Команда создала тестовый контракт размером 128 КБ, компиляция которого занимала около 7 секунд — этого было достаточно, чтобы «промахнуться» мимо блока и замедлить всю сеть.
Казалось бы, очевидное решение — установить жёсткий лимит времени на компиляцию. Но Вадим объясняет, что это было запретным путём. Разные валидаторы тратят на компиляцию разное время, и пограничный контракт одни узлы приняли бы, а другие отклонили. Результатом стал бы раскол сети (форк) из-за единственной настройки компилятора. Консенсус требует полной предсказуемости, даже на уровне времени сборки.
Элегантный выход: Winch и вынос компиляции
Вместо рискованного ограничения команда нашла иной выход. Они внедрили Winch — однопроходный бэкенд Wasmtime — и добавили в него недостающие функции. Это позволило кардинально сократить «худший случай компиляции»: с 7,6 секунды до всего 36 миллисекунд. Более того, архитектура Wasmtime позволяет вынести компиляцию на отдельный тип обработчиков, не связанных с исполняющими узлами. Как отметил Вадим, «работа вне блокчейна даёт роскошь, недоступную протоколу».
Релиз Nearcore 2.12, анонсированный разработчиком Антоном, перевёл среду исполнения NEAR с NearVM на Wasmtime. Это та работа, которая не попадает в заголовки СМИ, но имеет колоссальное значение для долгосрочной устойчивости сети. Команда закрыла критический технический долг, ничего не сломав и не изменив пользовательский опыт.
Мнение эксперта: Этот апгрейд — блестящий пример зрелой инженерной культуры в криптопространстве. NEAR не просто ускорила сеть и повысила её безопасность, перейдя на поддерживаемый стандарт. Гораздо важнее то, что команда решила сложнейшую задачу консенсуса элегантно, без компромиссов. Вынос компиляции за пределы критического пути исполнения — это архитектурное решение, которое снижает нагрузку на валидаторов и повышает устойчивость сети к атакам. Для держателей токенов и разработчиков это сигнал: протокол серьёзно инвестирует в свою инфраструктуру, оставаясь незаметным для конечного пользователя. Именно такие «невидимые» обновления и создают фундамент для массового принятия.