EOS账号ram,cpu资源用尽了,啥都不能干了,怎么办

     核心原因是抵押CPU这一操作本身需要CPU,所以就存在鸡生蛋,蛋生鸡问题。解决方法就是让其他人帮你抵押CPU或者法币租赁CPU,详情如下:

问题重现case1

    比如如下账号testtest1233,ram, cpu资源都没有了

EOS账号ram,cpu资源用尽了,啥都不能干了,怎么办_第1张图片

因此创建新账号失败

于是想着购买cpu,结果失败

EOS账号ram,cpu资源用尽了,啥都不能干了,怎么办_第2张图片

那购买ram,却仍旧失败

    所以进入了一个死循环,没有ram没法购买cpu,没有cpu没法购买ram,因而要破解这个先有鸡还是先有蛋的问题。

问题重现case2

     ram够,cpu不够,这种情况下是否可以激活要看情况,具体可以在【EOS互助平台】平台检测是否可以激活。

解决方案

    目前有两种方法

    1) 让其他账号给你买一些ram或者cpu

        这个要找到其他账号的过程由个人的人脉决定,是一个不确定状态

    2) 我搭建了一个【EOS互助平台】专门用来解决这个问题,具体请参考这篇文章【EOS CPU不足

       https://blog.csdn.net/itleaks/article/details/80812902   

    3)将buyram action和stake cpu action打包到一个transaction

        目前cleos并不存在发送包含多个action的transaction的命令,因此我修改了cleos源码,实现了一个buyres命令用来将购买ram和抵押购买cpu action打包在一个transaction里。 该扩展命令我是参考newaccount命令修改而来的,patch可以从以下url下载:

    https://github.com/itleaks/eos-contract/blob/master/files/0001-Add-extend-command-for-cleos.patch

    下载完成后,在eos源码目录执行 git am 0001-Add-extend-command-for-cleos.patch,

     然后执行./eosio_build.sh重新编译

EOS账号ram,cpu资源用尽了,啥都不能干了,怎么办_第3张图片

    buyres命令会生成包含了2个action的transaction, 从而该transaction的执行时间会长一些,同时由于没有cpu资源,从而有可能引起leeway错误,可以多尝试几次。

EOS账号ram,cpu资源用尽了,啥都不能干了,怎么办_第4张图片

    这种方法也是在很极端的情况下才可以成功,因为目前系统设置了一个leeway时间限制,就是transaction的最长cpu时间=leeway(3000us) + account_cpu_limit(本文讨论的账号这里肯定就是0) = 3000us,也就是说buyram和buycpu两个action的时间不能超过3000us,通常情况下这两个action耗时4500+us,除非节点机器够强悍,负载够轻才可能将这个执行时间降到3000us以下,这种情况下才能成功,可见这种时机也是不好把控的。

    总的来说,目前情况下,第二种方案最好。第三种方法我也已经在给官方提意见,希望能够将这个leeway提高到6000us.但是这个也会增加DOS攻击的损失。因为目前cpu不够等错误并不会扣除执行账号的余额,所以作恶账号可以持续的发起肯定不能成功的action,大量消耗全网的cpu资源,而自己可以毫发无伤。

|**************************************************
* 本文来自CSDN博主"爱踢门",喜欢请点关注
* 转载请标明出处:http://blog.csdn.net/itleaks
***************************************************|

如果你对EOS,ETH技术及开发感兴趣,请入QQ群讨论: 829789117

EOS账号ram,cpu资源用尽了,啥都不能干了,怎么办_第5张图片
如需实时查看最新文章,请关注公众号"区块链斜杠青年",一起探索区块链未来

EOS账号ram,cpu资源用尽了,啥都不能干了,怎么办_第6张图片

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