TRC20 и функция approve()
TRC20 — стандарт токенов TRON, смоделированный по образцу ERC20 в Ethereum. Токены вроде USDT, USDC, WTRX и BTT реализуют общий интерфейс с функциями transfer, balanceOf, approve, allowance и transferFrom.
Когда вы вызываете approve(spender, amount) на TRC20-контракте, вы разрешаете определённому адресу — обычно смарт-контракту — списать до amount токенов с вашего кошелька через transferFrom. Это одобрение хранится в блокчейне в mapping allowance контракта токена и сохраняется, пока вы не измените или не отзовёте его.
Главный контракт USDT на TRON — TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t, выпущенный Tether. Поскольку USDT — основная цель drainer, мониторинг одобрений на этом контракте должен быть приоритетом для каждого пользователя TRON.
Allowance и право собственности
Выдача одобрения не передаёт право собственности на ваши токены. USDT по-прежнему находится в вашем кошельке. Меняется лишь то, что одобренный spender может инициировать перевод в пределах лимита allowance без подписи вашего кошелька для каждого отдельного движения.
Это похоже на предоставление отелю авторизации на кредитную карту: отель может списать сумму в пределах авторизованного лимита, но деньги остаются на вашем счёте, пока списание не произойдёт. Drainer — это злонамеренный «продавец», который списывает полную авторизованную сумму, часто весь ваш баланс, если вы выдали безлимитное одобрение.
Вы можете проверить любой allowance, вызвав allowance(owner, spender) на контракте токена, или использовать сканер RevokeUSDT, чтобы увидеть все одобрения сразу.
Зачем dApp запрашивают одобрения
Децентрализованные биржи, протоколы кредитования и мосты нуждаются в одобрениях для эффективной работы:
- Обмен на DEX — SunSwap и аналогичные роутеры забирают USDT из вашего кошелька в контракт обмена при сделке.
- Кредитование — JustLend и другие платформы перемещают одобренные токены в пулы при депозите.
- Стейкинг и фарминг — yield-контракты нуждаются в разрешении блокировать ваши токены в хранилищах.
Без одобрений вам пришлось бы подписывать отдельную транзакцию transfer для каждого обмена или депозита — это непрактично для автоматизированных смарт-контрактных процессов. Компромисс — безопасность: каждое одобрение — это постоянное разрешение, которое переживает вашу браузерную сессию.
Что такое безлимитные одобрения
Многие dApp запрашивают «безлимитное» одобрение, устанавливая amount в максимальное значение uint256 (2256 − 1). Это избавляет от повторных транзакций approve при будущих взаимодействиях — одна подпись покрывает все будущие депозиты или обмены.
Для доверенных, аудированных протоколов, которыми вы регулярно пользуетесь, безлимитное одобрение — распространённый UX-паттерн. Опасность возникает, когда пользователи выдают безлимитное одобрение USDT:
- Фишинговым сайтам, имитирующим легитимные dApp
- Поддельным страницам airdrop или NFT mint
- Вредоносным контрактам, развёрнутым специально для draining
- Скомпрометированным или неаудированным новым проектам
Безлимитное одобрение означает, что spender может забрать весь ваш USDT в любой момент без дополнительных запросов. RevokeUSDT помечает безлимитные allowance, чтобы вы могли быстро оценить и отозвать их. Узнайте как в нашем руководстве по отзыву USDT.
Как одобрения отображаются на TRON
Когда вы подписываете транзакцию approve в TronLink, TRON mainnet записывает событие Approval на контракте токена. Индексаторы и инструменты вроде RevokeUSDT читают эти события, чтобы построить полную картину ваших активных allowance.
Ключевые факты об одобрениях на TRON:
- Одобрения привязаны к контракту токена и spender — одобрение USDT для SunSwap отделено от одобрения USDC для того же роутера.
- Одобрения не истекают автоматически — они сохраняются до отзыва или перезаписи.
- Установка нового amount approve заменяет предыдущий allowance для этого spender.
- Отзыв означает вызов
approve(spender, 0).
В отличие от некоторых централизованных систем, блокчейн TRON не имеет встроенного механизма истечения срока одобрений. Это означает, что одобрение, выданное год назад для dApp, которым вы больше не пользуетесь, остаётся активным до вашего явного отзыва. Именно поэтому регулярный аудит allowance так важен.
Детали контракта USDT TRC20
Официальный Tether USD (USDT) в сети TRON mainnet:
- Контракт:
TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t - Decimals: 6 (1 USDT = 1 000 000 базовых единиц)
- Стандарт: TRC20
Всегда проверяйте, что вы одобряете настоящий контракт USDT. Мошенники иногда разворачивают поддельные токены с похожими названиями. Сверьте адрес контракта на TronScan и убедитесь, что он совпадает с официальным листингом Tether.
При просмотре одобрений в RevokeUSDT записи USDT ссылаются на этот контракт. Любое безлимитное одобрение неизвестному spender на TR7NHqje… следует считать высокоприоритетным для отзыва.
Approval vs transfer: знайте разницу
Фишинговые атаки часто сбивают пользователей с толку, показывая превью транзакций, которые выглядят безобидно. Критические отличия:
- approve — выдаёт разрешение на трату; токены остаются в кошельке, пока spender не действует.
- transfer — немедленно отправляет токены на другой адрес.
- transferFrom — spender перемещает токены, используя существующее одобрение (вы можете не увидеть эту транзакцию — drainer отправляет её сам).
Если TronLink показывает запрос approve на сайте, которому вы не доверяете, отклоните его. Если вы уже одобрили, немедленно отзовите через сканер и прочитайте защиту от TRC20 drainer.
Лучшие практики для TRC20 одобрений
- Отдавайте предпочтение ограниченным одобрениям, когда dApp поддерживает указание конкретной суммы.
- Отзывайте одобрения для dApp, которыми больше не пользуетесь.
- Ежемесячно сканируйте кошелёк через RevokeUSDT.
- Никогда не одобряйте на сайтах, на которые попали через личные сообщения, email или рекламу в соцсетях.
- Добавляйте официальные URL dApp в закладки вместо поиска в Google.
TRC20 одобрения — мощный DeFi-примитив, который становится уязвимостью при непонимании. Регулярный аудит и своевременный отзыв устаревших или подозрительных разрешений — самая эффективная защита, если вы не используете cold storage.
Посмотрите все TRC20 одобрения
RevokeUSDT сканирует TRON mainnet и показывает каждое активное allowance — включая безлимитные разрешения USDT — на одной панели.
Сканировать кошелёк