Два месяца назад я потерял $340 на фарминге в протоколе, который обещал 87% APY. Контракт выглядел легитимно — TVL $2M, интерфейс копировал Uniswap, даже аудит от неизвестной конторы прилагался. Через неделю разработчики обновили логику через proxy и вывели всю ликвидность. Классический rug pull, который я мог предотвратить за 3 минуты проверки.
Красные флаги DeFi — это специфические признаки в коде смарт-контракта, которые сигнализируют о потенциальной опасности. Ты не обязан быть аудитором безопасности, чтобы их заметить. Достаточно знать два паттерна, которые встречаются в 80% скамов: прокси-контракты с возможностью изменения логики и отсутствие верификации исходного кода. В этом материале разберу оба флага на реальных примерах из BNB Chain и zkSync, покажу где смотреть и что именно искать.
Что такое красные флаги в DeFi-протоколах
Красный флаг — это технический индикатор в смарт-контракте, который повышает риск потери средств. Не каждый протокол с красными флагами обязательно скам, но каждый скам содержит минимум один такой флаг.
Когда я анализирую новый протокол для фарминга, я трачу ровно 5 минут на первичный скрининг. Если нахожу хотя бы один критический красный флаг — закрываю вкладку и забываю о проекте навсегда. Звучит жёстко, но за три года активного использования DeFi эта стратегия сэкономила мне больше денег, чем любой альфа-сигнал.
Почему новички игнорируют базовую проверку
Типичная логика начинающего DeFi-пользователя выглядит так: "Если протокол дал мне approve и я получил LP-токены — значит всё работает, можно фармить". Это фундаментальная ошибка. Approve даёт контракту право распоряжаться твоими токенами в любой момент. Если контракт содержит скрытую функцию для вывода средств — твои токены исчезнут, когда разработчик её активирует.
Я вижу три причины, почему люди пропускают базовую проверку:
Временные затраты. Кажется, что изучение контракта займёт часы. На самом деле критические флаги видны за 2-3 минуты даже без знания Solidity.
Иллюзия безопасности через TVL. "В протоколе $5M залочено — значит люди доверяют". TVL набирается за неделю рекламы в крипто-каналах, а исчезает за одну транзакцию.
FOMO на доходность. Когда видишь 200% APY, мозг отключает критическое мышление. Ты думаешь "сейчас зайду быстро, проверю потом". Потом не наступает.
Два критических флага которые нужно знать
Из десятков потенциальных индикаторов опасности я выделяю два абсолютных deal-breaker'а:
- Proxy-контракты с upgradeable логикой — контракт может менять свою функциональность после деплоя
- Отсутствие верификации исходного кода — в блокчейне доступен только байт-код, читать который невозможно
Эти два паттерна встречались в 100% протоколов, которые я видел в списках rug pull'ов за 2024 год. Не 90%, не 95% — ровно 100%. Если контракт содержит оба флага одновременно — это даже не красный флаг, это сирена с мигалками.
Proxy-контракты — первый критический флаг
Прокси-контракт работает как прокладка между твоим кошельком и реальной логикой протокола. Когда ты вызываешь функцию на proxy, он перенаправляет вызов на другой контракт — implementation. Сама по себе эта архитектура легитимна и используется в крупных протоколах типа AAVE или Compound для обновления функциональности.
Проблема возникает когда proxy upgradeable — то есть владелец может в любой момент изменить адрес implementation-контракта. Сегодня proxy отправляет твои токены в пул ликвидности, завтра — на кошелёк разработчика.
Как обнаружить proxy в блокчейн-эксплорере
Недавно я тестировал фарминг-пул на Liquid Finance в BNB Chain. Процесс был стандартный: добавил ликвидность USDT/BNB на PancakeSwap, получил LP-токен, отправил его в фарминг-контракт. APY обещали 127%, что уже должно было насторожить.
Открываю транзакцию депозита LP-токенов в BscScan. Перехожу на адрес контракта, куда отправил токены. И вижу в самом верху страницы надпись крупными буквами: "Transparent Upgradeable Proxy".
Это первый и самый очевидный индикатор. Если в названии контракта есть слова:
- Upgradeable Proxy
- TransparentUpgradeableProxy
- UUPS Proxy
- Beacon Proxy
Ты смотришь на контракт с изменяемой логикой. Копаю дальше — в блоке "More Info" вижу поле "Implementation". Это адрес контракта, который фактически исполняет код. Кликаю на него.
Разница между proxy и implementation
Proxy-контракт обычно содержит минимальный код — 50-100 строк на Solidity. Его задача простая: принять вызов функции и передать её implementation'у. Вся бизнес-логика живёт в implementation-контракте.
📢 Больше практических разборов — в канале «Сергей Зиненко | DeFi-Гедонист». Подписывайтесь, чтобы не пропустить.
Вот что я увидел в случае Liquid Finance:
Proxy-контракт (тот, куда я отправил LP-токены):
- Размер кода: 847 байт
- Функций: 4 (fallback, receive, upgradeTo, admin)
- Баланс: $127,000 в различных токенах
Implementation-контракт (куда proxy передаёт вызовы):
- Размер кода: 14,523 байт
- Функций: 28 (deposit, withdraw, harvest, emergencyWithdraw и т.д.)
- Баланс: 0
Видишь проблему? Все деньги лежат на proxy, но логика находится в implementation. Владелец proxy может вызвать функцию upgradeTo(новый_адрес) и переключить implementation на контракт, который просто выводит все токены на его кошелёк.
Кто может обновить proxy-контракт
Критический вопрос: кто контролирует функцию обновления? В большинстве upgradeable proxy есть роль ProxyAdmin или Owner. Этот адрес имеет право вызвать upgradeTo.
В BscScan я ищу вкладку "Read as Proxy" (если контракт верифицирован) и проверяю функцию admin() или owner(). Возвращает адрес кошелька? Красный флаг. Это означает что один человек (или группа) может изменить логику в любой момент.
Более безопасный вариант — когда admin является multi-sig контрактом (например Gnosis Safe) с 5-7 подписантами и threshold 4-5. Ещё лучше — когда права на upgrade переданы DAO через Timelock контракт с задержкой 48-72 часа. Это даёт пользователям время вывести средства если они не согласны с изменениями.
В случае Liquid Finance admin был обычным EOA (externally owned account) — то есть приватный ключ в руках одного человека. Для протокола с TVL $4M это неприемлемо.
Легитимные примеры использования proxy
AAVE v3 использует proxy-архитектуру для всех core-контрактов. Но там:
- ProxyAdmin контролируется DAO через governance-контракт
- Любое обновление требует 7-дневного голосования + 2-дневный timelock
- История всех upgrades публична и аудирована
- Community может ветировать обновление если набирает кворум
Compound Finance тоже использует proxy, но с Timelock на 48 часов. Когда они обновляют implementation, ты видишь pending транзакцию в Timelock и можешь вывести ликвидность до активации.
Разница между AAVE и безымянным фарминг-пулом не в наличии proxy, а в том кто и как контролирует обновления.
Таблица: Типы proxy-контрактов и уровень риска
| Тип Proxy | Кто обновляет | Timelock | Риск | Пример |
|---|---|---|---|---|
| Transparent Proxy | EOA владелец | Нет | Критический | Большинство скамов |
| UUPS Proxy | EOA владелец | Нет | Критический | Мелкие проекты |
| Transparent Proxy | Multisig 3/5 | 24h | Высокий | Средние протоколы |
| Beacon Proxy | DAO governance | 48h+ | Средний | Curve, Yearn |
| Transparent Proxy | DAO + Timelock | 7 дней | Низкий | AAVE, Compound |
| Immutable (не proxy) | Никто | N/A | Минимальный | Uniswap v2 |
Если видишь Transparent или UUPS Proxy без multisig или DAO — это автоматическое исключение из рассмотрения. Я не кладу средства даже для теста.
Неверифицированный код — второй критический флаг
Верификация контракта — это процесс когда разработчик загружает исходный код на Solidity в блокчейн-эксплорер (BscScan, Etherscan, etc). Эксплорер компилирует этот код и сравнивает результат с байт-кодом, который уже находится в блокчейне. Если совпадает — появляется зелёная галочка "Contract Source Code Verified".
Без верификации ты видишь только байт-код — машинные инструкции в шестнадцатеричном формате. Технически можно его декомпилировать, но результат будет нечитаемой кашей без имён переменных и комментариев.
Пример из zkSync Era
Позавчера тестировал новый DEX Excalibur на zkSync Era — L2-решение над Ethereum. Интерфейс приличный, APY на паре ETH/USDC показывал 89%. Складываю 0.5 ETH + $1,000 USDC, получаю LP-токен, отправляю в farming контракт.
Открываю транзакцию в zkSync Era Block Explorer (explorer.zksync.io). Структура немного отличается от привычного Etherscan, но логика та же. Вижу что мои LP-токены ушли на адрес фарминг-контракта. Кликаю на адрес.
Страница контракта открывается, показывает баланс (там уже $340K в разных токенах). Листаю вниз до вкладки "Contract" и вижу вместо читаемого кода Solidity просто стену байт-кода:
0x608060405234801561001057600080fd5b50600436106101585760003560e01c80636f...
И так на несколько тысяч символов. Никаких функций, никаких переменных — просто hex.
Что означает отсутствие верификации
Неверифицированный контракт это чёрный ящик. Ты можешь вызывать функции через интерфейс, но не понимаешь что они делают. Сайт показывает кнопку "Deposit", но что происходит когда ты на неё жмёшь — неизвестно.
Легитимный протокол верифицирует контракт сразу после деплоя. Процесс занимает 5-10 минут: загрузить исходники, указать версию компилятора, нажать кнопку. Если разработчик этого не сделал — у него есть причина скрывать код.
Я видел только три объяснения отсутствия верификации:
- Контракт содержит вредоносные функции (backdoor для вывода токенов)
- Код украден у другого проекта и разработчики боятся палева
- Команда некомпетентна настолько что не умеет верифицировать
Все три варианта означают одно — не лезь туда со своими деньгами.
Как проверить верификацию в разных эксплорерах
Etherscan (Ethereum, Polygon, Arbitrum, Optimism)
- Открой адрес контракта
- Вкладка "Contract"
- Если верифицирован — увидишь "Contract Source Code" с кодом на Solidity
- Если нет — "Contract Creation Code" с байт-кодом
BscScan (BNB Chain)
Аналогично Etherscan. Плюс вкладка "Read Contract" и "Write Contract" появляется только для верифицированных контрактов.
zkSync Era Explorer
Интерфейс беднее. Ищи раздел "Code". Верифицированный контракт покажет исходник, неверифицированный — только bytecode.
Avalanche C-Chain (SnowTrace)
Копия интерфейса Etherscan, проверка идентична.
В моей практике 95% легитимных протоколов верифицируют все контракты в течение 24 часов после запуска. Если прошла неделя а верификации нет — это сигнал уровня "беги".
Можно ли доверять частично верифицированным контрактам
Иногда встречаю ситуацию: proxy-контракт верифицирован, а implementation — нет. Или наоборот. Это столь же опасно как полное отсутствие верификации.
Помни: когда ты взаимодействуешь с proxy, реально исполняется код implementation. Если implementation не верифицирован — ты не знаешь что произойдёт с твоими токенами.
Обратная ситуация (верифицирован только implementation) чуть менее опасна, но всё равно красный флаг. Proxy может содержать скрытую логику для перехвата вызовов или изменения параметров.
Правило простое: все связанные контракты должны быть верифицированы. Proxy, implementation, библиотеки которые они импортируют — всё должно быть открыто.
Как проверить контракт за 3 минуты: пошаговый чеклист
Когда я нахожу новый фарминг-пул или лендинг-протокол, я трачу ровно 180 секунд на скрининг. Если контракт проходит — углубляюсь дальше (проверяю tokenomics, команду, аудиты). Если нет — закрываю вкладку.
Вот мой точный алгоритм:
Минута 1: Базовая информация
- Открываю сайт протокола, нахожу адрес main контракта (обычно в документации или футере)
- Вбиваю адрес в блокчейн-эксплорер соответствующей сети
- Смотрю возраст контракта (Contract Creation). Если меньше 7 дней — жёлтый флаг, нужна повышенная осторожность
- Проверяю количество транзакций. Если меньше 100 за неделю — протокол мёртв или только запустился
Минута 2: Проверка на proxy
- Читаю название контракта вверху страницы. Слова Proxy, Upgradeable, UUPS в названии — немедленный стоп
- Если proxy нет в названии, открываю вкладку "Contract" и ищу функции типа
upgradeTo,implementation,admin - Если нашёл — проверяю кто владелец/admin через "Read Contract". EOA адрес — красный флаг
- Если admin является Timelock или Multisig — читаю параметры (сколько подписей нужно, какая задержка)
Минута 3: Верификация и код
- Вкладка "Contract" — должна быть секция "Contract Source Code" с читаемым Solidity
- Если вижу только байт-код — закрываю вкладку, больше никаких проверок не нужно
- Если код верифицирован — пробегаю глазами по функциям. Ищу слова:
onlyOwner,pause,withdrawAll,emergencyWithdraw - Функции с модификатором
onlyOwnerдолжны быть логичными (pause/unpause, fee изменения). Если вижуonlyOwnerна функции типаtransferAllTokens— красный флаг
Этот чеклист отсеивает 90% опасных контрактов. Оставшиеся 10% требуют глубокого аудита кода, но к ним я уже отношусь с базовым доверием.
Инструменты для автоматизации проверки
Для ленивых (или очень занятых) существуют сервисы автоматической проверки контрактов:
De.Fi Scanner (de.fi/scanner)
Вставляешь адрес кошелька, показывает все контракты с которыми ты взаимодействовал. Подсвечивает опасные approves и неверифицированные контракты. Бесплатно.
TokenSniffer (tokensniffer.com)
Анализирует токен-контракты на наличие honeypot функций, скрытых налогов, blacklist механизмов. Покрывает Ethereum, BSC, Polygon. Генерирует risk score от 0 до 100.
RugDoc (rugdoc.io)
Вручную ревьюят популярные DeFi протоколы. Присваивают рейтинг от "Low Risk" до "High Risk". Проверяют наличие Timelock, multisig, renounced ownership.
Honeypot.is
Специализируется на обнаружении honeypot токенов — тех которые можно купить но нельзя продать.
Я использую De.Fi Scanner раз в месяц чтобы проверить свои approves и отозвать доступ к мёртвым протоколам. TokenSniffer проверяю каждый новый токен перед свопом. Но они не заменяют ручную проверку — только дополняют её.
Реальные кейсы: как красные флаги спасли деньги
Кейс 1: Banana Finance на Polygon
Июль 2024, находу рекламу фарминга в Telegram-канале. Протокол Banana Finance обещает 340% APY на стейкинг MATIC. TVL показывает $1.2M, интерфейс выглядит профессионально.
🎓 Научиться зарабатывать в DeFi — курс «DeFi-Гедонист» с практикой и поддержкой. Подробности в канале «Сергей Зиненко | DeFi-Гедонист».
Открываю контракт на PolygonScan. Вижу "TransparentUpgradeableProxy" в названии. Копаю дальше — admin является EOA адресом, в блокчейне этот адрес создан 3 дня назад, других активностей нет. Implementation контракт верифицирован, но содержит функцию migrateAllFunds(address _to) с модификатором onlyOwner.
Комбинация факторов:
- Upgradeable proxy под контролем EOA
- Новый адрес владельца (3 дня)
- Функция вывода всех средств
- Нереалистичный APY (340%)
Вердикт: классический rug pull в ожидании. Прохожу мимо. Через 11 дней протокол исчезает вместе с $1.4M пользовательских средств. CoinTelegraph публикует разбор инцидента.
Кейс 2: MemeFarm на zkSync
Октябрь 2024, тестирую новые протоколы на zkSync Era после запуска нативного моста. Нахожу MemeFarm — yield aggregator с простым интерфейсом.
Проверяю главный vault контракт — не верифицирован. Ищу контракты strategy (куда vault размещает средства) — тоже не верифицированы. Проверяю governance контракт — не верифицирован.
Из 7 core контрактов верифицирован только токен MEME (стандартный ERC-20, там сложно что-то скрыть). Протокол работает уже 5 дней, TVL $230K.
Вердикт: очевидный скам или некомпетентная команда. В обоих случаях — обход. Протокол закрывается через месяц "по техническим причинам", часть пользователей не успевает вывести средства.
Кейс 3: YieldMax на Arbitrum (false positive)
Декабрь 2024, коллега рекомендует YieldMax — новый optimizer на Arbitrum. Открываю главный контракт — вижу "UUPS Proxy". Первая реакция — закрыть вкладку.
Но останавливаюсь. Читаю документацию — там подробно объясняют зачем нужен upgradeable pattern (планируют добавлять новые стратегии раз в месяц). Проверяю ProxyAdmin — это Gnosis Safe multisig 4-of-7. Все 7 адресов публичны, это известные люди в DeFi комьюнити.
Смотрю Timelock — 72 часа на любое обновление. Проверяю историю upgrades — за 3 месяца было 2 обновления, оба анонсированы в Discord за неделю, community голосовала.
Вердикт: proxy здесь легитимен и правильно имплементирован. Размещаю тестовую ликвидность $500. Через 4 месяца YieldMax становится топ-3 optimizer'ом на Arbitrum, мои $500 превращаются в $680 с учётом фармленых токенов.
Урок: Красные флаги это сигнал для детальной проверки, не автоматический вердикт. Но в 95% случаев первое впечатление оказывается верным.
Что делать если уже дал approve опасному контракту
Допустим ты проверил протокол после того как уже взаимодействовал с ним. Обнаружил красные флаги. Паника.
Спокойно. Если токены ещё на твоём кошельке — ты можешь отозвать доступ.
Как отозвать approve через Etherscan
- Открой Etherscan/BscScan
- Подключи кошелёк (кнопка вверху справа)
- Открой страницу токена, которому дал approve (например USDT)
- Вкладка "Contract" → "Write Contract"
- Функция
approve— вставь адрес опасного контракта и значение0 - Нажми "Write", подпиши транзакцию в MetaMask
Теперь контракт не может трогать этот токен. Повтори для всех токенов которым давал разрешение.
Специализированные инструменты для revoke
Revoke.cash (revoke.cash)
Самый популярный инструмент. Подключаешь кошелёк, видишь все активные approves с датами и суммами. Нажимаешь "Revoke" — платишь gas и approve отменён.
Поддерживает все EVM-сети (Ethereum, BSC, Polygon, Arbitrum, Avalanche, etc). Полностью бесплатен, open-source код.
De.Fi Shield (de.fi)
Похожий функционал плюс автоматический мониторинг. Настраиваешь алерты: если какой-то контракт с твоим approve начинает показывать подозрительное поведение — получаешь уведомление в Telegram.
Unrekt (unrekt.net)
Минималистичный интерфейс, показывает только unlimited approves (те где сумма = max uint256). Именно они самые опасные.
Я держу закладку на Revoke.cash и захожу туда раз в месяц чтобы почистить старые approves к протоколам которые больше не использую. Даже если протокол легитимный — зачем оставлять вечное разрешение на доступ к токенам?
Таблица приоритетов при отзыве approves
| Тип approve | Приоритет отзыва | Причина |
|---|---|---|
| Unlimited approve неверифицированному контракту | Критический | Может вывести все токены немедленно |
| Unlimited approve proxy без timelock | Высокий | Логика может измениться в любой момент |
| Limited approve опасному контракту | Средний | Риск ограничен размером approve |
| Unlimited approve мёртвому протоколу | Средний | Контракт могут взломать через старые уязвимости |
| Approve крупным протоколам (Uniswap, AAVE) | Низкий | Можно оставить для удобства |
Начни с критических, двигайся вниз. Gas на отзыв approve в Ethereum стоит $3-8, в L2 сетях $0.10-0.50.
Продвинутые техники анализа контрактов
Два основных флага отсеивают большинство скамов, но если хочешь копнуть глубже — вот что смотрю я когда протокол прошёл базовую проверку.
📢 Больше практических разборов — в канале «Сергей Зиненко | DeFi-Гедонист». Подписывайтесь, чтобы не пропустить.
Анализ владельца контракта
Функция owner() или admin() возвращает адрес который контролирует критические функции. Открываю этот адрес в эксплорере и проверяю:
Возраст адреса. Если создан на прошлой неделе — подозрительно. Легитимные проекты используют адреса с историей.
Баланс ETH/BNB. Если владелец контракта с TVL $500K имеет $12 на балансе — вопросы. Откуда деньги на gas для управления протоколом?
Исходящие транзакции. Открываю вкладку "Txns" и смотрю с какими контрактами взаимодействует владелец. Если вижу отправку токенов на миксер (Tornado Cash) или новые биржевые адреса — красный флаг.
Другие контракты от этого адреса. Функция "Contract Creator" в Etherscan показывает все контракты задеплоенные с адреса. Проверяю их — если есть история abandoned проектов, это паттерн serial scammer'а.
Проверка liquidity lock
Для DEX и фарминг-пулов критически важно где находится начальная ликвидность. Если разработчики создали пул BANANA/USDT на PancakeSwap — они владеют LP-токенами этого пула. Могут в любой момент вывести ликвидность (rug pull).
Защита — lock LP-токенов в специальном контракте на фиксированный срок. Популярные сервисы: Unicrypt, Team Finance, Mudra.
Как проверить:
- Находу адрес главного токена проекта
- Смотрю топ holders этого токена в эксплорере
- Проверяю адреса DEX пулов (они обычно в топ-5 holders)
- Открываю адрес пула, вкладка "Token Holdings" → смотрю кто владеет LP-токенами
- Если вижу адрес Unicrypt или Team Finance — открываю, проверяю дату unlock
Минимально приемлемый срок lock — 6 месяцев. Лучше — 1-2 года. Если ликвидность не залочена вообще — я не покупаю токен даже для спекуляции.
Анализ функций onlyOwner
Открываю верифицированный код контракта, Ctrl+F → ищу "onlyOwner". Это модификатор который ограничивает вызов функции только владельцем.
Легитимные функции с onlyOwner:
pause()/unpause()— остановка контракта в экстренной ситуацииsetFeePercentage(uint256)— изменение комиссии протоколаaddStrategy(address)— добавление новой стратегии в yield aggregatorupdateOracle(address)— смена источника цен
Подозрительные функции:
withdrawAll(address)— вывод всех токенов на произвольный адресsetUserBalance(address, uint256)— изменение баланса пользователяtransfer(address, uint256)без проверок — перевод токенов минуя логикуselfDestruct()— уничтожение контракта
Если вижу подозрительные функции — копаю дальше. Иногда они нужны для миграции или recovery в случае бага. Но должно быть объяснение в документации.
Таблица: Распространённые backdoor функции
| Название функции | Что делает | Легитимное использование | Как абузится |
|---|---|---|---|
emergencyWithdraw(address) |
Вывод средств в обход логики | Спасение от exploit | Вывод на кошелёк создателя |
setTaxPercentage(uint256) |
Изменение налога на транзакции | Динамическая комиссия | Налог 99% = блокировка продаж |
excludeFromFee(address) |
Освобождение адреса от комиссии | Освобождение контрактов протокола | Освобождение адреса создателя для дампа |
includeInReward(address) |
Изменение списка получателей наград | Добавление новых LP пулов | Добавление кошелька разработчика |
migrate(address) |
Перенос средств в новый контракт | Апгрейд протокола | Перенос на scam контракт |
transferOwnership(address) |
Смена владельца | Передача DAO или multisig | Продажа контроля злоумышленнику |
Не каждая функция из этого списка означает скам. Но каждая требует объяснения в документации и желательно timelock для выполнения.
Как DeFi-протоколы маскируют красные флаги
Скамеры не дураки. Они знают что опытные пользователи проверяют контракты. Поэтому придумывают способы скрыть опасность.
Тактика 1: Delayed activation
Контракт деплоится чистым, без вредоносных функций. Проходит аудит (формальный). Набирает TVL. Через 2-3 недели владелец вызывает функцию activateBackdoor() которая меняет поведение критических методов.
Пример из практики: протокол AquaFinance на BSC. Первые две недели работал как обычный yield aggregator. Потом владелец активировал hidden fee 15% на все выводы. Пользователи начали терять деньги, TVL упал с $800K до $40K за три дня.
Защита: проверяй контракт не один раз перед депозитом, а периодически если держишь средства долго. Подписывайся на audit-платформы которые мониторят изменения в поведении.
Тактика 2: Разделение на множество контрактов
Главный контракт верифицирован и чист. Но он вызывает функции из библиотеки (library) или вспомогательного контракта, который не верифицирован. Backdoor спрятан там.
При проверке ты видишь чистый код главного контракта и успокаиваешься. А реальная логика в external call к контракту 0xabc...def.
Защита: в коде главного контракта ищи ключевые слова delegatecall, call, staticcall. Проверяй куда идут эти вызовы и верифицированы ли целевые контракты.
Тактика 3: Fake verification
Скамер деплоит контракт А с backdoor. Потом деплоит контракт Б (почти идентичный но без backdoor) и верифицирует его. В интерфейсе сайта показывает ссылку на контракт Б, но реально средства идут в контракт А.
Проверка: не доверяй ссылкам на сайте. Открывай свои транзакции в MetaMask → смотри с каким контрактом реально взаимодействовал → сверяй адрес с тем что показан на сайте.
Тактика 4: Honeypot токены
Токен можно купить (функция transfer() работает нормально), но продать нельзя (функция проверяет if (sender != owner) revert). Создаётся иллюзия роста цены потому что никто не может продать.
Скамер постепенно покупает сам у себя, поднимая цену. Когда TVL достигает нужной суммы — он продаёт (он owner, для него ограничений нет) и все остальные остаются с бесполезными токенами.
Защита: перед покупкой токена проверяю его на Honeypot.is. Сервис симулирует покупку и продажу, показывает возможные ли обе операции.
Чеклист безопасности перед любым DeFi взаимодействием
Сохрани этот список в заметки и используй перед каждым новым протоколом:
Уровень 1: Базовый (2 минуты)
- Контракт верифицирован в блокчейн-эксплорере
- Отсутствуют слова Proxy/Upgradeable в названии
- Возраст контракта больше 7 дней
- TVL больше $100K (если меньше — высокий риск)
Уровень 2: Стандартный (5 минут)
- Проверил функции onlyOwner — нет подозрительных методов
- Admin/Owner это multisig или контракт, не EOA
- Ликвидность токена залочена минимум на 6 месяцев
- Есть документация на английском (не только мемы в Telegram)
Уровень 3: Параноидальный (15 минут)
- Прочитал весь код главного контракта
- Проверил все вызовы external контрактов — они верифицированы
- Нашёл аудит от известной фирмы (Certik, PeckShield, Hacken)
- Проверил адрес владельца — нет истории abandoned проектов
- Протестировал депозит/вывод с $10 на отдельном кошельке
Для протоколов где я размещаю до $500 — достаточно уровня 1. До $5K — уровень 2. Больше $5K — полный уровень 3 плюс мониторинг раз в неделю.
FAQ
Можно ли доверять протоколу если у него есть аудит?
Аудит это плюс но не гарантия. Я видел десятки протоколов с "аудитом" от неизвестных контор, которые оказывались скамом. Настоящий аудит стоит $50K-200K и проводится 4-6 недель. Если протокол с TVL $300K показывает аудит — вопрос откуда деньги на него.
Доверяй аудитам только от топ-5 фирм: Certik, Trail of Bits, OpenZeppelin, Quantstamp, Hacken. Проверяй отчёт — он должен быть публичным, с конкретными находками и их severity. Не просто "сертификат" с логотипом.
И помни: аудит проверяет код на момент аудита. Если после этого разработчик обновил контракт через proxy — аудит недействителен.
Как часто нужно перепроверять контракты в которых лежат мои средства?
Зависит от типа контракта. Immutable контракты (без proxy) можно не перепроверять — код не изменится. Upgradeable контракты проверяю раз в месяц: захожу на адрес в эксплорере, смотрю последние транзакции с владельческого адреса, проверяю не было ли upgrades.
Для protocolов где держу больше $10K — настраиваю мониторинг через De.Fi или Tenderly. Получаю алерт если происходит upgrade, изменение owner или крупный вывод ликвидности.
Что делать если нашёл красные флаги в протоколе где уже лежат деньги?
Немедленно вывожу средства. Не важно что потеряю pending rewards или заплачу комиссию за досрочный вывод. Лучше потерять 5% на штрафе чем 100% на rug pull.
После вывода отзываю все approves через Revoke.cash. Потом пишу в community протокола (Discord/Telegram) — часто оказывается что другие пользователи тоже заметили проблему и разработчики готовы объяснить. Если объяснение неубедительно — больше не возвращаюсь.
Безопасны ли форки известных протоколов (Uniswap, AAVE)?
Форк может быть идентичной копией кода или содержать изменения. Проверяй построчно. Скамеры часто берут код Uniswap v2, добавляют одну строчку в функцию transfer с backdoor и деплоят как "UniswapClone на новом блокчейне".
Сравниваю код форка с оригиналом через diff tools. Если есть изменения — читаю каждое внимательно. Легитимные форки обычно добавляют features (новые типы пулов, governance), не меняют базовую логику transfer/approve.
Самые безопасные форки — те что деплоены самими оригинальными командами. Uniswap v3 на Polygon деплоен Uniswap Labs — доверяю. "SushiSwap v2" деплоенный неизвестным адресом на BNB Chain — проверяю как любой другой неизвестный протокол.
🎓 Научиться зарабатывать в DeFi — курс «DeFi-Гедонист» с практикой и поддержкой. Подробности в канале «Сергей Зиненко | DeFi-Гедонист».
Стоит ли использовать DeFi на новых блокчейнах где мало протоколов проверено?
Новые блокчейны (недавние примеры: zkSync Era, Base, Scroll) в первые месяцы полны экспериментальных протоколов. 80% из них либо скам либо заброшены через месяц.
Моя стратегия на новых сетях: жду 2-3 месяца после запуска mainnet. Потом захожу только в протоколы которые являются форками/депломентами известных команд. На zkSync я использую только Syncswap (официальный DEX от zkSync team) и Mute.io (крупный audit + team doxxed).
Тестирую с минимальными суммами ($50-100) на отдельном кошельке. Если протокол работает месяц без проблем и набирает TVL больше $10M — постепенно увеличиваю exposure.
Что дальше
Понимание красных флагов это первый слой защиты в DeFi, но не единственный. Даже чистые контракты могут содержать экономические уязвимости (например manipulation oracles для ликвидаций) или быть взломаны через внешние зависимости.
Следующий шаг — научись работать с hardware wallet (Ledger, Trezor) для изоляции приватных ключей. Настрой мультисиг через Gnosis Safe для крупных сумм. Диверсифицируй между протоколами — не держи все средства в одном месте.
Углубляйся в понимание механики конкретных протоколов: как работают lending pools в AAVE, impermanent loss в AMM, liquidation cascades в маржин-трейдинге. Каждая ниша DeFi имеет свои специфические риски.
Подписывайся на мой Telegram канал канал «Сергей Зиненко | DeFi-Гедонист» — там разбираю новые протоколы, показываю примеры аудита контрактов и делюсь alpha по безопасному yield farming. Последний пост про то как я автоматизировал мониторинг 15 протоколов через Tenderly alerts.