TRON has two fee types that are translated to TRX cost: bandwidth and energy.
Bandwidth
Bandwidth is the TRX cost per byte size of the transaction. The cost per byte is predetermined by Tron, so it can be easily calculated when a serialized transaction is available.
There are two exceptions:
- Every TRON account receives 600 free daily Bandwidth Points. Since native TRX transactions are approximately 300 bytes, a given address receives two free native transactions every 24 hours. Therefore, some transactions require no fees.
- If you send TRX to a non-existent address, you will automatically create that address. Creating a new address costs 1.1 TRX in fees.
The fee estimation is calculated with the free Bandwidth fee so when calculating a transaction that originated from an account that did not send any transaction the whole day then the fee estimation will be lower than an account that used its free Bandwidth of the day
Bandwidth Points
All transaction types on the TRON network consume Bandwidth Points. Transactions are transmitted and stored in the form of byte arrays. One byte requires one bandwidth point, so the Bandwidth Points consumed by one transaction are equal to the number of transaction bytes.
When you do not have enough available bandwidth, TRX needs to be burned in order to pay for Bandwidth Points. In this case, 1 burned TRX = amount of bandwidth consumed * bandwidth unit price. Currently, the bandwidth unit price is 1000 SUN.
How to get Bandwidth Points
Every external account receives 600 free Bandwidth Points per day. You can get additional bandwidth by staking TRX. All users share a fixed bandwidth amount according to the quantity of the staked TRX. Since Fireblocks does not currently offer native staking on the TRON network, you can use an external platform to stake your TRX.
In addition to query operations, other transactions also consume bandwidth. The Bandwidth Points consumption rules involve the following process:
- Check whether the transaction initiator’s bandwidth obtained by staking TRX is sufficient,
- When it is sufficient, use that bandwidth.
- When it is insufficient, check whether the initiator’s free bandwidth is sufficient. If so, use it. Otherwise, TRX will be burned to pay for the transaction’s bandwidth at a unit price of 0.001TRX per bandwidth.
Bandwidth Points recovery
After an account's bandwidth from staking TRX and free bandwidth are used up, they are automatically replenished within 24 hours.
Energy
When you send TRC-20 tokens over the TRON network, you are simulating the execution of a smart contract. This incurs both bandwidth and energy costs. The energy cost is calculated by executing the smart contract on a TRON node before performing the transaction. After the energy cost is revealed, you may pay the fee; bear in mind we have encoded a max fee to prevent accidental overdrawing.
- For native TRX transactions, the fee is approximately 0.3 TRX. For TRC-20 transactions (tokens and smart contracts), only a fee limit is encoded. This means the network deducts the fee from the account, like in native transfers. However, the displayed fee is actually the upper limit of the fee that can be taken from the account, not the actual fee that was deducted. If the fee limit is too low, the transaction will fail.
- For TRC-20 tokens transactions, the cost is based on the Dynamic Energy Model, and therefore depends on whether the destination address currently has available USDT funds or not. If yes, the fee is approximately 13 TRX, depending on the contract. Otherwise, the fee is approximately 28 TRX, even if in the past there was a USDT balance and now there is not.
- It is important to note that if the destination address had USDT in the past but now it currently does not have it, the fee will still be around 28 TRX.
Note that unlike on the Bitcoin and Ethereum networks, on TRON, fees are pre-determined and therefore cannot be used to prioritize transactions.
Energy Consumption
Executing each smart contract instruction consumes a certain amount of energy, depending on its complexity. When your account’s available energy is insufficient, you must burn TRX to pay for the required energy.
1 Burned TRX = Energy quantity * the unit price of Energy
Currently, the energy unit price is 280 SUN.
Note that you can only get energy by staking TRX. All users share a fixed amount of energy according to the quantity of staked TRX. Since Fireblocks does not currently offer native staking on the TRON network, you can use an external platform to stake your TRX.
When you execute a contract, its energy is calculated and gradually deducted according to the relevant instructions. The priority of an account’s energy consumption is as follows:
- Energy from staking TRX
- Energy from burning TRX
First, the energy you have from staking TRX is used. If you don’t have enough of this energy, your TRX is burned to cover the remaining energy required for the transaction. The unit price of energy is 0.00028 TRX per energy unit.
If your contract is terminated due to a revert exception occurring during execution, only the energy used by the instructions (which have already been executed) is deducted. However, when an abnormality occurs, such as a contract execution timeout or an abnormal termination due to a bug, the maximum available energy of this transaction is deducted. You can limit the maximum energy cost of this transaction by setting the fee_limit parameter of the transaction.
Energy Recovery
After an account’s energy is consumed, it will be gradually replenished within 24 hours.