HomeGuidesAPI ReferenceChangelog
GuidesAPI ReferenceCommunityDiscordBlogFAQBug BountyAnnouncementsChange Log
Guides

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

FeaturesTRC-10TRC-20Others
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

FeaturesTRC-10TRC-20Others
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)

Exchanges/Wallets

FeaturesTRC-10TRC-20Others
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)

Platform

FeaturesTRC-10TRC-20Others
Easy to TrackEasy - Built InNeed 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
DecimalUp to 6Not RequiredUp to 18
Tron-Scan ObservableYesYesNo

Bugs/Security

FeaturesTRC-10TRC-20Others
batchOverflowMedium article on batchOverflow Bug in ERC20 Smart Contracts (CVE-2018-10299)

Cost

FeaturesTRC-10TRC-20Others
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.

Community

FeaturesTRC-10TRC-20Others
ResourcesRelatively less, since it is new.High amount of resources.Fair amount of resources.

Links

FeaturesTRC-10TRC-20Others
Token Listing WebsiteTronscan Token List
ICO WebsiteTronscan Token Creation
Participation WebsiteParticipate in TRON Token Issuance
Developers DocumentationDevelopers API Documentation
Smart Contract Templates

What’s Next