带宽与能量

带宽用于计量交易字节大小,能量用于计量智能合约执行;两者都可通过质押或资源代理获取,并按 24 小时窗口恢复。

TRON 网络通过带宽和能量计量并结算资源成本。带宽(Bandwidth) 对应交易写入链上的字节大小,能量(Energy) 对应 TVM 执行智能合约的计算开销。带宽和能量都可以通过质押 TRX 获取,也可以由其他账户代理;两者都会在 24 小时滚动窗口内逐步恢复。

区别在于:带宽有每账户每日 600 的免费额度,能量没有免费额度。普通转账通常主要消耗带宽,智能合约部署和调用通常主要消耗能量。

📘

前置阅读

快速对比

维度带宽能量
用于支付交易字节大小TVM 智能合约执行
每日网络供给43,200,000,000 Bandwidth180,000,000,000 Energy
免费额度每账户每日 600 Bandwidth
获取方式质押 TRX,或接收带宽代理质押 TRX,或接收能量代理
恢复方式24 小时滚动窗口线性恢复24 小时滚动窗口线性恢复
不足时主网当前:每 Bandwidth 燃烧 0.001 TRX主网当前:每 Energy 燃烧 0.0001 TRX,并受 fee_limit 约束

带宽单价和能量单价都是链上参数,分别对应 getTransactionFeegetEnergyFee。查询当前参数值及了解参数变更流程,参见网络参数。资源不足时燃烧 TRX 支付资源成本、能量分摊和动态能量模型参见资源支付与能量分摊

带宽

除只读查询外,交易广播并写入链上时都会消耗带宽。一笔交易消耗的带宽通常等于该交易序列化后的字节数。交易包含的签名越多、合约参数越长,带宽成本越高。

每个已激活外部账户每天获得 600 Bandwidth 免费额度。更高频的账户可以质押 TRX 获取带宽。全网每日带宽供给固定为 43,200,000,000 Bandwidth,并按质押占比分配:

账户获得的 Bandwidth
  = 账户用于带宽的质押 TRX / 全网用于带宽的质押 TRX
  × 43_200_000_000

当账户可用带宽不足时,网络会按当前带宽单价从发送方余额中燃烧 TRX;主网当前为每 Bandwidth 0.001 TRX。

能量

智能合约部署和调用会消耗能量。每个 TVM opcode 都有对应能量成本,单次调用的总能量取决于实际执行路径。同一个合约方法在不同输入下可能消耗不同能量;热门合约还可能受到动态能量模型惩罚。

全网每日能量供给固定为 180,000,000,000 Energy,并按质押占比分配:

账户获得的 Energy
  = 账户用于能量的质押 TRX / 全网用于能量的质押 TRX
  × 180_000_000_000

能量没有免费额度。账户可通过三种方式覆盖合约执行成本:

  • 自己质押 TRX 获取 Energy。
  • 接收其他账户代理来的 Energy。
  • 在执行时按当前能量单价燃烧 TRX;主网当前为每 Energy 0.0001 TRX,调用方可燃烧的上限由交易的 fee_limit 限制。

质押获取资源

账户通过 FreezeBalanceV2Contract 质押 TRX,并选择获取带宽或能量。HTTP API 为 wallet/freezebalancev2

BASE_URL=https://api.shasta.trongrid.io
curl -X POST ${BASE_URL}/wallet/freezebalancev2 \
  -H "Content-Type: application/json" \
  -d '{
    "owner_address": "TBRmnXKMEVfQ8XeQA2NroC9cGi77TvPbNb",
    "frozen_balance": 1000000,
    "resource": "BANDWIDTH",
    "visible": true
  }'

关键字段:

  • owner_address:质押账户地址。visible: true 表示使用 Base58Check 地址。
  • frozen_balance:质押金额,单位为 sun。1,000,000 sun = 1 TRX。
  • resource"BANDWIDTH""ENERGY"

接口返回未签名交易。签名后通过 wallet/broadcasttransaction 广播。端到端流程参见质押与代理资源 recipe

质押可以解除。解除质押分两步:

  1. 提交 UnfreezeBalanceV2Contract,发起解除质押并进入等待期。
  2. 等待期结束后,提交 WithdrawExpireUnfreezeContract,提取已解除质押的 TRX。

当前主网 Stake 2.0 等待期由链参数 #70 getUnfreezeDelayDays 控制,主网当前值为 14 天。完整生命周期参见 TRON 网络质押

资源代理

账户也可以把自己质押获得的带宽或能量代理给另一个账户。接收方无需自行质押,就能直接使用这部分资源。资源代理通过 DelegateResourceContract 发起,通过 UnDelegateResourceContract 撤销。

资源代理有几个重要边界:

  • 代理金额至少为 1 TRX。
  • 不能把资源代理给自己。
  • 不能把资源代理给合约账户。
  • 可选的 lock_period 以区块数计,而不是秒;实际锁定时间约为 lock_period × 3 秒
  • 如果重新代理已锁定资源,新锁定期不能短于原有剩余时间。

在 DApp 和交易所场景中,能量代理比带宽代理更常见:带宽有免费额度,能量没有免费额度,合约交互也更容易快速耗尽能量。

恢复周期

带宽和能量消耗后不会在固定整点重置,而是在 24 小时滚动窗口内线性恢复。如果账户一次性耗尽全部可用资源,理论上需要约 24 小时恢复到满额;如果期间继续消耗或发生资源代理撤销,恢复进度会与新的资源状态合并计算。

撤销资源代理时,网络还会按比例处理接收方尚未恢复的资源,避免接收方在资源份额减少后继续占用原代理份额对应的未恢复资源。具体公式参见撤销代理时的资源回收

相关资源