TRC-20 is a technical standard for smart contracts on the TRON blockchain that implements tokens using the TRON Virtual Machine (TVM), and according to TRON’s developer documentation, it is fully compatible with Ethereum’s ERC-20. The standard defines how wallets and exchanges detect token functions and events, so any token that follows it can be listed without custom integration work. The definition below covers how the standard works, why it carries most on-chain dollar settlement through assets like Tether (USDT), and the one quirk every integrator needs to know.
Key Takeaways
- TIP-20, the TRC-20 specification, was authored by Marcus Zhao and finalized on December 1, 2018.
- Every TRC-20 contract must implement six required functions (totalSupply, balanceOf, transfer, transferFrom, approve, allowance) and emit two events (Transfer, Approval).
- Per DefiLlama, USDT on TRC-20 has approximately $85.52 billion in circulating supply, more than USDT’s approximately $83.82 billion on Ethereum.
- Tron carries approximately $86.81 billion in total stablecoin supply against Ethereum’s approximately $165.67 billion, per DefiLlama.
- According to TIP-20, clients SHOULD set the allowance to 0 before changing it to prevent the approve race-condition attack.
How Does TRC-20 Work?
TRC-20 works like a power outlet standard for the TRON network. Any token that wires its smart contract to match the agreed socket pattern can plug into any wallet, exchange, or decentralized application that recognizes the standard. Per TRON’s developer reference, when wallets and exchanges integrate a TRC-20 asset, they can identify which functions and events the contract exposes based on the standard set, which makes onboarding straightforward.
1. The TVM Runs EVM-Compatible Bytecode
According to TRON’s token standards overview, the TRON Virtual Machine executes the same bytecode as Ethereum’s EVM, which is what allows TRC-20 contracts to be fully compatible with ERC-20 at the interface level. A Solidity contract written for Ethereum can be redeployed on Tron with minimal changes.
2. Contracts Implement Six Required Functions
The TIP-20 specification authored by Marcus Zhao uses syntax from Solidity 0.4.17 or above, and callers MUST handle a false return from functions that return bool success. Per TRON’s developer docs, the six required functions are totalSupply, balanceOf, transfer, transferFrom, approve, and allowance.
| Function | Purpose | Returns |
| totalSupply() | Total tokens in existence | uint |
| balanceOf(address) | Tokens held by one address | uint |
| transfer(to, value) | Permit a spender to withdraw up to the value | bool |
| transferFrom(from, to, value) | Send tokens on behalf of another address | bool |
| approve(spender, value) | Permit a spender to withdraw up to value | bool |
| allowance(owner, spender) | Remaining approved amount | uint |
| Transfer (event) | Fires on every transfer, including zero value | n/a |
| Approval (event) | Fires on every successful approve call | n/a |
Source: TIP-20 (TRON Protocol), TRON Developer Documentation
3. Events Log Transfers and Approvals On-Chain
According to TIP-20, a transfer event MUST trigger when tokens are transferred, including zero-value transfers, and a contract creating new tokens SHOULD trigger a transfer event with the _from address set to 0x0. Per TIP-20, an approval event MUST trigger on any successful call to approve. Block explorers and wallet back-ends watch these two events to rebuild balance histories without replaying every transaction.
4. Wallets and Exchanges Read the Interface
Because the required methods are public and predictable, a Tron-compatible wallet can scan a contract address, confirm the functions resolve, and list the token automatically. According to TRON’s developer documentation, the TRC-20 standard also defines three optional fields (name, symbol, and decimals) that let wallets display a human-readable label and correct precision for each token.
Why Does TRC-20 Matter?
TRC-20 matters because it carries most of the world’s on-chain dollars. As of April 2026, the USDT TRC-20 contract holds approximately $85.52 billion in circulating supply, narrowly ahead of the approximately $83.82 billion in USDT on Ethereum. Tether’s total market capitalization across all chains sits at approximately 188,519,158,073 dollars, per CoinGecko’s live market data. That means the TRC-20 deployment alone carries nearly half of the global USDT supply.
Across CoinLaw’s stablecoin and DeFi market statistics coverage, a consistent pattern shows up: the chain that gets the regulatory and developer attention is not always the chain that moves the money. Tron’s total stablecoin supply reached approximately $86.81 billion against Ethereum’s approximately $165.67 billion, per DefiLlama’s stablecoin endpoint.
Pros, Cons, and Risks of TRC-20
Advantages
- Drop-in ERC-20 compatibility. Because TRC-20 is fully compatible with ERC-20, Solidity contracts and developer tooling carry over with minimal changes.
- Low fees and fast blocks. Tron’s resource model (bandwidth and energy) lets most TRC-20 transfers settle for a fraction of a cent, which is the economic reason USDT migrated volume onto the chain.
- Dominant stablecoin rail. USDT on Tron at approximately $85.52 billion is the single largest chain deployment of any stablecoin, which means liquidity and exchange support are deep.
Trade-offs and Risks
- Approve race condition. The TIP-20 approve method inherits the classic ERC-20 front-running risk, and clients SHOULD set the allowance to 0 before setting it to another value for the same spender.
- Non-standard USDT transfer return. Tether’s own integration notes state that the current USDT TRC-20 contract is based on a slightly older standard that does not explicitly return a boolean value in the transfer function, and developers deploying custom contracts should ensure they can handle this case.
- Issuer control. Centrally issued TRC-20 tokens, including USDT, can be paused or frozen by the issuer. That is a feature for compliance and a risk for holders who expect censorship resistance.
- Bridge dependency for cross-chain moves. Moving a TRC-20 token to another network requires a bridge or a centralized exchange, and both add counterparty risk on top of the token itself.
Types of TRC-20 Tokens
Most TRC-20 supply is concentrated in dollar stablecoins, with a long tail of utility, governance, and meme tokens sitting below them. The comparison below shows how the three largest stablecoins are split between Tron (TRC-20) and Ethereum (ERC-20) as of April 2026.
| Token | Tron (TRC-20) supply | Ethereum (ERC-20) supply |
| USDT (Tether) | approximately $85.52 billion | approximately $83.82 billion |
| USDC (Circle) | approximately $28.37 million | approximately $51.38 billion |
| USDD (TRON-native) | approximately $1.08 billion | approximately $240.18 million |
| All stablecoins (chain total) | approximately $86.81 billion | approximately $165.67 billion |
Source: DefiLlama stablecoins API (April 2026)
The split tells a simple story: Tron is a USDT chain with a small native stablecoin beside it, while Ethereum is a multi-issuer hub where USDC matches USDT almost dollar for dollar.
TRC-10 vs TRC-20 vs TRC-721
Two sibling standards sit alongside TRC-20 on Tron, each aimed at a different token class. The comparison below shows where TRC-20 fits.
| Standard | Runs on TVM | Token type | Issuance cost / compatibility |
| TRC-10 | No (native) | Fungible | 1,024 TRX per account to issue |
| TRC-20 | Yes | Fungible smart-contract token | Fully compatible with ERC-20 |
| TRC-721 | Yes | Non-fungible (NFT) | Fully compatible with ERC-721 |
Source: TRON Developer Documentation
Real-World Applications of TRC-20
Cross-Border USDT Settlement
Remittance corridors and over-the-counter desks route most of their dollar flow through USDT on Tron because the per-transaction cost stays low. With approximately $85.52 billion in USDT circulating on Tron, the chain now settles more tether than any other network, including Ethereum.
Exchange Deposits and Withdrawals
Nearly every major centralized exchange lists a TRC-20 option beside ERC-20 for USDT and, to a lesser extent, USDC. The withdrawal menu is the clearest consumer-facing signal of the standard’s reach. For readers tracking exchange-level trends, our crypto exchange data tracks the venues that move this traffic.
Scenario: Sending USDT TRC-20 Between Two Wallets
Picture Alice sending 500 USDT to Bob. Alice opens a Tron-compatible wallet (millions already hold one, our self-custody wallet data shows), pastes Bob’s Tron address, and signs a transfer call on the USDT TRC-20 contract. The canonical USD₮ contract address is viewable on TronScan, per Tether’s own integration page.
The TRON network executes the transfer and writes a log entry. The contract fires a Transfer event with Alice’s address as _from, Bob’s address as _to, and 500 (in base units) as _value. A block explorer indexes the event, Bob’s wallet polls the contract’s balanceOf and sees the new balance, and the transfer is final within a few seconds.
One wrinkle sits in the middle of this flow: Tether’s TRC-20 contract does not explicitly return a boolean value in the transfer function, which means integrators who assume a standard bool success return must check the Transfer event or the state change directly. Most wallets handle this silently, so end users rarely notice. Custom contract integrators who treat TRC-20 as identical to a textbook ERC-20 implementation can and do break.
Frequently Asked Questions
TRC-20 is the TRON network’s token standard, while ERC-20 is the Ethereum equivalent. TRC-20 is fully compatible with ERC-20 at the interface level because the TRON Virtual Machine runs the same bytecode as Ethereum’s EVM. The practical differences show up in fees (Tron is cheaper), throughput, and the validator set that secures each chain.
Tether’s own Supported Protocols page lists the canonical USD₮ TRC-20 contract address, viewable on TronScan. The contract page lists Tether Operations Limited as the issuer and six decimals for the token. Always paste the address from an official source before sending funds.
MetaMask does not natively support the TRON network, so a standard MetaMask install cannot hold TRC-20 tokens. Users hold TRC-20 assets in Tron-native wallets such as TronLink, Trust Wallet, or exchange custodial wallets. For more on the Ethereum-side alternative, see our MetaMask wallet data breakdown.
USDT circulating supply on Tron stands at approximately $85.52 billion as of April 2026. Total USDT circulating supply across every chain Tether is deployed on is approximately 188,489,825,702 tokens, per CoinGecko data. That makes Tron the single largest chain for USDT by a small but widening margin over Ethereum.
Tether states that the USD₮ TRC-20 contract is based on a slightly older standard that does not explicitly return a boolean value in the transfer function. That matters because the TIP-20 spec says callers MUST handle a false return from transfer, and contracts that assume an always-true return can misread outcomes. Wallets mask this complexity, but custom contract integrators need to read state and events directly rather than trust the return value.
Conclusion
TRC-20 is the smart-contract token standard that turns Tron into a dollar-settlement network. The raw numbers tell the story quickly: approximately $85.52 billion in USDT, nearly the entire chain’s stablecoin supply, and a growing share of global tether issuance all run on TRC-20 contracts.
Standard knowledge matters more than brand knowledge here. Knowing that TRC-20 inherits both ERC-20’s compatibility and its approve-race quirk, and that the largest token on the standard breaks the spec in one specific way, separates a safe integration from a costly one. The rail will keep growing as long as fees stay low and issuers keep minting on Tron, but the quirks in the contract layer are unlikely to change any time soon.