Home指南API 参考手册
指南API 参考手册社区Discord博客FAQ漏洞赏金公告中心English(英文版)Log In
指南

能量消耗机制

TRON网络能量消耗机制

基本能量消耗规则

在执行合约交易时,系统会逐条指令计算并扣除所需能量,账户能量的使用遵循以下优先级原则:

  1. 优先使用账户可用能量(通过质押或租赁获得)
  2. 若能量不足,不足的能量,按固定费率(0.0001 TRX / 能量)燃烧账户内的 TRX

合约能量分摊机制

对于合约调用,为降低调用者的成本,TRON支持合约部署者分担部分能量消耗,具体细节请参考 合约能量分摊机制 章节。

能量扣除规则:

合约部署者承担部分:

  • 直接从部署者账户的可用能量中扣除,不会燃烧部署者的TRX

合约调用者承担部分:

  1. 优先使用账户中的可用能量
  2. 不足部分,按固定费率燃烧账户余额中的 TRX

TRON 能量分摊机制

为丰富智能合约的应用场景,TRON网络创新性地推出了合约能量分摊机制。该机制允许合约部署者分担部分执行能耗,具体规则如下:

1. 核心参数设置

参数名称

说明

取值范围

consume_user_resource_percent

调用者应承担的能量百分比(如设为60表示调用者承担60%)

0-100

origin_energy_limit

部署者为单笔交易承担的能量上限

0

注意:该功能自 Java-Tron Odyssey 3.2 版本起正式支持。部署新的智能合约时,必须显式设置 origin_energy_limit 参数,且其值需为大于 0 的整数。对于 Odyssey 3.2 之前已部署在主网的合约,虽然该参数存储值为 0,但系统执行时会将其视为 10,000,000。

2. 分摊计算逻辑

当合约执行需消耗X单位能量时: ① 理论分摊:

  • 调用者支付 = X × consume_user_resource_percent%
  • 部署者支付 = X × (100 - consume_user_resource_percent)%

实际支付:

  • 部署者实付

    部署者实付 = min( X × (100 - consume_user_resource_percent)%,
                    origin_energy_limit,
                    部署者账户可用能量
                )
  • 调用者实付 = X - 部署者实付

部署者实付为:理论分摊值、合约设置的 origin_energy_limit 及部署者账户当前可用能量 三者中的最小值,确保支付不超过实际可支配资源。调用者实付则补足剩余部分(总能耗减去部署者实际支付部分),形成完整的成本覆盖。下面以示例进行说明:

示例

假设某次合约调用,总共需支付80单位能量,若部署者仅有10能量可用 ,并且合约参数设置为:

  • consume_user_resource_percent = 60
  • origin_energy_limit = 40

→ 理论分摊:用户48,部署者32。 → 实际分摊:部署者支付10(受限于部署者的可用能量:10,及origin_energy_limit:40);用户支付70(80-10)。

3. 参数调整

参数修改接口影响范围
consume_user_resource_percentwallet/updatesetting合约级别
origin_energy_limitwallet/updateenergylimit合约级别

注意:以上两个参数的调整将影响该合约的所有非查询交易,请谨慎操作。

在TRON网络中,除了合约层级的能量分摊配置,合约交易还引入了交易级别参数 FeeLimit,用于限制调用者可承担的能量支出上限,从而提供更灵活的成本控制手段。具体请参考 Feelimit章节。