首先我们需要了解,在 TRON 上执行每一笔交易都需要消耗资源。
TRON 有自己的一套资源模型,即能量和带宽,它们是TRON网络两种重要的系统资源。其中带宽是衡量保存在区块链数据库中的交易字节大小的单位,交易越大,消耗的带宽资源会越多。能量是衡量在 TRON 网络上TVM虚拟机执行特定操作所需的计算量的单位,由于智能合约交易都需要计算资源来执行,因此每笔智能合约交易都需要付费。
带宽
所有类型的交易都需要支付带宽, 交易以字节数组的形式在网络中传输以及存储,一个字节需要一个带宽,因此一笔交易需要消耗的带宽等于交易字节数。
当可用带宽不足时,需要燃烧TRX来支付带宽费用,目前,每一个带宽的单价是0.001TRX。
能量
智能合约运行时,每一条指令的执行都需要消耗一定的能量,所以不同复杂度的合约,消耗的能量数量是不一样的。在执行合约时,逐条指令计算并扣除Energy。
当账户可用能量不足时,需要燃烧TRX来支付相应的能量费用,目前,每一个能量的单价是0.00028TRX。
回到问题上来,由于 TRON 的资源体系,当用户执行一笔交易时,即使最终没有执行成功,在执行过程中也会消耗执行该笔交易需要的资源,若当前资源不够,将会燃烧 TRX 来支付资源费用。这也就是为什么交易失败了,还会扣除手续费的原因。