TRC20 and the approve() function
TRC20 is TRON's token standard, modeled after Ethereum's ERC20. Tokens like USDT, USDC, WTRX, and BTT implement a common interface with functions including transfer, balanceOf, approve, allowance, and transferFrom.
When you call approve(spender, amount) on a TRC20 contract, you authorize a specific address — usually a smart contract — to pull up to amount tokens from your wallet using transferFrom. This approval is stored on-chain in the token contract's allowance mapping and persists until you change it or revoke it.
The most important USDT contract on TRON is TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t, issued by Tether. Because USDT is the primary target for drainers, monitoring approvals on this contract should be a priority for every TRON user.
Allowance vs ownership
Granting an approval does not transfer ownership of your tokens. You still hold the USDT in your wallet. What changes is that the approved spender can initiate a transfer up to the allowance limit without your wallet signing each individual movement.
Think of it like giving a hotel a credit card authorization: the hotel can charge up to the authorized amount, but the money stays in your account until they actually charge it. A drainer is a malicious "merchant" that charges the full authorized amount — often your entire balance if you granted unlimited approval.
You can check any allowance by calling allowance(owner, spender) on the token contract, or use the RevokeUSDT scanner to list all approvals at once.
Why dApps request approvals
Decentralized exchanges, lending protocols, and bridges need approvals to operate efficiently:
- DEX swaps — SunSwap and similar routers pull USDT from your wallet into the swap contract when you trade.
- Lending — JustLend and other platforms move approved tokens into lending pools on deposit.
- Staking and farming — yield contracts need permission to lock your tokens in vaults.
Without approvals, you would need to sign a separate transfer transaction for every swap or deposit — impractical for automated smart contract workflows. The trade-off is security: each approval is a persistent permission that outlives your browser session.
Unlimited approvals explained
Many dApps request "unlimited" approval by setting the amount to the maximum value of a uint256 (2256 − 1). This avoids repeated approve transactions on future interactions — one signature covers all future deposits or swaps.
For trusted, audited protocols you use regularly, unlimited approval is a common UX pattern. The danger arises when users grant unlimited USDT approval to:
- Phishing sites mimicking legitimate dApps
- Fake airdrop or NFT mint pages
- Malicious contracts deployed specifically for draining
- Compromised or unaudited new projects
An unlimited approval means the spender can take all your USDT at any time, without further prompts. RevokeUSDT flags unlimited allowances so you can assess and revoke them quickly. Learn how in our USDT revoke guide.
How approvals appear on TRON
When you sign an approve transaction in TronLink, TRON mainnet records an Approval event on the token contract. Indexers and tools like RevokeUSDT read these events to build a complete picture of your active allowances.
Key facts about TRON approvals:
- Approvals are per token contract and per spender — USDT approval to SunSwap is separate from USDC approval to the same router.
- Approvals do not expire automatically — they remain until revoked or overwritten.
- Setting a new approve amount replaces the previous allowance for that spender.
- Revoking means calling
approve(spender, 0).
USDT TRC20 contract details
Official Tether USD (USDT) on TRON mainnet:
- Contract:
TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t - Decimals: 6 (1 USDT = 1,000,000 base units)
- Standard: TRC20
Always verify you are approving the genuine USDT contract. Scammers sometimes deploy fake tokens with similar names. Check the contract address on TronScan and confirm it matches Tether's official listing.
When reviewing approvals in RevokeUSDT, USDT entries reference this contract. Any unlimited approval to an unknown spender on TR7NHqje… should be treated as high priority for revocation.
Approval vs transfer: know the difference
Phishing attacks often confuse users by showing transaction previews that look harmless. Critical distinctions:
- approve — grants spending permission; tokens stay in your wallet until the spender acts.
- transfer — immediately sends tokens to another address.
- transferFrom — spender moves tokens using an existing approval (you may not see this tx — the drainer submits it).
If TronLink shows an approve request on a site you do not trust, reject it. If you already approved, revoke immediately via the scanner and read TRC20 drainer protection.
Best practices for TRC20 approvals
- Prefer limited approvals when the dApp supports specifying an amount.
- Revoke approvals for dApps you no longer use.
- Scan your wallet monthly with RevokeUSDT.
- Never approve on sites reached through DMs, emails, or social media ads.
- Bookmark official dApp URLs instead of searching Google.
TRC20 approvals are a powerful DeFi primitive that becomes a liability when misunderstood. Regular auditing and prompt revocation of stale or suspicious permissions is the single most effective defense short of cold storage.
See all your TRC20 approvals
RevokeUSDT scans TRON mainnet and lists every active allowance — including unlimited USDT permissions — in one dashboard.
Scan your wallet