November 24, 2024
Хонейпот-токены: Разбираем популярные схемы и механики защиты
Привет! Сегодня глубоко погружаемся в тему хонейпот-токенов — разберем популярные механики, как их определять и как защищаться. А заодно посмотрим, как создавать безопасные смарт-контракты.
Что такое токен-хонейпот? 🍯
Токен-хонейпот — это смарт-контракт, который выглядит как обычный токен, но содержит скрытые механики, препятствующие продаже или передаче токенов. Обычно используется скамерами для привлечения неопытных трейдеров.
Популярные механики хонейпотов
1. Базовый хонейпот с блокировкой продаж
contract HoneypotToken is ERC20 { address private owner; mapping(address => bool) private whitelist; constructor() ERC20("Honeypot", "HONEY") { owner = msg.sender; whitelist[msg.sender] = true; _mint(msg.sender, 1000000 * 10**decimals()); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override { require(whitelist[from] || from == address(0), "Transfer not allowed"); super._beforeTokenTransfer(from, to, amount); } }
2. Манипуляция с балансами
contract BalanceManipulation is ERC20 { mapping(address => uint256) private realBalances; function balanceOf(address account) public view override returns (uint256) { // Показываем фейковый баланс для внешних контрактов if(tx.origin != msg.sender) { return super.balanceOf(account); } return realBalances[account]; } }
3. Блокировка через высокие налоги
contract TaxHoneypot is ERC20 { uint256 private constant SELL_TAX = 99; // 99% tax function transfer(address to, uint256 amount) public override returns (bool) { if(_isSellingToAMM(to)) { uint256 taxAmount = (amount * SELL_TAX) / 100; amount -= taxAmount; } return super.transfer(to, amount); } }
Как определить токен-хонейпот? 🔍
1. Проверка исходного кода
// Подозрительные паттерны: - Непрозрачные условия трансфера - Скрытые модификаторы - Хардкод адресов - Нестандартные реализации ERC20
2. Анализ транзакций
// Признаки хонейпота: - Односторонние свопы (только покупки) - Необычно высокие/низкие газовые лимиты - Транзакции только от определенных адресов
3. Проверка ликвидности
interface IUniswapPair { function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); }
Защитные механизмы для легитимных токенов 🛡️
1. Прозрачная система налогов
contract SafeToken is ERC20 { uint256 public constant MAX_TAX = 5; // 5% максимальный налог event TaxChanged(uint256 newTax); function setTax(uint256 _tax) external onlyOwner { require(_tax <= MAX_TAX, "Tax too high"); emit TaxChanged(_tax); } }
2. Временные блокировки с четкой логикой
contract TimeLockToken is ERC20 { mapping(address => uint256) public lockTime; function lock(uint256 time) external { require(time <= 30 days, "Lock too long"); lockTime[msg.sender] = block.timestamp + time; } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override { require(block.timestamp >= lockTime[from], "Still locked"); super._beforeTokenTransfer(from, to, amount); } }
3. Антибот-защита
contract AntiBot is ERC20 { uint256 public launchTime; uint256 public constant MAX_PER_WALLET = 1000 * 10**18; function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override { if(block.timestamp < launchTime + 1 hours) { require(balanceOf(to) + amount <= MAX_PER_WALLET, "Limit exceeded"); } } }
Практические советы для разработчиков 💡
contract SafeImplementation { // Используйте SafeMath для Solidity < 0.8.0 using SafeMath for uint256; // Избегайте прямых вызовов transfer function safeTransfer(IERC20 token, address to, uint256 value) internal { require(token.transfer(to, value), "Transfer failed"); } // Implement pausable механизм bool public paused; modifier whenNotPaused() { require(!paused, "Contract paused"); _; } }
Заключение
Понимание механик хонейпотов критически важно как для разработчиков, так и для трейдеров. Используйте эти знания для создания безопасных контрактов и защиты от мошенников.
Полезные инструменты:
Подпишись !!!
Спасибо за чтение ! Подпишись что бы не пропускать дальнейшие статьи!
Телеграм: https://t.me/one_eyes