Movement Labs M2: гибрид EVM + Move позволяет Solidity наследовать безопасность типов ресурсов
Эксплойты смарт-контрактов вывели более 3,1 миллиарда долларов из DeFi только за первую половину 2025 года — это уже затмило потери за весь 2024 год, составившие 2,85 миллиарда долларов. На атаки повторного входа (reentrancy attacks) пришлось 420 миллионов долларов из этих потерь в третьем квартале. Ошибки переполнения целых чисел (integer overflow) продолжают появляться в аудитах. Протокол Penpie потерял 27 миллионов долларов из-за одной атаки повторного входа в 2024 году. Каждая из этих уязвимостей является прямым следствием того, как виртуальная машина Ethereum (EVM) обрабатывает активы и диспетчеризацию функций — и каждый разработчик Solidity знает об этом.
Movement Labs делает ставку на то, что разработчикам не придется выбирать между ликвидностью Ethereum в 50 миллиардов долларов и гарантиями безопасности Move на этапе компиляции. Ее сеть M2 — первая Layer 2 на базе Move VM для Ethereum, использующая Celestia для расчетов и теперь подключенная к Polygon AggLayer — заявляет о возможности развертывания немодифицированного байт-кода Solidity в среде исполнения Move. Если это сработает, это станет самым амбициозным предложением по «обновлению безопасности» в эпоху L2 для Ethereum. Если нет, проект пополнит длинный список гибридных виртуальных машин, которые не привлекли ни одну из сторон.
Почему Ethereum продолжает терять деньги из-за одних и тех же ошибок
Причина, по которой эксплойты DeFi группируются вокруг небольшого числа первопричин, носит структурный, а не случайный характер. EVM рассматривает активы как записи в реестре — числа в сопоставлении (mapping), которые могут быть увеличены, уменьшены или скопированы без защиты на уровне языка от очевидных ошибок. Когда контракт вызывает другой контракт и получает обратный вызов до обновления собственного состояния — это атака повторного входа (reentrancy). Когда функция увеличивает баланс сверх 2^256 - 1 и он сбрасывается до нуля — это переполнение целых чисел (integer overflow). Когда ошибочная миграция случайно создает две копии одного и того же токена — это отсутствие семантики ресурсов.
Индустрия DeFi потратила десятилетие на создание уровней защиты поверх этих примитивов. Модификаторы ReentrancyGuard. Библиотеки SafeMath. Встроенные проверки переполнения в Solidity 0.8+. Формальная верификация протоколов с самыми высокими ставками. И все же в типичный год похищается более 3 миллиардов долларов — около трети из них из-за уязвимостей, которые допускает сама архитектура EVM.
Язык Move был создан командой Diem (ранее Libra) в Meta, чтобы сделать эти классы ошибок невозможными на уровне языка, а не на этапе аудита. Важны три свойства:
- Ресурсы — это линейные типы. Токен, определенный как ресурс Move, не может быть незаметно скопирован или уничтожен. Компилятор отказывается генерировать код, который делает и то, и другое. Активы — это не числа в mapping, а значения, которые должны перемещаться из одного места в другое, при этом система типов отслеживает владение на каждом этапе.
- Повторный вход структурно предотвращен. Move использует статическую диспетчеризацию, что означает, что каждый вызов функции разрешается на этапе компиляции. Контракты не могут вызывать неизвестный код во время выполнения. Классический паттерн повторного входа — когда контракт А вызывает контракт Б, который вызывает обратно А до того, как А обновил свое состояние — невозможен в Move.
- Move Prover предлагает формальную верификацию. Разработчики могут писать спецификации поведения контракта, а проувер проверяет их математически. И Aptos, и Sui поставляют рабочие кодовые базы Move, верифицированные таким образом.
До сих пор подвох заключался в том, что использование этих преимуществ требовало ухода из экосистемы Ethereum. Разработчикам Move приходилось самостоятельно привлекать пользователей, ликвидность и инструменты на Aptos или Sui. Разработчики Ethereum оставались на месте, потому что ров ликвидности был слишком глубок для перехода.