上海时时彩票网|上海时时彩时间表
文章阅读页通栏

TRON开发者指南:关于能源消耗机制

来源: 波场Tron 作者:小波
波场协议中的资源消耗机制管理智能合约执行。 本指南将指导开发人员了解部署、触发和执行智能合约、资源消耗流程和相关接口/字段方面的管理规则。......
波场协议中的资源消耗机制管理智能合约执行。 本指南将指导开发人员了解部署、触发和执行智能合约、资源消耗流程和相关接口/字段方面的管理规则。
 
管理规则

部署合同

如果DeveloperEnergy <= min(EnergyOfFeelimit, EnergyOfAccount),则合同可以成功部署。 否则,会出现OUT_OF_ENERGY错误。

触发合约

当 consume_user_resource_percent (% ratio user pays) = 100,调用方支付操作的全部费用。 调用方需要满足:

CallerNeedEnergy <= min(EnergyOfFeelimit,EnergyOfAccount)

从而成功调用合约。 否则,会出现OUT_OF_ENERGY错误。

当 0 = < 消耗_user_资源_% < 100 时,这表示操作成本由开发人员和调用者按比例支付。 如果开发人员有足够的能量,调用方需要满足:

● CallerNeedEnergy = NeedEnergy * consume_user_resource_percent / 100
● CallerNeedEnergy <= min(EnergyOfFeelimit,EnergyOfAccount)

开发人员:

DeveloperNeedEnergy = NeedEnergy *(100-consume_user_resource_percent)/ 100

为了成功调用合约,DeveloperNeedEnergy <= OriginEnergyLimit 。 否则,报告OUT_OF_ENERGY 。

如果开发人员的能量不足,则剩余的能量消耗由调用方提供,并且不消耗开发者的TRX。 也就是说,调用者需要满足:

TotalEnergy <= min(EnergyOfFeelimit,EnergyOfAccount)+ DeveloperProvideEnergy

为了成功调用合约,DeveloperProvideEnergy <= OriginEnergyLimit 。 否则,会出现OUT_OF_ENERGY错误。

合约执行

执行合约方法时,OUT_OFO_ENERE 可以根据界面查看详细信息。 调用/ walletsolidity / gettransactionInfoByID接口,并将返回的resMessage字段从十六进制转换为字符串。

resMessages包括:执行“AND”操作的能量不足:curInvokeEnergyLimit[1000],curOpEnergy[3],usedEnergy[1000] 类似信息。

术语

定义

curInvokeEnergyLimit

表示最大能耗, 即 min(EnergyOfFeelimit,EnergyOfAccount).

curOpEnergy

当前运营仍需要能源。

usedEnergy

本地用于呼叫的能量。

能源不足解决方案

1. 如果EnergyOFAccount < curInvokeEnergyLimit,表示调用方剩余能量和TRX余额不足,需要给TRX充值。
2. 如果EnergyOfFeelimit < curInvokeEnergyLimit,表明费用限额设置太小,需要增加费用限额。 最高费用限额为1000 TRX。

消费过程

1. 根据合同中设置的 consume_user_resource_percent 比?#21097;?#28040;耗合同创建者从冻结TRX获得的能量。如果能量不足,继续消耗合同创建者的剩余能量。任何剩余的能源短缺?#21152;?#21512;同来电者提供。
2. 合同来电者消费过程:(首先消耗呼叫者通过冻结TRX获得的能量,以确保合同可以正常执行,并且通过销毁TRX来抵消不足部分)。
3. 如果合同创建者未冻结能源资源的TRX,则呼叫者需要所有消费。

专业术语

术语解释

合约创建者

?#21019;?#24314;合约的账户

合约调用者

即调用合约的账户

Energy

智能合约运行时每一步指令都需要消耗一定的资源,资源的多少用energy的值来衡量。

Freeze

冻结,即将持有的trx锁定,无法进行交易,作为抵押,并?#28304;?#33719;得免费使用energy的权利。具体计算与全网所有账户冻结有关,可参考相关部分计算。

Fee Limit

用户在调用或者创建智能合约时,指定的最高可接受的trx费用消耗,包含消耗冻结获得资源的trx 和消耗用户本身持有的trx两部分,优先使用冻结资源。

Call Value

用户在智能合约调用或创建时给智能合约本身的账户转账的trx数量,在判断feelimit的时候会抛去这部分的值。

consume_user_resource_percent

对于一个智能合约来说,付费是由两大部分组成的。一部分是合约开发者付费,另一部分是由合约调用者支付。这个值是调用者付费的比例。

origin_energy_limit

开发者设置的在一次合约调用过程中?#32422;?#28040;耗的energy的上限,必须大于0。对于之前老的合约,没有提供设置该值的参数,会存成0,但是会按照1000万energy上限计算,开发者可以通过updateEnergyLimit接口重新设置该值,设置新值?#24065;?#24517;须大于0。

相关接口

参数getTransactionInfoById 查询包含合约调用或合约创建结果的交易信息。

getTransactionInfoById 需要1个参数,交易 ID
 
相关字段

● 相关字段

Copy

energy_usage: //本次合约调用者消耗的Energy数量
0
energy_fee: //本次合约调用者消耗TRX数量(SUN)
120
origin_energy_usage: //本次合约创建者提供的Energy数量
0
energy_usage_total: //本次合约总共消耗的Energy数量(包含energy_usage,origin_energy_usage 和energy_fee对应的Energy数量)
252
net_usage: //本次合约消耗的Bandwidth(?#35805;?#21547;NetFee对应的)
0
net_fee: //本次合约因Bandwidth不足消耗的TRX
0

FreezeBalance 冻结TRX以获得带宽或能量

freezeBalance frozen_balance frozen_duration [ResourceCode:0 BANDWIDTH,1 ENERGY]
 
说明
参数 “fee_limit” 在部署合约和调用合约的过程中传递。 TRX 数量对应于此执行中消耗的能量。

能量部分被冻结: (冻结平衡量/冻结以获得总能量) * 能量消耗。 销毁TRX以获得能量部分:按比例消耗的TRX数量。

关键词: TRON  波场协议  
0/300
? 上海时时彩票网