EOS怎么实现资源价格计算器

EOS怎么实现资源价格计算器

这篇文章主要介绍“EOS怎么实现资源价格计算器”,在日常操作中,相信很多人在EOS怎么实现资源价格计算器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”EOS怎么实现资源价格计算器”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、EOS中的资源类型

在EOS区块链上,有三种类型的资源供EOS账号利用:

EOS怎么实现资源价格计算器

  • 状态存储:RAM,即内存

  • 带宽及日志存储:Bandwidth,即网络带宽

  • 计算:CPU

2、EOS资源的利用方式

在EOS区块链中,内存/RAM用于保存区块链的状态,例如交易委托账本和账户余额等。这些状态通常由应用程序逻辑来访问。

网络带宽计量你在过去3天内的平均带宽消耗。每当你发送一个动作或交易都会暂时占用一些带宽资源。

CPU计量你在过去3天里的对计算资源的平均利用情况,单位为毫秒。每当你发送一个动作或交易,也会暂时消耗一些CPU资源。

3、EOS资源的分配模型

在EOS区块链中,网络带宽和CPU资源是采用抵押方式获取的。分配给你多少带宽和CPU,取决于你抵押的EOS代币在过去3天里EOS区块链系统抵押合约持有的代币总量中占多大的比例。发送交易所消耗的网络带宽资源和CPU资源,会随时间流逝自动再释放给你。

EOS中的RAM资源则需要以市场价格购买,该价格按Bancor算法自动调节。与CPU和网络带宽资源不同,已经占用的内存资源不会自动释放,唯一的释放办法是从你的账户状态存储中删除数据,之后你就可以按市场价格出售这些空闲的内存资源。

4、资源价格计算器

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

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

$cleos-uhttp://nodes.get-scatter.com:80gettableeosioeosiorammarket{"supply":"10000000000.0000RAMCORE","base":{"balance":"35044821247RAM","weight":"0.50000000000000000"},"quote":{"balance":"3158350.8754EOS","weight":"0.50000000000000000"}}

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

内存价格=ConnectorBalance/(SmartToken’sOutstandingsupply×CW)=3158350.8754EOS/35044821247RAM=0.09EOS/Kib

其中:

  • Connector Balance = quote.balance

  • Smart Token’s Outstanding supply = base.balance

  • CW = quote.weight

  • EOS是连接器(connector), RAMCORE是智能代币(smart token)

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

网络带宽和CPU资源的价格依赖于出块节点,彼此的价格都不一样。下面以eosnewyorkio这个出块节点为例说明。

还是先用cleos获取基础数据:

$cleos-uhttps://api.eosnewyork.io/getaccounteosnewyorkionetbandwidth:staked:900.0000EOS(totalstakedelegatedfromaccounttoself)delegated:0.0010EOS(totalstakeddelegatedtoaccountfromothers)used:200bytesavailable:578.4MiBlimit:578.4MiBcpubandwidth:staked:900.0000EOS(totalstakedelegatedfromaccounttoself)delegated:0.0000EOS(totalstakeddelegatedtoaccountfromothers)used:10.91msavailable:1.864minlimit:1.864min

计算公式如下:

NetPrice=(NetStaked/NetAvailable)/3=900.0000/(578.4*1024)/3=0.0005EOS/KiB/DayCPUPrice=(CPUStaked/CPUAvailable)/3=900.0000/(1.864*60*1000)/3=0.0025EOS/ms/Day

你可以在这里查看这些资源的实时价格。

5、估算EOS DApp的内存资源需求

首先我们估算内存资源的需求及成本。参考eos节点源码eos/libraries/chain/eosio_contract.cpp:

Theamountofcode=code_sizeXsetcode_ram_bytes_multipliercode_size:sizeofwastfilesetcode_ram_bytes_multiplier=10

另外:

overhead_per_row_pper_index=32+sizeof(key)+rowdataforallobjectswhichstoredinDB

这样得到总计内存需求:

RamforDapp=Amountofcode+overhead_per_row_pper_index

6、估算EOS DApp的CPU和带宽资源需求

假设我们要开发一个EOS上的DApp,预计每天有1000个用户访问,每个用户每天进行5个交易。

通常一个交易需要消耗200字节的带宽和1ms的CPU。因此我们可以得到如下的结果:

total_cpu_dapp=1ms*5*1000=5000ms/daytotal_net_dapp=0.2*5*1000=1000KiB/day

结合前面的资源价格计算,我们得到如下的DApp资源成本数据:

TotalEOS(CPU+NET)=1000KiB*0.0005EOS/KiB/Day+5000ms/Day*0.0025EOS/ms/Day~13EOS/day

也就是说,为了运营这个DApp,让它可以支持每天5000人次的访问,我们每天需要保证合约账户上有13个EOS的资源抵押可用,这就是我们开发这个EOS DApp所需要的内存、CPU和带宽资源的估算结果。如果你希望用熟悉的PHP来开发EOS DApp,可以下载这个EOS PHP开发包。

到此,关于“EOS怎么实现资源价格计算器”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注恰卡编程网网站,小编会继续努力为大家带来更多实用的文章!

发布于 2021-12-23 21:17:47
收藏
分享
海报
0 条评论
34
上一篇:insert ignore 和 ON DUPLICATE KEY UPDATE 引发的死锁该怎么解决 下一篇:EOS官方钱包keosd有什么用
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码