简介
如果是eos的普通用户,这段时间遇到的最大的问题应该是:“咦?cpu怎么又不够发交易了?!”。继ram之后,cpu又帮eos一次次的上了头条。其实,cpu资源紧缺的问题,我们早在7月份就发现了并给官方提了issue,并第一次从官方口中得知了cpu资源分配的机制。下面,就跟大家讲下cpu资源分配的原理。
CPU资源分配机制
其实,正如上面issue中block.one回复的,cpu资源分配的算法是动态的,遵循以下几个原则:
1. 全网cpu的利用率分忙时和闲时,当利用率超过一定阈值,即为忙时。这个阈值使用eosio.system的setparams方法修改,参数为target_block_cpu_usage_pct。目前,eos主网的值为3000,即cpu利用率为30%。
2. 每个区块cpu总量=max_block_cpu_usage*target_block_cpu_usage_pct=200*0.3=60ms
3. 当cpu利用率低于阈值,单个账户最高可用的cpu=账户抵押的eos/全网抵押的eos*每个区块cpu总量*1000倍,倍数是动态调整的,最高为1000
4. 当cpu利用率高于阈值,单个账户可用cpu=账户抵押的eos/全网抵押的eos*每个区块cpu总量,严格的1:1分配
为了解决cpu不足的问题,经过两次提案,target_block_cpu_usage_pct已经由1000更改到了3000,最近一次提案详情。由此可见,闲忙时期的cpu差异可能会非常大。闲时可用的cpu能发出一笔交易,到忙时可能cpu就归零了。更详细的cpu问题的解释,我推荐斜杠大神的文章:"Dapp"你们走的太快了,请等等你们的"EOS",有兴趣的亲可以仔细读读。
CPU问题解决方法
1. 账户加质押
对于土豪来说,加质押当然就能解决问题,亲测3000个eos质押到cpu上,基本闲忙时都能cover住普通转账。但是,不断加质押无疑是恶性循环,最后eos成了富人的游戏,实际上eos全网的cpu利用率也并没很高。
2. CPU租赁
针对cpu的诸多问题,dapp们也是殚精竭虑的推出了很多解决方案。我就推荐几家好用的cpu租赁dapp,大家遇到问题的时候可以自取。
1)bankofstaked
地址:https://eoslaomao.com/bankofstaked
出品方:超级节点eoslaomao
github:https://github.com/EOSLaoMao/BankofStaked-CE
之前,eoslaomao就在麒麟测试网号召中国的bp们参与cpu救济行动,bankofstaked几经迭代,终于推出了稳定的成品。无论从产品可用度,还是安全角度来说,都是非常过硬的。这里分享一篇eoslaomao节点负责人赵余讲解的bankofstaked设计思路,供感兴趣的技术同学参考。
2)chintai
地址:https://eos.chintai.io/exchange/EOS7D
出品方:超级节点eos42
使用方法详见eos42官方博文,chintai的年化收益率最高达到20%左右,不仅是cpu救急,屯币的同学也可以选择当个包租公/婆稳稳的幸福即可。
3)meetone钱包
地址:https://dapp.ethte.com/eostools/meetonestake
出品方:meetone钱包
假如,你只有一个账号cpu告急,没人来救你,或者手里没有eos了,但是有钱有支付宝,那meetone绝对是绝佳选择。输入账号—付款—cpu即刻到账—账号活啦。作为第一个通过apple store审核的eos钱包,meetone的产品体验和安全性也是绝对值得信赖的。没有eos账号的同学,也可以支付宝付款买一个eos账号,下载meetone钱包即可。
后记
其实,上面说的无论是改参数,还是租赁,并没有从根本上解决cpu紧缺的问题。最近,麒麟测试网的中国bp们也在召集eos的开发者们研究源码,希望从根本上解决cpu分配机制问题。另外,eos官方也准备推出rex市场,可以将eos兑换成rex进行cpu兑换,但感觉和官方钱包一样会拖很久才面世,可以先不考虑了。有才华的大家,也可以研究下eos源码:cpu资源分配,官方是很乐意接受pr的。