NEAR незаметно заменила движок смарт-контрактов под нагрузкой сети
<p><strong>Разработчики NEAR заменили движок, на котором работают все смарт-контракты, прямо под нагрузкой основной сети — и пользователи почти ничего не заметили. По словам бывшего разработчика ядра NEAR Вадима, в этом и заключалась цель обновления: пройти бесшумно.</strong></p>
<p>Как отметил специалист, за скупой новостью скрывается захватывающая инженерная история. По его словам, она включает и специально созданные контракты-«бомбы» для компилятора, и очевидное решение проблемы, которое на деле оказалось запретным, поскольку могло расколоть сеть надвое.</p>
<section class="c-bic-highlighted-text mb-8 md:mb-12 " id="block_6a56165e1e36e">
<div class="flex items-center gap-5 px-5 py-4 rounded-xl bg-grey-50 text-dark-grey-700">
<svg class="min-w-5 h-5 text-blue-600" fill="none" height="28" viewBox="0 0 28 28" width="28" xmlns="http://www.w3.org/2000/svg"><path d="m11.195 26.6 1.4-9.8h-4.9c-.812 0-.798-.448-.532-.924.266-.476.07-.112.098-.168L16.795 1.4l-1.4 9.8h4.9c.686 0 .784.462.658.714l-.098.21-9.66 14.476Z" fill="currentColor"></path></svg>
<div class="bic-block-highlighted-paragraph-content p3 p3--ns [&_p:last-child]:!mb-0 [&_p]:!leading-6 [&_p]:!font-body [&_p]:!text-4 [&_a]:!text-blue-600">
<p><strong><em>Хотите еще эксклюзивных новостей и аналитики? Подписывайтесь на наш</em></strong><a href="https://t.me/beincrypto_trading"><strong><em> телеграм-канал</em></strong></a><strong><em>, обсуждайте новости и делитесь мнениями о последних событиях рынка в чате!</em></strong></p>
</div>
</div>
</section>
<h2 class="bic-gutenberg-heading wp-heading wp-block-heading" id="h-зачем-near-менял-движок">Зачем NEAR менял движок</h2>
<p>Долгие годы, <a href="https://x.com/zacodil/status/2076966932553630093" rel="noreferrer noopener nofollow" target="_blank">как пояснил Вадим</a>, NEAR исполнял контракты на собственной виртуальной машине NearVM — ответвлении движка Wasmer, которое использовал, тестировал и латал только сам проект. Такой частный компилятор он назвал своего рода «налогом».</p>
<p>Суть в том, что каждое обновление языка Rust, каждая новая функция и каждое исправление безопасности ложились на плечи одной команды. По словам эксперта, проекту однажды повезло: он перестал синхронизировать свою версию прямо перед тем, как в исходном Wasmer появилась критическая уязвимость, и случайно избежал ее.</p>
<p>Заменой стал Wasmtime — отраслевой стандарт, который поддерживает объединение Bytecode Alliance. Чтобы доказать безопасность перехода, узлы сети параллельно прогоняли реальный трафик основной сети через обе виртуальные машины и сверяли каждый результат.</p>
<p>Итоги проверки, по данным команды, оказались убедительными. Результаты совпали полностью, расхождение в комиссиях составило менее 0,002%, а само исполнение ускорилось примерно в четыре раза.</p>
<p>Главная сложность, впрочем, была не в исполнении. Как пояснил Вадим, в сети NEAR развертывание контракта компилируется прямо внутри блока длиной 600 миллисекунд, а у оптимизирующего компилятора нет верхнего предела времени работы.</p>
<h2 class="bic-gutenberg-heading wp-heading wp-block-heading" id="h-запретное-решение-и-итог">Запретное решение и итог</h2>
<p>Именно это открывало путь для атаки. По словам специалиста, команда создала контракт размером 128 КБ, компиляция которого занимала около 7 секунд, — этого хватало, чтобы «промахнуться» мимо блока и замедлить всю сеть.</p>
<p>Очевидное решение — поставить ограничение по времени на компиляцию — оказалось запретным. Как объяснил Вадим, разные валидаторы тратят на компиляцию разное время, поэтому пограничный контракт одни узлы приняли бы, а другие отвергли.</p>
<p>Последствием, по его словам, стал бы раскол сети из-за одной лишь настройки компилятора. Он подчеркнул, что консенсус требует полной предсказуемости даже от времени сборки.</p>
<p>Команда нашла другой выход. <a href="https://blog.nearone.org/research/2026/07/01/replacing-nears-contract-vm-with-wasmtime.html" rel="noreferrer noopener nofollow" target="_blank">По данным разработчиков</a>, они внедрили Winch — однопроходный бэкенд Wasmtime — и добавили в него недостающие функции, после чего «худший случай компиляции» сократился с 7,6 секунды до 36 миллисекунд.</p>
<p>Как отметил Вадим, работа вне блокчейна дает «роскошь, недоступную протоколу»: компиляцию можно вынести на отдельный тип обработчиков, не связанный с исполняющими узлами. </p>
<p>Поводом для разбора от Вадима стала <a href="https://x.com/_bendersgreat_/status/2076729472720728066" rel="noreferrer noopener nofollow" target="_blank">публикация другого разработчика Антона</a>, который анонсировал само обновление. По его словам, релиз Nearcore 2.12 перевел среду исполнения NEAR с NearVM на Wasmtime, но эта работа не из тех, что попадают в заголовки СМИ. Он подчеркнул, что для разработчиков и пользователей ничего не изменилось, и в этом весь смысл: «команда закрыла критический технический долг, ничего не сломав».</p>
<p><strong><em>