EOS的cpu,net,ram资源价格计算

net和cpu资源价格的估算

EOS系统中,cpu和net资源是通过抵押eos获取的。抵押的时候只记录了抵押cpu/net对应的eos数量,获取到的资源不是固定的,而是在使用的时候会按照当前你所抵押eos的数量占全网抵押总量的比例实时计算的,最终体现为 limit 的值。实时计算由 eos/libraries/chain/resource_limits.cpp 中 get_account_net_limit_ex 和 get_account_cpu_limit_ex 方法实现。

用 /v1/chain/get_account API 可以查看账户资源情况,返回的 Response 中显示

"cpu_weight": 54320,
"cpu_limit": {
    "used": 1142,
    "available": 6896,
    "max": 8038
  }

价格计算:

CPU价格 = ( cpu_limit.max / 1000 ) / ( cpu_weight / 10000 ) = 1.48 ms/EOS

  • cpu_limit.max/1000 ms 总毫秒数 8.038 ms
  • cpu_weight/10000 EOS 总抵押 5.432 EOS,就是抵押的数量token数量

同理 Net 可以是这样获取

RAM资源价格计算器

要计算EOS内存资源的价格,需要使用bancor算法。如果你希望学习如何在自己的EOS钱包产品中实现资源的价格计算,可以参考这个EOS钱包开发教程。

首先用EOS的客户端工具cleos命令获取内存市场数据:

$ cleos -u http://nodes.get-scatter.com:80 get table eosio eosio rammarket                  

{
  "supply": "10000000000.0000 RAMCORE",
  "base": {
    "balance": "35044821247 RAM",
    "weight": "0.50000000000000000"
  },
  "quote": {
    "balance": "3158350.8754 EOS",
    "weight": "0.50000000000000000"
  }
}

基于上面的内存市场数据,可以按如下公式计算内存价格:

内存价格 = Connector Balance / (Smart Token’s Outstanding supply × CW) = 3158350.8754 EOS / 35044821247 RAM = 0.09 EOS/Kib

其中:

  • Connector Balance = quote.balance
  • Smart Token’s Outstanding supply = base.balance
  • CW = quote.weight
  • EOS是连接器(connector), RAMCORE是智能代币(smart token)

注意:在Bancor协议白皮书中有个错误,CW不是故意设置为50%,详情参考这里。

你可能感兴趣的:(EOS区块链,区块链)