TRON波场费用模型

版权声明:转载请说明出处 https://blog.csdn.net/weixin_39842528/article/details/84032803

波场费用模型

TRON网络中的资源有3种:带宽,CPU和存储。得益于波场独有的内存模型,TRON网络中的存储资源几乎是无限的。 但是过多无关紧要的交易仍然会消耗过多的带宽和CPU资源时,导致导致系统阻塞,影响正常交易的处理确认。 为了保持交易的相对公平,波场网络引入了Bandwidth point 和 Energy 两种资源。 其中带宽消耗的是Bandwidth Point,而CPU消耗的是Energy。
注意

  • 普通交易仅消耗Bandwidth points
  • 智能合约的操作不仅要消耗Bandwidth points,还会消耗Energy

1.0Bandwidth Points
1.1 Bandwidth Points的来源
1.2 Bandwidth Points的消耗
1.3 Bandwidth Points的计算规则
2.0Energy
2.1 Energy的获取
2.2 Energy的消耗
2.3 Energy的计算规则 3.资源上限自适应变更

 

1.Bandwidth Points

交易以字节数组的形式在网络中传输及存储,一条交易消耗的Bandwidth Points = 交易字节数 * Bandwidth Points费率。当前Bandwidth Points费率 = 1。

如一条交易的字节数组长度为200,那么该交易需要消耗200 Bandwidth Points。

注意 由于网络中总冻结资金以及账户的冻结资金随时可能发生变化,因此账户拥有的Bandwidth Points不是固定值。

 

1.1 Bandwidth Points的来源

Bandwidth Points的获取分两种:

  • 一种是通过冻结TRX获取的Bandwidth Points, 额度 = 为获取Bandwidth Points冻结的TRX / 整个网络为获取Bandwidth Points冻结的TRX 总额 * 43_200_000_000。 也就是所有用户按冻结TRX平分固定额度的Bandwidth Points。

  • 还有一种是每个账户固定免费额度的TRX,为5000。

 

1.2 Bandwidth Points的消耗

除了查询操作,任何交易都需要消耗bandwidth points。

还有一种情况,如果是转账,包括普通转账或发行Token转账,如果目标账户不存在,转账操作则会创建账户并转账,只会扣除创建账户消耗的Bandwidth Points,转账不会再消耗额外的Bandwidth Points。

 

1.3 Bandwidth Points的计算规则

Bandwidth Points是一个账户1天内能够使用的总字节数。一定时间内,整个网络能够处理的Bandwidth为确定值。

如果交易需要创建新账户,Bandwidth Points消耗如下:

1、尝试消耗交易发起者冻结获取的Bandwidth Points。如果交易发起者Bandwidth Points不足,则进入下一步。

2、尝试消耗交易发起者的TRX,这部分烧掉0.1TRX。

如果交易是发行Token转账,Bandwidth Points消耗如下:

1、依次验证 发行Token资产总的免费Bandwidth Points是否足够消耗,转账发起者的Token剩余免费Bandwidth Points是否足够消耗,
Token发行者冻结TRX获取Bandwidth Points剩余量是否足够消耗。如果满足则扣除Token发行者的Bandwidth Points,任意一个不满足则进入下一步。

2、尝试消耗交易发起者冻结获取的Bandwidth Points。如果交易发起者Bandwidth Points不足,则进入下一步。

3、尝试消耗交易发起者的免费Bandwidth Points。如果免费Bandwidth Points也不足,则进入下一步。

4、尝试消耗交易发起者的TRX,交易的字节数 * 10 sun。

如果交易普通交易,Bandwidth Points消耗如下:

1、尝试消耗交易发起者冻结获取的Bandwidth Points。如果交易发起者Bandwidth Points不足,则进入下一步。

2、尝试消耗交易发起者的免费Bandwidth Points。如果免费Bandwidth Points也不足,则进入下一步。

3、尝试消耗交易发起者的TRX,交易的字节数 * 10 sun。

 

2.Energy

智能合约的创建和运行需要消耗CPU资源,用于确定智能合约在虚拟机执行过程中消耗的系统时间,单位为微秒。CPU资源以Energy为单位消耗,也就是说1Energy == 1 微秒。 如一条合约在虚拟机中执行花费100微秒,即需要消耗100Energy。 24小时内,TRON网络提供的总CPU资源为50_000_000_000Energy。

 

2.1 Energy的获取

Energy只能通过冻结TRX获取,获取的Energy额度 = 为获取Energy冻结的TRX / 整个网络为获取Energy冻结的TRX 总额 * 50_000_000_000。 也就是所有用户按冻结TRX平分固定额度的Energy。

例如,假设当前网络中为了Energy而冻结的TRX总量为1000_000_000TRX,一个账户冻结了1000TRX,占总冻结量的百万分之一,即32400微秒。
一条合约执行如果需要花费324微秒,那么用户可以触发100次该合约。

注意

  • 由于网络中总冻结量以及账户的冻结量随时可能发生变化,因此账户拥有的CPU资源不是固定值。
  • 冻结资金不可同时获得Bandwidth Points 与Energy,即如果指定冻结TRX获得bandwidth,Energy不会变化。

 

2.2 Energy的消耗

只有智能合约的创建和执行都需要消耗Energy,普通合约的执行不消耗Energy。

消耗的Energy,根据智能合约中定义的百分比,由智能合约所有者和调用者共同提供;如果智能合约所有者Energy不足,剩余的都由调用者提供。

 

2.3 Energy的计算规则

Energy的消耗规则如下:

1、根据智能合约中设定的百分比参数,扣除智能合约所有者通过冻结TRX获取的的Energy,不足的部分由调用者提供。

2、尝试消耗交易发起者冻结获取的Energy。如果不足,有多少扣多少,然后进入下一步。

3、尝试消耗交易发起者的TRX,消耗的TRX = 所需Energy * 100 sun。

 

3.资源上限自适应变更

注意:该功能尚未开启

为降低网络的使用成本,在网络资源低利用率的情况下,自适应的增加用户的可用资源。目前仅支持通过冻结获得的 Bandwidth。 免费Bandwidth及CPU资源不支持自适应变更。

通过调整带宽上限的方式,调整每个账户拥有的资源量。网络中原有字段"当前带宽上限",现在新增字段"目标带宽上限"。

每1分钟统计一次网络中带宽使用量,当使用量大于1min内的"目标带宽上限",增加"当前带宽上限"。增加比例为1/1000。 反之,当使用量小于1min内的"目标带宽上限",减少"当前带宽上限"。减小比例为1/1000。

如,初始配置中"当前带宽上限"及"目标带宽上限"都为43_200_000_000L,1分钟的资源上限为30_000_000L。

在第一分钟内资源使用量为<30_000_000L时,"当前带宽上限"="当前带宽上限"*1000/999=43_243_243_243L。 在第二分钟内资源使用量为>30_000_000L时,"当前带宽上限"="当前带宽上限"*99/100=42_810_810_810L。

"当前带宽上限"在"目标带宽上限","目标带宽上限"*1000]范围内,即第二分钟后,"当前带宽上限"实际为43_200_000_000L

猜你喜欢

转载自blog.csdn.net/weixin_39842528/article/details/84032803