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