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

Features TRC-10 TRC-20 Others
Developers Learning Curve* Easy Medium Medium to Hard
Interface Customization? No Yes Yes
Accessible by Smart Contract? Yes Yes Yes
Accessible by API?** Yes No No
Lost Token Protection No No ERC223 allows avoiding accidentally losing tokens inside contracts not designed to work with sent tokens.
Handle Incoming Token Transactions No ERC223 & ERC777 allow contract developers to handle incoming token txns
GUI for ICO Yes No No
Deposit from Contract Address No No
Can contracts & addresses control/reject which tokens are sent? No No By 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?*** No No Available 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

Features TRC-10 TRC-20 Others
Token Structure Learning Curve Easy (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

Features TRC-10 TRC-20 Others
Token Structure Learning Curve Easy (Common structure) Medium (Need to learn each token structure before sending to contract address) Medium to Hard (Need to learn each token structure)

### Platform

Features TRC-10 TRC-20 Others
Easy to Track Easy - Built In Need 3rd-party platform to track Hard
In Development TVM support are in developers Compatible with ERC20 Some popular standards are available and widely used
Token Name Management Name can be duplicated Name can be duplicated Name can be duplicated
Decimal Not supported Up to 18 Up to 18
Tron-Scan Observable Yes Yes No

### Bugs/Security

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

### Cost

Features TRC-10 TRC-20 Others
Transaction Fee ~ 1000 times lower than TRC20 (using API, not by smart contract) ~ 1000 times (dynamic) higher than TRC10
Transfer Can use API to transfer, but costs bandwidth points; transfer in smart contract costs both bandwidth points and energy. Energy & Bandwidth Points ERC223 transfer to contract consumes half as much gas as ERC20 approve and transferFrom at receiver contract.
Deposit Can use API to deposit, but costs bandwidth points; deposit in smart contract costs both bandwidth points and energy. Energy & Bandwidth Points ERC223 allows depositing tokens into contract with a single transaction.

### Community

Features TRC-10 TRC-20 Others
Resources Relatively less, since it is new. High amount of resources. Fair amount of resources.

### Links

Features TRC-10 TRC-20 Others
Token Listing Website Tronscan Token List
ICO Website Tronscan Token Creation
Participation Website Participate in TRON Token Issuance
Developers Documentation Developers API Documentation
Smart Contract Templates Templates GitHub Repository
--- - **Kauri original title:** TRC10 & TRC20 Tokens - **Kauri original link:** https://kauri.io/trc10-and-trc20-tokens/6b8ebe84d0a14af48bdc09b62bf3d27c/a - **Kauri original author:** Kauri Team (@kauri) - **Kauri original Publication date:** 2019-04-01 - **Kauri original tags:** beginner, tron - **Kauri original hash:** Qmb7gSPWzScCR8xP87uSdSmeGK9qfbrBXsrNsftqttt8RV - **Kauri original checkpoint:** QmRS3wCLX2MRi62bg9NTM89qNkgm3XjpKXciLvCKAr1f1g