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

在TRON网络上质押

TRON 网络使用三种系统资源:

如何质押获取系统资源

能量和带宽资源由帐户所有者通过质押来获取,请参考wallet/freezebalancev2了解如何通过HTTP API完成质押操作、参考Stake2.0 Solidity API了解如何通过合约完成质押操作。

TRON通过质押机制分配网络资源。质押TRX除了可以获取带宽或者能量资源外,还将同时获得与质押量等量的投票权(TRON Power,简称TP),质押1TRX,获得1TP。质押获取到的带宽或者能量资源用于支付交易费用,获取到的投票权用于给超级代表投票以获取投票奖励。

解质押操作会释放对应的资源。

如何代理资源

账户在通过质押获取到能量或者带宽资源后,可以通过代理操作将资源代理给其它地址,也可以通过取消代理操作收回分配出去的资源,代理资源需要注意以下情况:

  • 只有能量和带宽可以被代理给其他地址,投票权无法被代理
  • 只有 Stake2.0 质押获取且未使用的资源可以代理给其它地址
  • 只能代理给一个已激活的外部账户地址,不能代理给合约地址

可以通过 wallet/getcandelegatedmaxsize 接口查询账户某种资源的可供代理份额。代理资源时可采用时间锁并设置锁定的时间。如果采用了时间锁,完成资源代理后,需要等待设定的锁定时间过后才能取消对该地址的资源代理, 锁定期间,如果用户对同一个地址再次进行了该种类型资源的代理,锁定时间将被设置为新设置的值。如果不采用时间锁,资源代理后,可立刻取消代理。

如何解质押

完成 TRX 质押后可随时解质押(unstake),解质押后需要等待 14 天,才可以将解质押的本金提取到自己的账户中,14 天是 TRON 网络第 70 号参数,可以被网络治理提议投票修改。请参考 unfreezebalancev2了解如何通过 HTTP API 完成解质押操作,然后可以使用 withdrawexpireunfreeze 将已过 14 天解锁期(pending period)的解质押 TRX 提取到你的账户。

用户可多次分批解质押,但只允许最多同时进行 32 笔解质押操作,也就说当用户发起第一笔解质押,在这笔解质押的资金达到可提取状态之前,只能再发起 31 笔解质押操作。可通过getavailableunfreezecount接口查询剩余解质押次数。

已经代理出去的资源对应的 TRX 不可被解质押,解质押除了会失去等量的资源份额外,还将失去等量的 TP 资源。

当您发送一笔解质押操作,并且同时有已过解锁期、可提取的资产时,这部分已解押的资产将会随同该取消质押操作一起提取到您的账户中。您可以使用 [gettransactioninfobyid](/reference/gettransactioninfobyid) API 来查询交易中已过解锁期并被提取的已解质押的 TRX 数量,该数量在交易信息中对应 withdraw_expire_amount 字段。

投票权资源回收

解锁在 Stake 2.0 阶段质押的 TRX 后,会失去等量的投票权,系统优先回收账户内空闲的投票权,只有空闲的投票权不够回收时, 才会根据需要撤销一部分账户投票,如果用户投票给了多个超级代表, 将按照比例从每个超级代表撤销一定数量的投票,并将对应的投票权回收。从每个SR撤销的投数的计算公式为:

从当前超级代表撤销的票数 = 总撤票数 * (给当前超级代表的投票数 / 该账户总投票数)

举个例子,假设 A 总共质押了 2,000 TRX,并获取到 2,000 TP,其中的 1000 TP 投票给了 2 个超级代表,分别为 600 票和 400 票,账户中剩余 1000 TP。此时,A解质押 1,500 TRX,这意味着需要从 A 账户中回收 1,500 TP, 在这种情况下,会优先回收A账户中空闲的 1000 TP,另外会分别从 2 个超级代表撤销 300 票和 200 票,然后回收这 500 TP。这里撤票的计算方式如下:

  • 超级代表 1 撤票数 = 500 * (600 / 1,000) = 300
  • 超级代表 2 撤票数 = 500 * (400 / 1,000) = 200

目前TRON网络使用的是 Stake 2.0 质押机制,但 Stake 1.0 质押获得的资源和投票继续有效,在 Stake 1.0 质押的 TRX,仍然可以通过 Stake 1.0 API赎回,但需要注意的是,如果解质押 Stake 1.0 质押的 TRX,会撤销账户所有的投票。

如何取消全部解质押

Stake2.0 支持在用户解质押 TRX 后随时取消全部解质押,这样会使资产再次用于质押以获取相应的资源,而不必等待解质押本金过了锁定期后,将本金提取到账户内,再进行质押。请参考 [cancelallunfreezev2](/reference/cancelallunfreezev2)了解如何通过 HTTP API 完成取消全部解质押操作。

在执行取消解质押时,会将所有未完成的解质押的本金重新用于质押,获取的资源类型与之前质押时相同。如果存在已过锁定期的解质押的本金,那么本次取消解质押操作会同时将已过锁定期的解质押本金提取到账户内,用户可通过gettransactioninfobyid接口查询本次交易取消的解质押本金数额 cancel_unfreezeV2_amount,以及提取到的已过锁定期的本金数量withdraw_expire_amount

API

下表为质押模型相关接口及其说明:

API描述
freezebalancev2质押
unfreezebalancev2解质押
unfreezebalance解锁在 Stake 1.0 阶段质押的 TRX
delegateresource资源代理
undelegateresource取消资源代理
withdrawexpireunfreeze提取已过锁定期的解质押本金
getavailableunfreezecount查看剩余解质押次数
getcanwithdrawunfreezeamount查看可提取的已过锁定期的解质押本金
getcandelegatedmaxsize查看特定资源类型的可代理的资源份额数量
getdelegatedresourcev2查看某地址代理给目标地址的资源情况
getdelegatedresourceaccountindexv2查看某地址资源代理情况与资源被代理情况
getaccount查看账户质押情况、资源份额、解质押情况、投票情况
getaccountresource查看资源总量、已使用量、可用数量
cancelallunfreezev2取消全部解质押