10 min read - Posted 01 Apr 19

TRC10 & TRC20 Tokens

Token Issuance

In the TRON network, every account is capable of issuing tokens at the expense of 1024 TRX. Users can lock their tokens in separately. To issue tokens, the issuer needs to specify a token name, total capitalization, the exchange rate to TRX, circulation duration, description, website, maximum bandwidth points consumption per account, total bandwidth points consumption, and token freeze.

For example:

assetissue password abc 1000000 1 1 2018-5-31 2018-6-30 abcdef a.com 1000 1000000 200000 180 300000 365

Tokens named abc are issued with the above command, with a capitalization totaling 1 million. The exchange rate of abc to TRX is 1:1. The duration of circulation is May 31-June 30, 2018. The token has a description of abcdef. The provided website is a.com domain.

A maximum of 1000 bandwidth points can be charged from the issuer’s account per day. A maximum of 1,000,000 bandwidth points can be charged from the issuer’s account for all token holders’ transactions each day. In total capitalization, 200,000 tokens are locked for 180 days and 300,000 tokens are locked for 365 days.

TRC10 & TRC20 Comparison

TRC-10 is a technical token standard supported by the TRON blockchain natively. TRC‌-20 is a technical standard used for smart contracts on the TRON blockchain for implementing tokens with the TRON Virtual Machine (TVM). It is fully compatible to ERC‌-20. Below is the interface:

contract TRC20Interface {
    function totalSupply() public constant returns (uint);
    function balanceOf(address tokenOwner) public constant returns (uint balance);
    function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);

    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);

The following are some comparisons between TRC-10 and TRC-20, and how these differences might be significant for each of the communities. The highlights are that TRC-10 has about 1000 times lower transaction fee than TRC-20 and can be accessed via API.


Developers Learning Curve*EasyMediumMedium to Hard
Interface Customization?NoYesYes
Accessible by Smart Contract?YesYesYes
Accessible by API?YesNoNo
Lost Token ProtectionNoNoERC223 allows avoiding accidentally losing tokens inside contracts not designed to work with sent tokens.
Handle Incoming Token TransactionsNoERC223 & ERC777 allow contract developers to handle incoming token txns
GUI for ICOYesNoNo
Deposit from Contract AddressNoNo
Can contracts & addresses control/reject which tokens are sent?NoNoBy ERC777, this can be done by registering a tokensToSend hook. (Rejection is done by reverting in the hook function.)
Can token holders authorize/revoke operators sending tokens on their behalf?*NoNoAvailable ERC777

* Each TRC-20 can have more interfaces ** For example, Create Token API *** These operators are intended to be verified contracts, such as an exchange, a check processor, or an automatic charging system.

## Investors

Token Structure Learning CurveEasy (Common structure)Medium (Need to learn each token structure before sending to contract address)Medium to Hard (Need to learn each token structure)


Token Structure Learning CurveEasy (Common structure)Medium (Need to learn each token structure before sending to contract address)Medium to Hard (Need to learn each token structure)


Easy to Track

Easy - Built In

Need 3rd-party platform to trackHard
In DevelopmentTVM support are in developersCompatible with ERC20Some popular standards are available and widely used
Token Name ManagementName can be duplicatedName can be duplicatedName can be duplicated
DecimalNot supportedUp to 18Up to 18
Tron-Scan ObservableYesYesNo


batchOverflowMedium article on batchOverflow Bug in ERC20 Smart Contracts (CVE-2018-10299)


Transaction Fee~ 1000 times lower than TRC20 (using API, not by smart contract)~ 1000 times (dynamic) higher than TRC10
TransferCan use API to transfer, but costs bandwidth points; transfer in smart contract costs both bandwidth points and energy.Energy & Bandwidth PointsERC223 transfer to contract consumes half as much gas as ERC20 approve and transferFrom at receiver contract.
DepositCan use API to deposit, but costs bandwidth points; deposit in smart contract costs both bandwidth points and energy.Energy & Bandwidth PointsERC223 allows depositing tokens into contract with a single transaction.


ResourcesRelatively less, since it is new.High amount of resources.Fair amount of resources.

Token Listing WebsiteTronscan Token List
ICO WebsiteTronscan Token Creation
Participation WebsiteParticipate in TRON Token Issuance
Developers DocumentationDevelopers API Documentation
Smart Contract TemplatesTemplates GitHub Repository
Created with Sketch.Content is"CC-BY-SA 4.0" licensed
Article On-chain
Article Author
Related Articles
TRC10 Transfer in Smart Contracts

Introduction TRC10 token is a system-level token type in TRON. Compared to TRC20 tokens, TRC10 tokens face a user experience flexibility issue. In Odyssey 3.2, developers and their smart contract callers can interact with TRC10 token via smart contracts according to the contract logic, giving them more control to implement their token in business scenarios. Unlike a TRC20 token, sending TRC10 tokens is consistent with transferring TRX in a contract, meaning TRC10 usage is similar to TRX usage. T

Kauri Team

01 Apr 19

Tron Quickstart

Introduction This guide walks the user through the TRON Quickstart (v2.0.0) image setup. The image exposes a Full Node, Solidity Node, and Event Server. Through TRON Quickstart, the user can deploy DApps, smart contracts, and interact via the TronWeb library. Dependencies Docker Please refer to the Docker official website to download and install the latest Docker version: Docker Installation for Mac Docker Installation for Windows Node.JS Console This will be used to interact with the Full and S

Kauri Team

01 Apr 19