# TRC-20 contract standard
TRC-20 is a set of contract standards for the issuance of token assets, contracts written in compliance with this standard are considered to be a TRC-20 contract. When wallets and exchanges are docking the assets of the TRC-20 contract, from this set of standards, you can know which functions and events the contract defines, so as to facilitate the docking.
## Optional Items
Token Name
Token Abbreviation
Token Precision(Decimals)
## Required Items
**totalSupply()** This function returns the total supply of the token.
**balanceOf()** This function returns the token balance of the specific account.
**transfer()** This function is used to transfer a number of tokens to a specific address.
**approve()** This function is used to authorize the third party (like a DAPP smart contract) to transfer the token from the token owner’s account.
**transferFrom()** This function is used to allow the third party to transfer the token from an owner account to a receiver account. The owner account must be approved to be called by the third party.
**allowance()** This function is used to query the remaining amount of tokens the third party can transfer.
## Event Functions
When the token is successfully transferred, the contract will trigger a Transfer Event.
When `approval()
` is successfully called, the contract will trigger an `Approval
` Event.