解质押与取消

如何解质押 TRX、提取到期资金、取消待处理的解质押操作,以及解质押对 TRON Power 和现有投票的影响。

📘

前置阅读

质押的 TRX 可随时解除。分两步:先发起解质押并等待当前网络规定的时间,再把到期金额提取到可用余额。Stake 2.0 还可取消尚未到期的解质押并立即重新质押,无需等到等待期结束。

解质押 TRX

调用 wallet/unfreezebalancev2 发起:

BASE_URL=https://nile.trongrid.io   # Nile 测试网;示例账户位于该网络
curl -X POST ${BASE_URL}/wallet/unfreezebalancev2 \
  -d '{
    "owner_address": "TTGhREx2pDSxFX555NWz1YwGpiBVPvQA7e",
    "unfreeze_balance": 100000000,
    "resource": "ENERGY",
    "visible": true
  }'

解质押的 TRX 进入等待期,到期后才能提取。等待天数由链参数 #70 控制,可由 SR 投票修改;调用 wallet/getchainparameters 并读取 getUnfreezeDelayDays 可查询当前网络的值。目前,Nile 的等待期为 1 天,Shasta 和主网为 14 天。

等待期结束后,使用 wallet/withdrawexpireunfreeze 提取解质押的 TRX:

BASE_URL=https://nile.trongrid.io   # Nile 测试网;示例账户位于该网络
curl -X POST ${BASE_URL}/wallet/withdrawexpireunfreeze \
  -d '{
    "owner_address": "TTGhREx2pDSxFX555NWz1YwGpiBVPvQA7e",
    "visible": true
  }'

这一步把所有已过等待期的解质押 TRX 转入账户的可用余额。

解质押限制与自动提取

  • 可部分解质押 — 无需一次全部解除。入金(质押、代理)有 ≥ 1 TRX 的门槛,解质押作为出金没有这个下限:金额只要大于 0 sun、且不超过已质押总量即可。
  • 未到期的解质押最多 32 笔。达到上限后,须等至少一笔记录到期,之后即可再次发起解质押,无需先单独提取到期资金。剩余次数可通过 wallet/getavailableunfreezecount 查询。32 是 java-tron 协议实现中的固定上限(UNFREEZE_MAX_TIMES),不是链参数,不能通过提案查询或调整。
  • 已代理的 TRX 不能直接解质押 — 须先撤销代理(见资源代理)。
  • 解质押会回收 TRON Power — 见下方 TRON Power 回收
  • 合并自动提取 — 发起新解质押时,若此前有解质押已过当前网络的等待期,网络会在同一笔交易中自动提取到期金额,无需再单独调用 withdrawexpireunfreeze。提取额记录在交易的 withdraw_expire_amount 字段(查 wallet/gettransactioninfobyid)。

TRON Power 回收

从 Stake 2.0 解质押时,等量 TRON Power(TP)会从账户回收,顺序如下:

  1. 优先回收闲置(未投票)的 TP。 若有未使用的 TP,优先从这部分回收。
  2. 若不足,再从每个已投票的 SR 按比例回收已投的 TP。

从某个 SR 撤销投票的计算公式:

从某 SR 撤销的投票数 =
  需回收的总投票数
  × (为该 SR 投出的票数 / 为所有 SR 投出的总票数)

TRON Power 按比例回收示例

账户 A 已质押 2,000 TRX,持有 2,000 TP,其中:

  • 已投票的 1,000 TP(600 票投给 SR 1,400 票投给 SR 2)
  • 闲置的 1,000 TP

账户 A 解质押 1,500 TRX → 需回收 1,500 TP:

  • 前 1,000 TP 从闲置 TP 中回收(耗尽闲置池)。
  • 剩余 500 TP 按比例从已投票的 TP 中回收:
    • 从 SR 1:500 × (600 / 1,000) = 300 票撤销
    • 从 SR 2:500 × (400 / 1,000) = 200 票撤销

解质押后,账户 A 剩余 500 TP,全部处于已投票状态:SR 1 有 300 票,SR 2 有 200 票。

如何取消待处理的解质押操作

Stake 2.0 支持取消所有待处理解质押操作,立即重新质押,无需等到等待期结束。使用 wallet/cancelallunfreezev2

BASE_URL=https://nile.trongrid.io   # Nile 测试网;示例账户位于该网络
curl -X POST ${BASE_URL}/wallet/cancelallunfreezev2 \
  -d '{
    "owner_address": "TTGhREx2pDSxFX555NWz1YwGpiBVPvQA7e",
    "visible": true
  }'

操作说明:

  • 仍在等待期内的所有解质押操作将被取消,其 TRX 立即重新质押,恢复解质押前相应的带宽 / 能量和 TP。
  • 已过等待期的解质押操作不会被取消——该部分 TRX 会在同一笔交易中自动提取到账户的可用余额。

交易信息中包含两个相关字段(可通过 wallet/gettransactioninfobyid 查询):

  • cancel_unfreezeV2_amount — 按资源类型统计重新质押金额的对象,键为 BANDWIDTHENERGYTRON_POWER,值以 sun 为单位
  • withdraw_expire_amount — 从已到期解质押操作中提取的 TRX 金额,以 sun 为单位

cancelallunfreezev2 API 受链参数 #77getAllowCancelAllUnfreezeV2)控制。主网已经处于激活状态。

关于 Stake 1.0 的解质押说明

仍在 Stake 1.0 下质押的 TRX,使用 Stake 1.0 API(而非 unfreezebalancev2)。注意:Stake 1.0 解质押会一次性清空所有投票,与 Stake 2.0 按比例回收 TP 的方式不同。


相关资源