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

问题重现

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

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

因此创建新账号失败

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

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

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

那购买ram,却仍旧失败

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

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

解决方案

    目前有两种方法

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

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

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

       https://blog.****.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资源用尽了,啥都不能干了,怎么办

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

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

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

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

/********************************

* 本文来自****博主"爱踢门"

* 转载请标明出处:http://blog.****.net/itleaks

******************************************/

EOS生态以太坊侧链(ethsidechain)代币'ETH'免费发放中,详情请访问eosfavor.com

EOS技术交流群,EOS开发群,以太坊技术群:787804520

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