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");
        }
    }
}

Практические советы для разработчиков 💡

  1. Аудит контракта
    • Проверка всех функций трансфера
    • Анализ модификаторов доступа
    • Тестирование edge cases
  2. Прозрачность
    • Верифицированный код
    • Четкая документация
    • Открытый changelog
  3. Безопасность
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");
        _;
    }
}

Заключение

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

Полезные инструменты:

  • TokenSniffer
  • Honeypot.is
  • Etherscan Source Code Verifier

Подпишись !!!

Спасибо за чтение ! Подпишись что бы не пропускать дальнейшие статьи!

Телеграм: https://t.me/one_eyes