Sui Prover становится проектом с открытым исходным кодом: почему формальная верификация — это недостающее звено в безопасности смарт-контрактов
В 2025 году сектор DeFi потерял 3,3 миллиарда долларов из-за эксплойтов смарт-контрактов — несмотря на то, что большинство атакованных протоколов прошли аудит, а некоторые даже несколько раз. Взлом Bybit на 1,5 миллиарда долларов в феврале, эксплойт GMX на 42 миллиона долларов и бесчисленные атаки повторного входа (reentrancy) доказали неудобную истину: традиционные аудиты безопасности необходимы, но недостаточны. Когда важна математическая точность, тестирования пограничных случаев недостаточно. Их нужно доказывать.
Вот почему переход Sui Prover на открытый исходный код значит гораздо больше, чем очередной релиз на GitHub. Разработанный компанией Asymptotic и теперь свободно доступный сообществу разработчиков Sui, Sui Prover внедряет формальную верификацию — ту же математическую технику, которая гарантирует надежность систем управления полетами и архитектур процессоров — в повседневную разработку смарт-контрактов. В условиях, когда один упущенный пограничный случай может привести к потере сотен миллионов, возможность математически доказать корректность поведения кода перестает быть роскошью. Она становится необходимостью.
Парадокс аудита: когда «безопасно» — недостаточно безопасно
Ландшафт безопасности блокчейнов в 2025 году выявил тревожную закономерность. Согласно отчету Halborn «Top 100 DeFi Hacks», протоколы, прошедшие строгие аудиты, все равно становились жертвами эксплойтов. Причины были разными: уязвимости в цепочке поставок, недостатки контроля доступа, тонкие математические ошибки в экономических моделях. Но общей чертой было то, что традиционный анализ кода — будь то ручная проверка или автоматическое сканирование — не мог выявить все возможные сценарии сбоев.
Рассмотрим баг Yearn yETH и эксплойты Balancer, связанные с ошибками округления. Это не были ошибки новичков. Это были тонкие математические просчеты, которые использовали точность округления как оруж ие на тысячах потенциальных путей исполнения. Аудитор может потратить недели на проверку кода и все равно пропустить ту самую комбинацию входных данных, которая вызывает катастрофическое поведение.
Эксплойт GMX продемонстрировал еще один аспект проблемы. Уязвимость не содержалась в основной логике торговли — она возникла на стыке компонентов, где оракулы сталкивались с расчетами маржи, а логика ликвидации взаимодействовала с инфраструктурой мостов. Тестирования отдельных компонентов было недостаточно, когда сбой возникал в результате их взаимодействия.
Именно здесь формальная верификация фундаментально отличается от традиционных подходов к безопасности. Вместо проверки конкретных тестовых сценариев формальная верификация математически доказывает, что определенные свойства сохраняются при всех возможных входных данных и путях исполнения. Если вы можете доказать, что хранилище невозможно опустошить ни при каких обстоятельствах, вам не нужно беспокоиться о неясном пограничном случае, который пропустили ваши тесты.
Что на самом деле делает формальная верификация
Формальная верификация преобразует код в математические утверждения и затем доказывает, что эти утверждения соответствуют формальной спецификации ожидаемого поведения. Процесс работает следующим образом:
Во-первых, разработчики пишут спецификации, описывающие, что должен делать их код — не на языке программирования, а на специализированном языке спецификаций, предназначенном для выражения математических свойств. Для смарт-контрактов такие спецификации могут включать утверждения вроде «общее предложение токенов никогда не меняется, если не вызваны функции mint или burn» или «баланс пользователя может уменьшиться только с его явного разрешения».
Затем инструмент верификации (проверщик) — в данном случае Sui Prover, построенный на движке верификации Boogie и SMT-решателе Z3 — исчерпывающе проверяет, удовлетворяет ли код этим спецификациям при всех возможных входных данных. В отличие от тестирования, которое проверяет конкретные значения, Sui Prover оценивает код сразу для всех возможных вариантов через математические рассуждения.
Когда верификация проходит успешно, вы получаете математическое доказательство того, что указанные свойства соблюдаются. В случае неудачи проверщик обычно предоставляет контрпример — конкретные входные данные, которые нарушают спецификацию, что часто выявляет ошибки, которые тестирование могло пропустить.
Язык программирования Move, используемый в Sui и Aptos, с самого начала разрабатывался с учетом формальной верификации. Его ресурсоориентированная модель и строгая статическая типизация обеспечивают фундамент, который делает формальную верификацию более практичной, чем в таких языках, как Solidity. Язык спецификаций Move (MSL) позволяет разработчикам выражать три категории свойств:
- Инварианты структур (Struct Invariants): какое состояние структура должна поддерживать на протяжении всего своего жизненного цикла.
- Спецификации функций (Function Specifications): предусло вия, постусловия и гарантии поведения для каждой функции.
- Спецификации глобального состояния (Global State Specifications): общесистемные свойства, которые должны сохраняться при всех переходах состояний.
Sui Prover: от внутреннего инструмента к ресурсу сообщества
Компания Asymptotic изначально разработала Sui Prover для поддержки своей аудиторской работы над протоколами, строящимися на Sui. Будучи единственным поставщиком услуг формальной верификации на Sui, им требовались инструменты, способные выйти за рамки ручного анализа для математической проверки зон высокого риска в коде клиентов.
Решение открыть исходный код инструмента отражает как зрелость технологии формальной верификации, так и признание того, что безопасность является общественным благом. Когда больше разр аботчиков получают доступ к формальной верификации, вся экосистема становится более безопасной — это выгодно всем, включая аудиторов безопасности, которые могут сосредоточиться на вопросах более высокого уровня.
Sui Prover доступен на GitHub и может быть установлен через Homebrew (brew install asymptotic-code/sui-prover/sui-prover). Активная разработка продолжается, а последние задачи, открытые в январе 2026 года, касаются текущих улучшений.
Что делает Sui Prover особенно ценным, так это его интеграция с существующим процессом разработки на Sui Move. Разработчики могут добавлять спецификации в свой существующий код постепенно, сначала верифицируя критически важные функции и постепенно расширяя покрытие. Спецификации выполняют двойную роль: они служат и проверками безопасности, и документацией — любой, кто проверяет или интегрирует контракт, может прочитать спецификации, чтобы понять гарантированное поведение системы.
Свойства из реального мира, которые можно доказать
Сила формальной верификации становится осязаемой, когда вы рассматриваете конкретные свойства, которые можно доказать:
Неопустошаемые хранилища: Для DeFi-протоколов, удерживающих средства пользователей, доказательство того, что никакая последовательность операций не может опустошить хранилище без надлежащей авторизации, устраняет целые категории атак. Это не просто «мы протестировали множество векторов атак» — это математическая уверенность в том, что кража средств невозможна.
Неснижаемая цена долей: Доходные хранилища и пулы ликвидности часто должны гарантировать, что цены долей никогда не снизятся неожиданно (за исключением ожидаемого проскальзывания). Формальная верификация может доказать, что это свойство сохраняется независимо от рыночных условий или действий пользователей.
Точное сохранение баланса: Токен-контракты могут доказать, что общее предложение остается неизменным во всех операциях, что переводы перемещают именно указанную сумму и что никакие токены не создаются и не уничтожаются, кроме как через предназначенные для этого функции.
Гарантии контроля доступа: Доказательство того, что только авторизованные адреса могут вызывать привилегированные функции, независимо от состояния контракта или последовательности предыдущих операций.
Экономические инварианты: Сложные DeFi-протоколы могут доказывать свойства своих экономических моделей — соблюдение ограничений ликвидности, поддержание коэффициентов залога, невозможность извлечения неограниченной стоимости через арбитражные циклы.
Это не теоретические примеры. Разработчики в экосистеме Sui уже применили формальные спецификации для проверки DeFi-контрактов, включая AMM и системы доходного фермерства с кредитным плечом. Когда эти свойства доказываются, а не предполагаются, уровень безопасности фундаментально меняется.