Clear Sky Science · ru
DIVE: набор данных уязвимостей смарт‑контрактов с множественной маркировкой
Почему безопасные цифровые соглашения важны
Каждый день через «смарт‑контракты» — фрагменты кода, автоматически выполняющие сделки в блокчейнах вроде Ethereum — проходят миллиарды долларов. Когда в этих цифровых соглашениях скрываются ошибки, последствия могут быть серьёзными: замороженные средства, похищенные активы и утрата доверия к новым финансовым системам. В этой статье представлен DIVE, крупный и тщательно собранный набор данных, который помогает исследователям надёжнее находить и понимать слабые места в смарт‑контрактах, чтобы цифровые соглашения, лежащие в основе криптовалют и децентрализованных приложений, стали безопаснее для всех.

Как живут и меняются цифровые контракты
Смарт‑контракты проходят несколько этапов жизненного цикла. Они появляются как читаемый исходный код, написанный разработчиками, затем компилируются в инструкции, понятные машине, и отправляются в транзакции развёртывания в блокчейн. После подтверждения контракт получает постоянный адрес и его код становится неизменным, однако внутреннее состояние по‑прежнему может меняться по мере взаимодействия пользователей. На этом пути формируются разные типы данных — исходный код, байткод, настройки и записи транзакций — которые содержат подсказки о возможных дефектах. DIVE создан вокруг этого представления жизненного цикла: он собирает признаки как до развёртывания (код и конфигурация), так и после развёртывания (поведение в цепочке), чтобы дать более полное представление о каждом контракте.
Почему старые наборы данных были недостаточны
Ранние коллекции смарт‑контрактов помогли запустить подходы машинного обучения для поиска уязвимостей, но имели серьёзные ограничения. Многие содержали лишь небольшое число контрактов, фокусировались на узком временном окне или конкретных версиях компилятора либо включали только один вид данных — например, исходный код или байткод, но не оба. Некоторые рассматривали уязвимости так, будто в контракте может быть только один тип ошибки, хотя на практике контракты часто содержат несколько проблем одновременно. Метки не всегда были последовательными: разные исследования использовали разные схемы именования и опирались на один‑два инструмента без общего стандарта. Всё это затрудняло сравнение результатов между статьями и построение детекторов, хорошо обобщающих за пределы одного исследования.
Что содержит набор данных DIVE
DIVE объединяет 22 330 реальных контрактов Ethereum, развёрнутых в период с 2016 по 2024 год и охватывающих основные версии языка Solidity. Каждый контракт представлен сотнями признаков. До развёртывания DIVE фиксирует такие параметры, как версия компилятора, настройки оптимизации, использование внешних библиотек, структура публичного интерфейса (функции и события), метрики сложности кода и паттерны в низкоуровневых инструкциях, использованных для создания контракта. После развёртывания добавляется информация из транзакции запуска — расход газа, переданная сумма, время и позиция в блоке — а также паттерны инструкций в рантайм‑коде контракта. Такое двойное представление позволяет исследовать, как выборы в коде и поведение в цепочке связаны с безопасностью.
Как идентифицируются уязвимости
Для решения, какие контракты уязвимы, DIVE не полагается на один инструмент или простое большинство голосов. Вместо этого он запускает шесть разных анализаторов, каждый со своими сильными сторонами, и пропускает их выводы через стандартизированную схему. Результаты инструментов сопоставляются с восемью хорошо известными категориями из списка DASP Top 10, такими как ошибки повторного входа (reentrancy), нарушение контроля доступа, арифметические ошибки, риски отказа в обслуживании, плохая случайность, фронт‑раннинг, манипуляции временем и необработанные низкоуровневые вызовы. Затем применяется «мощностная» схема голосования, которая по‑категориям определяет, насколько доверять каждому инструменту. Кроме того, выполняется вторичная валидация, проверяющая, подтверждается ли отмеченная проблема самим кодом контракта — например, что предполагаемая арифметическая ошибка не уже защищена современным контролем компилятора или библиотеками безопасности. Эта дополнительная проверка устраняет многие ложные срабатывания, особенно для предупреждений об отказах в обслуживании и проблемах, связанных со временем.

Как можно использовать этот ресурс
Поскольку DIVE имеет множественную маркировку, один контракт может иметь несколько типов уязвимостей, что отражает, как ошибки реального мира группируются и взаимодействуют. Набор данных поддерживает широкий спектр исследований: бинарную и многоклассовую классификацию, обучение с множественной маркировкой и многозадачное обучение, трансферное обучение между версиями компилятора или годами, а также эксперименты, сравнивающие ценность информации до развёртывания и после него. Он также документирует, как часто разные уязвимости встречаются вместе, показывая, что некоторые, например reentrancy и проблемы контроля доступа, склонны сосуществовать, тогда как другие реже и более изолированы. Эти закономерности стимулируют применение более продвинутых методов обучения, моделирующих взаимосвязи между типами багов, вместо их раздельной обработки.
Что это значит для повседневных пользователей
Для большинства людей смарт‑контракты — невидимая инфраструктура за торговыми приложениями, играми, кредитными платформами и другими блокчейн‑сервисами. Набор данных DIVE не исправляет уязвимости напрямую, но он предоставляет подробные и хорошо промаркированные данные, необходимые для обучения и объективного тестирования более надёжных средств обнаружения. Эти инструменты, в свою очередь, помогут разработчикам раньше находить проблемы и помогут аудиторам расставлять приоритеты в проверках. Поскольку фреймворк открыт и его можно запускать вновь на новых контрактах со временем, DIVE предлагает живую основу для повышения безопасности цифровых соглашений — снижая риск того, что обычные пользователи пострадают из‑за скрытых ошибок в коде, на который они полагаются.
Цитирование: Alsunaidi, S.J., Aljamaan, H. & Hammoudeh, M. DIVE: A Multi-Label Smart Contract Vulnerability Dataset. Sci Data 13, 664 (2026). https://doi.org/10.1038/s41597-026-07025-5
Ключевые слова: безопасность смарт‑контрактов, Ethereum, уязвимости блокчейна, набор данных машинного обучения, DASP Top 10