Когда я в 2021 потерял $3,200 на скам-проекте в BSC, единственное, что меня утешало — я понял, что именно пошло не так. Контракт был неверифицирован, TVL меньше $500k, но обещали 2000% APY. Классика жанра. С тех пор у меня есть чёткий чек-лист безопасности перед каждым вложением в DeFi.

Безопасность DeFi начинается не с диверсификации портфеля, а с понимания кода смарт-контрактов. Ты не обязан быть программистом на Solidity, но должен различать проверенный форк Uniswap V2 от самописного "инновационного" решения, где твои деньги могут испариться через backdoor в коде.

Что такое форк в DeFi и почему это важно

Fork (форк) — это копия кода существующего проекта с минимальными изменениями. В DeFi это не плагиат, а стандартная практика безопасности. Когда проект заявляет "мы форк Aave на Arbitrum" — это хороший знак. Разработчики не пытаются изобрести велосипед, а используют код, проверенный миллиардами долларов в TVL.

Почему проекты форкают чужой код

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

  • Заблокирует вывод средств (как было с Balancer в 2020)
  • Позволит хакерам слить ликвидность через flash loan атаку
  • Создаст возможность для манипуляций ценой через MEV-боты

Когда код работает в продакшене 2—3 года без инцидентов — это означает, что тысячи white hat хакеров уже пытались найти уязвимости и не нашли. Именно поэтому разработчики предпочитают копировать проверенные решения.

В моей практике я использую форки как первый фильтр безопасности. Если проект говорит "мы написали собственный AMM-алгоритм с уникальной формулой кривой" — красный флаг. Это не означает скам автоматически, но требует дополнительной проверки через аудиты.

Какие проекты чаще всего форкают

Децентрализованные биржи (DEX):

  • Uniswap V2 — классическая постоянная кривая (x*y=k), форкнута в PancakeSwap, SushiSwap, TraderJoe
  • Uniswap V3 — концентрированная ликвидность, форки: QuickSwap V3, PancakeSwap V3
  • Solidly V2 — разработка Андре Кронье, стабильные пары с низким slippage, форки: Velodrome, Thena

Децентрализованные банки (lending):

  • Aave — изолированные пулы, flash loans, форкнут в Radiant Capital, Granary Finance
  • Compound — базовая модель процентных ставок, форки: Venus Protocol, Benqi

Когда я анализировал Velodrome на Optimism, первое, что проверил — это соответствие кода Solidly V2. Открыл контракт на Etherscan, сравнил основные функции с оригиналом, убедился, что изменения касаются только токеномики, но не логики свопов.

Как проверить код смарт-контракта: пошаговый гайд

Ты не обязан читать Solidity построчно, но должен уметь проверить базовые параметры безопасности через блокчейн-эксплорер. Вот мой чек-лист перед размещением капитала в любой DeFi-протокол.

Шаг 1: Верификация контракта

Верификация — это процедура сравнения байт-кода в блокчейне с исходным кодом на Solidity. Если контракт верифицирован, ты видишь его исходник прямо в Etherscan/Arbiscan/Basescan.

Как проверить:

  1. Открой главную страницу проекта, найди адрес основного контракта (обычно в документации или footer)
  2. Вставь адрес в блокчейн-эксплорер соответствующей сети
  3. Перейди на вкладку ContractCode
  4. Если видишь код на Solidity с зелёной галочкой "Contract Source Code Verified" — контракт открыт

Красный флаг: если вместо кода видишь только байт-код (набор символов типа 0x608060405234801...) — контракт неверифицирован. Не размещай туда ни цента.

Исключения из правила верификации

Бывают технические проблемы с блокчейн-эксплорерами на новых L2. Я сталкивался с этим на zkSync Era в феврале 2023 — даже крупные проекты типа SyncSwap не могли верифицировать контракты первые 2 недели из-за багов в API эксплорера.

Что делать:

  1. Зайди в Discord/Telegram проекта, спроси напрямую про верификацию
  2. Проверь на официальном Discord блокчейна (например, zkSync Official), есть ли известные проблемы
  3. Подожди 3—5 дней — обычно разработчики оперативно решают такие баги
  4. Если через неделю код всё ещё закрыт, а TVL меньше $10M — лучше пропусти проект

Шаг 2: Проверка на прокси-контракт

Прокси-контракт (proxy pattern) — это техника, позволяющая "обновлять" смарт-контракт после развёртывания. Технически контракт неизменяем, но прокси перенаправляет вызовы на другой адрес, который можно подменить.

Как выглядит прокси:

📢 Больше практических разборов — в канале «Сергей Зиненко | DeFi-Гедонист». Подписывайтесь, чтобы не пропустить.

В Etherscan на вкладке Contract ты увидишь надпись:

  • "This contract is a proxy contract"
  • Или кнопку "Read as Proxy" / "Write as Proxy"

Почему это опасно:

Разработчики могут в любой момент изменить логику контракта, переключив прокси на новый адрес. Например, добавить функцию emergencyWithdraw(), которая сливает всю ликвидность на кошелёк создателя.

В 2022 я видел скам на Avalanche: проект запустился как форк Aave, первые 2 недели работал штатно, TVL вырос до $5M. Потом разработчики через прокси подменили контракт на версию с бэкдором и за 1 транзакцию вывели всю ликвидность. Контракт был верифицирован, но прокси давал им полный контроль.

Исключения:

Крупные протоколы (Aave, Compound, MakerDAO) используют прокси для обновлений безопасности, но управление изменениями происходит через DAO-голосование с таймлоком (задержка 48—72 часа). Это приемлемо для проектов с TVL >$1B и публичной командой.

Для проектов с TVL <$100M — прокси = красный флаг.

Шаг 3: Сравнение с оригинальным кодом

Если проект заявляет "форк Uniswap V2", проверь это вручную:

  1. Открой код контракта проекта в блокчейн-эксплорере
  2. Найди основные функции: swap(), addLiquidity(), removeLiquidity()
  3. Открой оригинальный код Uniswap V2 на GitHub: github.com/Uniswap/v2-core
  4. Сравни сигнатуры функций и основные переменные

Ты не обязан понимать каждую строку, но должен увидеть похожую структуру. Если в коде проекта появляются новые функции типа adminWithdraw() или setFeeRecipient() с модификатором onlyOwner — это потенциальная лазейка.

TVL как индикатор безопасности (с оговорками)

Total Value Locked (TVL) — сумма всех активов, заблокированных в протоколе. Это не прямой показатель безопасности, но эмпирический фильтр, который я использую на финальном этапе проверки.

Почему TVL >$100M = хороший знак

Когда в протоколе лежит $100M+, это означает:

  • Крупные киты (адреса с балансом >$1M) уже провели собственный анализ кода
  • Проект работает минимум 3—6 месяцев без инцидентов (TVL не растёт моментально)
  • White hat хакеры уже пытались найти баги за bug bounty вознаграждения

Крупные игроки (типа Wintermute, Jump Crypto, DeFi-фонды) не заходят в протокол без аудита от Certik/Trail of Bits/OpenZeppelin. Если они там есть — значит, код прошёл профессиональную проверку.

Когда TVL обманчив

Wash trading ликвидности: Скам-проекты могут искусственно накачать TVL через собственные кошельки. Например, создатель вносит $10M через 100 разных адресов, чтобы создать видимость доверия.

Как проверить реальность TVL:

  1. Открой DefiLlama → найди протокол → вкладка Chains
  2. Посмотри распределение TVL по кошельками через Etherscan → топ-10 холдеров
  3. Если 80%+ TVL сосредоточено в 5—10 адресах, созданных в один день — это подозрительно

Практический кейс: Когда я анализировал новый DEX на Base в декабре 2024, TVL показывал $45M. Проверил топ-холдеров LP-токенов — 7 из 10 адресов были созданы в течение 2 часов и получили средства с одного source-кошелька. Классическая накрутка. Через неделю проект exit scam — разработчики слили ликвидность.

Оптимальная формула безопасности

Я использую комбинированный подход:

Критерий Минимальное значение Комментарий
TVL $10M+ Для новых проектов <3 месяцев
TVL $100M+ Для уверенного входа
Возраст проекта 90+ дней Критический период для выявления багов
Количество уникальных пользователей 1000+ адресов Через Dune Analytics
Аудит 1+ от топ-5 компаний Certik, Trail of Bits, OpenZeppelin, Consensys Diligence, PeckShield

Если проект соответствует 4 из 5 критериев + использует проверенный форк без прокси — можно заходить с тестовой суммой (5—10% от планируемого капитала).

Практический чек-лист перед размещением капитала

Вот процесс, который я прохожу перед каждой новой позицией в DeFi (занимает 15—20 минут):

Этап 1: Общая информация (5 мин)

  • Проект указывает, форк какого протокола используется (Uniswap/Aave/Solidly)
  • TVL >$10M (проверяю на DefiLlama)
  • Возраст >90 дней (смотрю дату первого коммита в GitHub или первой транзакции контракта)
  • Есть активное коммьюнити в Discord/Telegram (>1000 участников, сообщения в течение последних 24 часов)

Этап 2: Проверка кода (7 мин)

  • Контракт верифицирован в блокчейн-эксплорере
  • Нет прокси-паттерна (или прокси управляется через DAO с таймлоком >48ч)
  • Основные функции соответствуют оригинальному коду форкнутого протокола
  • Нет подозрительных функций с модификатором onlyOwner (типа emergencyWithdraw)

Этап 3: Аудиты и репутация (5 мин)

  • Минимум 1 аудит от известной компании (ссылка в документации)
  • Нет критических находок (Critical/High severity) в отчёте аудита
  • Команда публична (LinkedIn профили, GitHub активность) или анонимна, но TVL >$100M
  • Нет недавних инцидентов безопасности (проверяю через Rekt News, Twitter)

Этап 4: Анализ ликвидности (3 мин)

  • Распределение LP-позиций: топ-10 холдеров владеют <40% TVL
  • Адреса топ-холдеров созданы >30 дней назад
  • Ликвидность не снижалась резко за последние 7 дней (график TVL на DefiLlama стабилен)

Красный флаг: если хотя бы 2 пункта из этапов 1—2 не выполнены — я не захожу, даже если APY 300%.

Реальные кейсы: как код выдавал скам-проекты

Кейс 1: Meerkat Finance на BSC (март 2021)

Что произошло: Проект позиционировал себя как форк Yearn Finance на Binance Smart Chain. TVL вырос до $31M за 2 дня благодаря APY 2000%. На 3-й день разработчики вывели всю ликвидность — $31M исчез.

Что показала проверка кода:

  • Контракт был верифицирован ✅
  • Но использовал прокси-паттерн с правами владельца на изменение логики ❌
  • Функция migrate() позволяла владельцу переместить все средства на новый контракт без голосования ❌
  • TVL был накручен: 60% средств внесли 3 адреса, созданные за день до запуска ❌

Что я бы сделал: Даже не открыл бы MetaMask. Прокси + TVL <90 дней + концентрация ликвидности = автоматический skip.

Кейс 2: Uranium Finance на BSC (апрель 2021)

Что произошло: Форк Uniswap V2 с "улучшенной" формулой кривой для стейблкоинов. Через bug в коде хакер вывел $50M.

Что показала проверка кода:

  • Разработчики изменили базовую формулу x*y=k на собственную ❌
  • Аудита не было ❌
  • В коде функции swap() была ошибка в проверке баланса, позволявшая вывести больше, чем внесено
  • TVL вырос до $50M за неделю — слишком быстро для неаудированного кода ❌

Урок: Любое изменение базовой логики (особенно математики AMM) = обязательный аудит. Если его нет — жди бага.

Кейс 3: Radiant Capital V1 на Arbitrum (2023)

Что произошло: Форк Aave на Arbitrum. В январе 2024 хакер через flash loan атаку вывел $4.5M, эксплуатируя баг в custom логике кросс-чейн займов.

Что показала проверка кода:

  • Базовый код Aave был скопирован корректно ✅
  • Но разработчики добавили собственный модуль для кросс-чейн ликвидности через LayerZero ❌
  • Этот модуль не был покрыт аудитом от Zokyo (аудит проверял только Aave-часть) ❌
  • TVL был $50M+, проект работал 8 месяцев без проблем — но новая функция оказалась уязвимой ❌

Урок: Даже проверенные форки могут добавить небезопасный custom код. Всегда проверяй, покрывает ли аудит ВСЕ функции контракта, а не только базовую логику.

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

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

DefiLlama (обязательный инструмент)

Что проверять:

  1. TVL график — резкий рост за 1—2 дня подозрителен
  2. Chains — распределение TVL по блокчейнам (если 100% в одной непопулярной сети — риск)
  3. Token Liquidity — проверка ликвидности нативного токена проекта
  4. Fees/Revenue — если TVL $50M, но дневные комиссии $0 — накрутка

Token Sniffer / Honeypot Checker

Для проверки токенов проекта (не контрактов):

  • tokensniffer.com — автоматический анализ кода токена
  • honeypot.is — проверка на honeypot (можешь купить, но не продать)

Как использовать: Вставь адрес токена проекта → получи автоматический отчёт:

  • Owner can pause trading ❌
  • Hidden mint function ❌
  • Excessive fees (>10%) ❌
  • Contract is renounced ✅ (права владельца переданы нулевому адресу)

Dune Analytics

Для проверки реальности активности:

  1. Найди дашборд проекта (например, "Velodrome Analytics")
  2. Посмотри метрики:
    • Unique users (уникальные адреса) — если TVL $100M, но пользователей <100 → накрутка
    • Daily transactions — стабильная активность >50 транзакций/день
    • Wallet age distribution — если 80% кошельков созданы <7 дней назад → боты

Certik Skynet / DeFi Safety

Готовые рейтинги безопасности:

  • skynet.certik.com — автоматический Security Score (60+ = acceptable)
  • defisafety.com — процентный рейтинг безопасности (70%+ = good)

Я использую их как дополнительный фильтр, но не полагаюсь целиком. Например, Certik давал высокий рейтинг проектам, которые позже оказались скамом (потому что аудит был, но команда выполнила rug pull).

Частые ошибки новичков при проверке кода

Ошибка 1: "Аудит от Certik = 100% безопасность"

Реальность: Аудит проверяет код на момент проверки. Если разработчики через прокси обновили контракт после аудита — аудит уже неактуален.

Что делать: Проверь дату аудита и дату последнего изменения контракта (если есть прокси). Разница >30 дней = запроси новый аудит у команды.

Ошибка 2: "TVL $200M, значит безопасно"

Реальность: Terra/Luna имел TVL $30B перед коллапсом. Iron Finance на Polygon имел TVL $2B перед банк-раном.

🎓 Научиться зарабатывать в DeFi — курс «DeFi-Гедонист» с практикой и поддержкой. Подробности в канале «Сергей Зиненко | DeFi-Гедонист».

Что делать: TVL — это индикатор доверия, но не технической безопасности. Всегда проверяй код первым шагом.

Ошибка 3: "Открытый код = безопасный код"

Реальность: Верифицированный контракт может содержать явные бэкдоры, которые видны в коде. Многие скамы работают открыто, рассчитывая, что никто не будет читать код.

Что делать: Используй автоматические сканеры (Token Sniffer) или спрашивай в комьюнити: "Кто-то читал код контракта?"

Ошибка 4: "Форк Uniswap = копия Uniswap"

Реальность: "Форк" может означать 99% оригинального кода или 10% с кастомными изменениями.

Что делать: Спроси в Discord: "Какие именно изменения внесены в код Uniswap V2?" Если ответ "мы улучшили математику формулы" — требуй аудит этих изменений.

Продвинутые техники проверки (для опытных)

Если ты готов углубиться, вот что я делаю для крупных позиций (>$10k):

Проверка зависимостей через GitHub

  1. Найди GitHub репозиторий проекта
  2. Открой package.json или foundry.toml
  3. Проверь версии библиотек: OpenZeppelin, Uniswap SDK, и т.д.
  4. Убедись, что используются последние стабильные версии (не deprecated)

Красный флаг: если проект использует OpenZeppelin contracts версии 3.x (текущая стабильная — 5.x) — либо код очень старый, либо разработчики не следят за безопасностью.

Анализ событий контракта (Events)

В Etherscan → вкладка Events:

  • Ищи события типа OwnershipTransferred — смена владельца контракта
  • Если владелец менялся 3+ раза за последние 30 дней — подозрительно
  • Проверь текущего владельца через owner() функцию — если это EOA (обычный адрес), а не multi-sig или governance контракт — риск

Проверка через Tenderly Simulator

tenderly.co позволяет симулировать транзакции:

  1. Подключи кошелёк к Tenderly
  2. Создай симуляцию транзакции: например, deposit(100 USDC)
  3. Посмотри в Trace → State Changes — какие контракты получат доступ к твоим токенам
  4. Если в цепочке появляются неизвестные контракты или EOA-адреса — красный флаг

Этот метод я использовал, когда анализировал новый yield aggregator на Base. Симуляция показала, что после approve() мои токены могли быть переведены на адрес, не связанный с основным контрактом проекта. Оказалось, это был баг в UI (фронтенд просил approve не на тот адрес), но я не рисковал.

Что делать, если нашёл подозрительный код

Сценарий 1: Небольшой проект (<$10M TVL), неверифицированный контракт

Действия:

  1. Напиши в Discord/Telegram: "Почему контракт X не верифицирован?"
  2. Если ответа нет за 24 часа или он уклончивый ("скоро сделаем") — покидай проект
  3. Если команда отвечает конкретно и верифицирует код за 48 часов — можно дать шанс

Сценарий 2: Средний проект ($10M—$100M TVL), есть прокси-контракт

Действия:

  1. Проверь, кто владеет правами на изменение прокси (функция admin() или owner())
  2. Если это multi-sig (тип Gnosis Safe) → проверь количество подписантов (минимум 3/5)
  3. Если это governance контракт → проверь наличие таймлока (delay перед изменениями)
  4. Если это обычный EOA-адрес → не вноси средства

Сценарий 3: Крупный проект (>$100M TVL), но находишь странную функцию в коде

Действия:

  1. Создай тред в Discord с вопросом: "Что делает функция X в контракте Y?"
  2. Тегни разработчиков (@dev или @team)
  3. Если объяснение логично и подтверждается аудитом — ОК
  4. Если тебя игнорируют или банят за вопрос — exit, даже при TVL $500M

Реальный кейс: я нашёл функцию setFeeReceiver() с модификатором onlyOwner в контракте DEX на Optimism с TVL $80M. Спросил в Discord — оказалось, это для перенаправления комиссий в treasury DAO, но изменения проходят через 72h timelock и требуют голосования. Разработчик скинул ссылку на governance контракт, я проверил — всё честно.

Как код выдаёт легитимность: паттерны надёжных проектов

Паттерн 1: Immutable contracts + External governance

Пример: Uniswap V2/V3

  • Основные контракты (Router, Factory, Pair) неизменяемы, развёрнуты без прокси
  • Управление параметрами (например, комиссии) вынесено в отдельный governance контракт
  • Изменения требуют голосования UNI-холдеров + 48h timelock

Паттерн 2: Multi-sig ownership с публичными членами

Пример: Curve Finance

  • Права на критические функции принадлежат multi-sig 5/9
  • Все подписанты публично известны (LinkedIn, Twitter)
  • История изменений прозрачна через Etherscan Events

Паттерн 3: Upgradable contracts через DAO

Пример: Aave V3

  • Контракты используют прокси для обновлений безопасности
  • Изменения инициируются через Aave Improvement Proposal (AIP)
  • Голосование требует кворума 320k AAVE + 3-day timelock после принятия
  • Все изменения публикуются в GitHub перед голосованием

Вывод: Прокси допустим для проектов с TVL >$500M, публичной командой и governance-процессом с таймлоком >48 часов.

📢 Больше практических разборов — в канале «Сергей Зиненко | DeFi-Гедонист». Подписывайтесь, чтобы не пропустить.

FAQ

Можно ли доверять аудиту от неизвестной компании?

Нет. Существуют "фабрики аудитов", которые за $2,000 выдают красивый PDF с логотипом. Доверяй только топ-10 компаниям: Certik, Trail of Bits, OpenZeppelin, Consensys Diligence, PeckShield, Halborn, Quantstamp, MixBytes, ChainSecurity, Code4rena. Проверяй упоминание аудита на официальном сайте аудиторской компании (не только в документации проекта).

Что делать, если проект отказывается верифицировать код, ссылаясь на "коммерческую тайну"?

Это типичная отговорка скам-проектов. В DeFi нет коммерческих тайн — весь код должен быть открыт, иначе это не децентрализованные финансы, а централизованная платформа. Единственное исключение — закрытый бэкенд для off-chain вычислений (например, оракулы цен), но смарт-контракты всегда должны быть верифицированы.

Безопасно ли использовать форки неаудированного оригинала?

Нет. Если оригинальный протокол (например, новый AMM-алгоритм) не прошёл аудит, форк наследует все уязвимости. Более того, форки часто вносят дополнительные ошибки при адаптации кода под свои нужды. Правило: форк может быть безопаснее оригинала только если: (1) оригинал аудирован, (2) форк не вносит изменений в критические части, (3) форк также прошёл собственный аудит.

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

Минимум раз в квартал или при любом событии: (1) обновление контрактов, (2) смена команды разработчиков, (3) резкий рост TVL (>2x за неделю), (4) появление новых функций. Подпишись на уведомления GitHub проекта и Discord-канал announcements. Я использую Chainbeat для мониторинга изменений в контрактах моих активных позиций.

Можно ли полагаться на Security Score от Certik?

Частично. Certik Skynet даёт автоматизированный анализ, который полезен для первичного скрининга (скор <60 = skip), но не заменяет ручную проверку. Я видел проекты со скором 85+, которые через месяц делали rug pull — потому что алгоритм не учитывает централизацию управления и намерения команды. Используй Skynet как дополнительный фильтр, но не единственный критерий.

Что дальше

Теперь ты знаешь, как проверить код DeFi-протокола перед размещением капитала — от верификации контракта до анализа TVL и аудитов. Следующий шаг — научиться читать базовый Solidity, чтобы самостоятельно находить подозрительные функции. Я регулярно разбираю актуальные кейсы безопасности и новые техники проверки в своём Telegram-канале канал «Сергей Зиненко | DeFi-Гедонист» — подписывайся, чтобы не пропустить разборы свежих скамов и находки уязвимостей.