Как проверить смарт-контракт: верификация и проверка токенов

Как проверить смарт-контракт: верификация и проверка токенов

Смарт-контракт — это программа, которая управляет денежными средствами, токенами и их правилами в блокчейне. Каждый раз, когда вы подключаете кошелёк и подтверждаете сделку, вы фактически согласны с кодом этого смарт-контракта. Поэтому умение проверять смарт-контракт перед его использованием — это обязательный для каждого пользователя навык, а не прерогатива разработчиков.

Важно понимать, что основная часть необходимой информации вам предоставлена открыто. Блокчейн-браузеры, анализаторы токенов и кода позволяют оценить риски всего за несколько минут. Ниже рассмотрим, как найти код смарт-контракта, что означает верификация, как определить мошеннический контракт и когда нужна профессиональная проверка.

Что такое смарт-контракт и почему его необходимо проверять

Смарт-контракт — это самоисполняющийся код, развернутый в блокчейне. Этот код автоматически выполняет всё задуманное: переводит токены, начисляет вознаграждения, обменивает активы и т.д. Смарт-контракты в криптовалюте функционируют в различных блокчейнах, а в блокчейне Ethereum и совместимых с ним EVM блокчейнах они пишутся на языке программирования Solidity или Vyper.

Самая важная особенность здесь заключается в том, что после развертывания код становится фактически неизменяемым. Это приносит прозрачность и надёжность, но вместе с тем говорит о невозможности незаметного исправления ошибок или добавления вредоносного кода. Смарт-контракты используются в различных областях — начиная от DeFi и эмиссии токенов, заканчивая логистикой и цепочками поставок.

Это и делает предварительную проверку кода таким важным шагом. Ведь наличие уязвимости или возможности вывода средств со стороны владельца — это то, что лучше знать заранее перед тем, как вы перечислите свои средства. Именно это поможет понять, кому вы действительно доверяете свой кошелёк.

Где найти и как просмотреть код смарт-контракта токена?

Где найти и как просмотреть код смарт-контракта токена?

Каждый токен и каждый децентрализованный проект имеют свой контрактный адрес. Просмотреть код можно, открыв данный адрес на блокчейн-сканере. В случае Ethereum это будет Etherscan, для сети BNB Chain — BscScan, для сети Tron — Tronscan. Логика работы одна и та же.

Контрактный адрес токена можно получить на децентрализованных биржах (DEX), в кошельке и на агрегаторах, таких как CoinGecko и CoinMarketCap. Здесь также можно будет увидеть, на каких платформах торгуется токен. Чрезвычайно важно получать адрес из надежного источника, так как мошенники могут создавать подделки токена с подобным названием. В результате одинаковый тикер может указывать на разные контракты.

Перейдя к контракту через адрес в браузере, стоит обратить внимание на вкладку Contract, которая содержит либо только байт-код, либо байт-код вместе с исходным кодом. Всегда блокчейн будет хранить контракт именно в байт-коде — наборе инструкций для работы виртуальной машины Ethereum. Исходный код присутствует лишь в случае публикации разработчиком.

На этой же странице есть разделы Read Contract и Write Contract. Их используют для того, чтобы просмотреть переменные и функции контракта, а также оценить число выпущенных токенов и организацию взаимодействия с ним.

Определение верификации смарт-контрактов и её цель

Верификация исходного кода смарт-контракта — это процесс, который позволяет доказать соответствие опубликованного кода байт-коду, реализованному в блокчейне. Обозреватель повторно компилирует код с указанной конфигурацией и проверяет полученное значение на совпадение с байт-кодом контракта. Если они совпадают, контракту выдается статус Verified и галочка зелёного цвета.

Когда разработчик создает смарт-контракт на платформе Ethereum, он составляет его код на языке Solidity, компилирует и развёртывает в сети и выполняет его верификацию с помощью Etherscan или подобных сервисов. В результате код смарт-контракта становится общедоступным, и любой пользователь может его просмотреть. Полная верификация заключается в соответствии метаданных, а частичная — в байт-коде.

Это важно понять: верификация говорит о прозрачности, но не о безопасности. Верифицированный контракт представляет собой открытый исходник кода, который возможно изучать, но он всё равно может содержать опасные функции.

Вот и ещё один довод, почему важен доступ к исходному коду — без него изучить контракт практически невозможно, и это риск. Неверификация — веский повод насторожиться, даже если проект выглядит довольно привлекательно.

Чек-лист для проверки смарт-контракта на скам и уязвимости

Чек-лист для проверки смарт-контракта на скам и уязвимости

Этот процесс подразделяется на две стадии: автоматическую и ручную. Сначала можно пройтись по контракту через автоматический сканер, а потом, если необходимо, перейти к анализу кода.

Автоматические сканеры токенов

Сервисы вроде Token Sniffer, Honeypot.is, De.Fi Scanner и GoPlus анализируют токены по более чем 30 параметрам и выводят полный отчёт. Одним из важных тестов является проведение сделки: сканер выполняет покупку и последующую продажу токена из настоящего кошелька и демонстрирует, удастся ли потом продать токен. Если токен невозможно продать — значит, перед вами классический ханипот.

Отличный автоматический анализатор проводит и другие проверки:

  •     блокировка ликвидности и на какое время;
  •     права владельца контракта;
  •     функции для изменения комиссии или блокировки кошелька;
  •     сходство кода с уже известными шаблонами мошенников.

Оценка большинства сканеров ведется по шкале от 0 до 100. Это удобная мера для ориентира, однако не приговор, ведь токен может получить высокий балл и оказаться небезопасным при условии того, что разработчик внедрил какое-либо скрытое управление и активировал его позже. То есть результат сканера стоит принимать за первый фильтр, а не окончательный вердикт.

Анализ кода вручную: на что обращать внимание

Если вы хоть немного знакомы со Solidity, открывайте исходный код и проверяйте права владельца. Относитесь внимательно к функции mint, черным спискам адресов, блокировке транзакций и изменению налога на продажу. Функции могут быть не опасны самостоятельно, но при наличии дурных намерений у разработчика они становятся источником мошенничества.

Также следует проверить, нельзя ли контракт модифицировать с помощью прокси. Если изменить логику контракта после его запуска возможно и управление осуществляется одним кошельком, злоумышленнику будет легко сделать это после того, как пользователи закачали в него деньги.

Необходима экспертная проверка кода?

Частичная проверка хороша, однако серьезные проекты нуждаются в более глубокой проверке. Команда Nomium занимается разработкой смарт-контрактов и их проверкой — от анализа кода и статического сканирования до формальной верификации и готовности к аудиту. Расскажите о своей задаче, и мы поможем снизить риск ещё до запуска.

Расскажите о вашей задаче →

Основные виды мошенничества со смарт-контрактами

Опыт в распознавании типичных схем позволяет оперативно замечать потенциально опасные сигналы. Более 95% вредоносных смарт-контрактов используют некоторые повторяющиеся техники.

  •     Rug pull. Вся ликвидность сразу выводится из пула, и цена токена снижается до нуля. При условии, что ликвидность не заблокирована в специальном контракте, данная схема может быть использована в любое время.
  •     Ханипот. Пользователь может купить токен, но продать его не сможет — функционал контракта заблокирует возможность продажи всем пользователям, кроме создателя.
  •     Mint scam. Разработчик имеет право в любой момент выпускать очень большое количество токенов, что делает актив неликвидным.
  •     Заблокированные кошельки и высокие комиссии. У контракта существует слишком высокий налог за реализацию, или он блокирует определённые кошельки.

Анализ реальных кейсов доказывает то, что почти все перечисленные схемы мошенничества имеют одну общую черту — чрезмерную власть создателя над контрактом и ликвидностью. Если существует несколько кошельков с большим количеством токенов, а сам разработчик является анонимным — это также повод для осторожности при покупке токена.

Инструменты и сервисы для проверки смарт-контрактов

Инструменты и сервисы для проверки смарт-контрактов

Для проверки смарт-контрактов используют несколько категорий инструментов верификации, каждая выполняет свою задачу.

  •     Блокчейн-обозреватели (Etherscan, BscScan, Tronscan). Информация о коде контракта, статусе верификации и истории транзакций, а также возможность использовать API.
  •     Сканеры токенов (Token Sniffer и другие). Быстрая проверка риска конкретного токена на децентрализованной бирже.
  •     Статический анализ (Slither и др.). Анализ кода смарт-контракта и поиск типичных уязвимостей без запуска контракта.

Отдельно следует сказать об автоматических анализаторах, основанных на машинном обучении. МЛ-модели просматривают смарт-контракт, сравнивают его с базой мошеннических схем и отмечают подозрительные участки кода. При очень важных проектах используется формальная верификация — метод математического доказательства корректности работы контракта во всех возможных состояниях, а не только в протестированных сценариях.

Почему одной проверки кода мало и когда необходим аудит

Сканеры и поверхностный анализ кода исключают тривиальные мошеннические схемы, но не выявляют логические проблемы. Многие взломы связаны с тонкими проблемами — недостаточно учтёнными векторами атак, математической ошибкой или некорректными проверками доступа, которые сложно определить на поверхностном уровне. К тому же, безопасность зависит от ликвидности и распределения токенов, а не только от кода.

Аудит смарт-контракта выполняется ручным анализом опытными специалистами, с дополнительным применением статического и динамического анализа. Аудит необходимо заказать перед запуском любого криптовалютного проекта, который будет управлять средствами пользователей: токеном, DeFi-протоколом, стейкингом или NFT-коллекцией. Аудит не обеспечивает стопроцентную безопасность, но значительно повышает её уровень.

Проверка смарт-контракта — это привычка, которая бережет ваши деньги и нервы. Минуты просмотра кода и сканера токенов перед взаимодействием, а также аудит перед развёртыванием — это дополнительные шансы повысить уровень безопасности вашего проекта и избежать типовых потерь.

Часто задаваемые вопросы

Куда записывается исходный код смарт-контракта?

Код смарт-контракта находится в блокчейне в виде байт-кода для виртуальной машины. Исходник кода смарт-контракта сохраняется не в самой сети, а на блокчейн-обозревателе, если разработчик пройдёт верификацию.

Какая же принципиальная разница между проверкой смарт-контракта и профессиональным аудитом?

Проверка — это быстрый самостоятельный просмотр кода в обозревателе блокчейна с помощью сканеров токенов, которые помогут вам отсеять явный скам. Аудит же — это глубокий анализ кода командой профессионалов, выявление скрытых уязвимостей и логических ошибок в коде. Первая процедура подходит пользователям перед покупкой токена, вторая необходима разработчикам перед выпуском смарт-контракта.

Почему недостаточно просто одного лишь анализа кода смарт-контракта?

Верифицированный код смарт-контракта это не безопасность, а лишь прозрачность. Контракт может быть очень аккуратно написан, но все равно в нем будет скрыта какая-нибудь опасная логика или уязвимость. А полную картину даст лишь анализ кода, проверка ликвидности и аудит.

Почему некоторые контракты не позволяют продать купленный токен?

Это явный признак ханипота — в код встроен механизм, позволяющий делать покупку, но закрывающий возможность продать токен для простого пользователя. Для распознавания ханипота используется симуляция сделки в сканере токена.

Как же протестировать смарт-контракт перед его развёртыванием?

Для начала разработчику нужно развернуть контракт в тестовой сети и написать модульные тесты, используя среду типа Hardhat или Foundry. Затем провести статический анализ кода и в случае работы с реальными средствами заказать профессиональный аудит.

Когда заказывать аудит смарт-контракта?

Проверку обязательно проводят перед запуском проекта в основную сеть, так как она отвечает за хранение средств пользователей. С увеличением объема средств и сложности логики увеличивается стоимость возможной ошибки, поэтому становится все более актуальным проведение проверки на аудите.

Какие есть шансы вернуть средства в случае пострадавшего от скама с использованием смарт-контракта?

В большинстве случаев такой вариант крайне маловероятен. Дело в том, что транзакции в блокчейне необратимы, а анонимность создателей скама гарантирована. Иногда помогают обращение на биржу, публичная огласка или работа профильных аналитиков, но гарантий нет. Поэтому проверка до взаимодействия остаётся главной защитой.

 

Поделиться

Скопировать ссылку Ссылка скопирована!

Оцени эту статью!

Оставьте свой комментарий

Отправить Нажимая на кнопку «Отправить» Вы даете свое согласие на обработку персональных данных и соглашаетесь с политикой конфинденциальности