Разработка системи захисту від rug pull
Rug pull — коли команда проекту намисно виводить ліквідність та/або ETH/токени з контракту, залишаючи холдерів з обесцінено токенами. Не технічний баг — умисел. Але техніка, що робить rug pull можливим, цілком конкретна та передбачувана. Система захисту будується на двох рівнях: on-chain механіки, які фізично не дають команді вивести ліквідність, та off-chain мониторингу, який алертує про підозрілі дії до виконання.
Класифікація rug pull векторів
Liquidity removal
Найпоширеніший вектор. Команда додає ліквідність у Uniswap/PancakeSwap, запускає маркетинг, ціна росте → команда виводить ліквідність. LP токени в команди, обмежень немає.
Mint без обмежень
Команда деплоїть токен з функцією mint(address, amount) доступною owner-у. У будь-який момент можна выминтити мільярди токенів та продати їх на ринку.
// НЕБЕЗПЕЧНИЙ ПАТТЕРН
contract HoneypotToken is ERC20, Ownable {
function mint(address to, uint256 amount) external onlyOwner {
_mint(to, amount); // Неограниченный mint для owner
}
}
Приховані обмеження передачі
Контракт дозволяє тільки деяким адресам продавати токен (sell restriction), блокуючи звичайних холдерів від продажу. Owner може додавати/видаляти адреси з blacklist або whitelist.
Fee маніпуляція
Стандартний дефляційний токен з fee. Команда може змінити fee до 99% — будь-яка продаж повертає майже все коштами команді.
uint256 public sellFee = 3; // 3% — здається розумно
// Пізніше:
function setSellFee(uint256 fee) external onlyOwner {
sellFee = fee; // Може стати 99%
}
On-chain захисні механіки
Locked ліквідність через Unicrypt / PinkLock
Найпростіший захист: LP токени локовані у smart contract с timelock. Команда не може фізично вивести ліквідність до істікання терміну.
Перевірка для користувачів: на Unicrypt або Team.Finance можна перевірити lock за адресою токену або LP токену.
Renounced ownership та Ownable2Step
Якщо команда renounce ownership — ніхто не може викликати onlyOwner функції. Максимальний захист, але робить контракт immutable повністю, включаючи корисні функції.
Компромісс — обмежений owner через Ownable2Step з обмеженими правами.
Mint cap та fixed supply
Обмеження максимального supply hardcoded — не через змінну, а через константу.
Timelock для критичних функцій
Будь-які зміни критичних параметрів мають проходити через timelock — затримка з публічним оголошенням:
Timelock дає сообществу 48 годин щоб побачити зміну та вийти до її застосування.
Off-chain мониторинг: рання детекція
Аналіз контракту перед покупкою
Автоматичний scanner контракту до взаємодії з токеном.
Real-time мониторинг транзакцій
Після покупки токену — продовжуємо мониторинг на critical события (OwnershipTransferred, крупні transfer, LP removals).
DEXTools / Token Sniffer інтеграція
Замість написання всього з нуля — інтеграція з існуючими API (GoPlus, Token Sniffer, etc).
Honeypot детекція: симуляція продажи
Найкращий спосіб перевірити honeypot — симулювати sell транзакцію через fork.
Інтеграція у продукт
Система може бути:
- Browser extension — попередження при risky token approve або swap
- DEX frontend middleware — перевірка перед swap підтвердженням
- Portfolio tracker — мониторинг вже куплених токенів
- Telegram/Discord bot — алерти для токенів з watchlist
Жоден автоматичний інструмент не дає 100% захисту — досвідчений шахрай може створити контракт, що проходить усі автоматичні перевірки. Але піднесення планки зусиль робить атаки менш вигідними та відсікає більшість opportunistic rug pulls.
Компоненти та сроки
| Компонент | Опис | Срок |
|---|---|---|
| Contract analyzer | Статичний аналіз bytecode + ABI | 3–4 тижні |
| Honeypot simulator | Anvil fork + симуляція продажи | 2–3 тижні |
| Real-time monitor | WebSocket event listener + алерти | 2–3 тижні |
| LP lock checker | Інтеграція з Unicrypt, PinkLock, Team.Finance | 1–2 тижні |
| 3rd party integration | GoPlus, Token Sniffer API | 1 тиждень |
| Frontend/bot | UI або Telegram bot для алертів | 2–4 тижні |
| Database | Історія перевірок, кешування | 1–2 тижні |







