1. 程式人生 > >EOS賬號ram,cpu資源用盡了,啥都不能幹了,怎麼辦

EOS賬號ram,cpu資源用盡了,啥都不能幹了,怎麼辦

問題重現case1

    比如如下賬號testtest1233,ram, cpu資源都沒有了

因此建立新賬號失敗

於是想著購買cpu,結果失敗

那購買ram,卻仍舊失敗

    所以進入了一個死迴圈,沒有ram沒法購買cpu,沒有cpu沒法購買ram,因而要破解這個先有雞還是先有蛋的問題。

問題重現case2

     ram夠,cpu不夠,這種情況下是否可以啟用要看情況,具體可以在【EOS互助平臺】平臺檢測是否可以啟用。

解決方案

    目前有兩種方法

    1) 讓其他賬號給你買一些ram或者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下載:

     然後執行./eosio_build.sh重新編譯

    buyres命令會生成包含了2個action的transaction, 從而該transaction的執行時間會長一些,同時由於沒有cpu資源,從而有可能引起leeway錯誤,可以多嘗試幾次。

    這種方法也是在很極端的情況下才可以成功,因為目前系統設定了一個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博主"愛踢門"

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

EOS生態以太坊側鏈(ethsidechain)代幣'ETH'免費發放中,詳情請訪問eosfavor.com

EOS技術交流群,EOS開發群,以太坊技術群:787804520