簡介
如果是eos的普通用戶,這段時(shí)間遇到的最大的問題應(yīng)該是:“咦?cpu怎么又不夠發(fā)交易了?!”。繼ram之后,cpu又幫eos一次次的上了頭條。其實(shí),cpu資源緊缺的問題,我們?cè)缭?月份就發(fā)現(xiàn)了并給官方提了issue,并第一次從官方口中得知了cpu資源分配的機(jī)制。下面,就跟大家講下cpu資源分配的原理。
CPU資源分配機(jī)制
其實(shí),正如上面issue中block.one回復(fù)的,cpu資源分配的算法是動(dòng)態(tài)的,遵循以下幾個(gè)原則:
1. 全網(wǎng)cpu的利用率分忙時(shí)和閑時(shí),當(dāng)利用率超過一定閾值,即為忙時(shí)。這個(gè)閾值使用eosio.system的setparams方法修改,參數(shù)為target_block_cpu_usage_pct。目前,eos主網(wǎng)的值為3000,即cpu利用率為30%。
2. 每個(gè)區(qū)塊cpu總量=max_block_cpu_usage*target_block_cpu_usage_pct=200*0.3=60ms
3. 當(dāng)cpu利用率低于閾值,單個(gè)賬戶最高可用的cpu=賬戶抵押的eos/全網(wǎng)抵押的eos*每個(gè)區(qū)塊cpu總量*1000倍,倍數(shù)是動(dòng)態(tài)調(diào)整的,最高為1000
4. 當(dāng)cpu利用率高于閾值,單個(gè)賬戶可用cpu=賬戶抵押的eos/全網(wǎng)抵押的eos*每個(gè)區(qū)塊cpu總量,嚴(yán)格的1:1分配
為了解決cpu不足的問題,經(jīng)過兩次提案,target_block_cpu_usage_pct已經(jīng)由1000更改到了3000,最近一次提案詳情。由此可見,閑忙時(shí)期的cpu差異可能會(huì)非常大。閑時(shí)可用的cpu能發(fā)出一筆交易,到忙時(shí)可能cpu就歸零了。更詳細(xì)的cpu問題的解釋,我推薦斜杠大神的文章:"Dapp"你們走的太快了,請(qǐng)等等你們的"EOS",有興趣的親可以仔細(xì)讀讀。
CPU問題解決方法
1. 賬戶加質(zhì)押
對(duì)于土豪來說,加質(zhì)押當(dāng)然就能解決問題,親測(cè)3000個(gè)eos質(zhì)押到cpu上,基本閑忙時(shí)都能cover住普通轉(zhuǎn)賬。但是,不斷加質(zhì)押無疑是惡性循環(huán),最后eos成了富人的游戲,實(shí)際上eos全網(wǎng)的cpu利用率也并沒很高。
2. CPU租賃
針對(duì)cpu的諸多問題,dapp們也是殫精竭慮的推出了很多解決方案。我就推薦幾家好用的cpu租賃dapp,大家遇到問題的時(shí)候可以自取。
1)bankofstaked
地址:https://eoslaomao.com/bankofstaked
出品方:超級(jí)節(jié)點(diǎn)eoslaomao
github:https://github.com/EOSLaoMao/BankofStaked-CE

之前,eoslaomao就在麒麟測(cè)試網(wǎng)號(hào)召中國的bp們參與cpu救濟(jì)行動(dòng),bankofstaked幾經(jīng)迭代,終于推出了穩(wěn)定的成品。無論從產(chǎn)品可用度,還是安全角度來說,都是非常過硬的。這里分享一篇eoslaomao節(jié)點(diǎn)負(fù)責(zé)人趙余講解的bankofstaked設(shè)計(jì)思路,供感興趣的技術(shù)同學(xué)參考。
2)chintai
地址:https://eos.chintai.io/exchange/EOS7D
出品方:超級(jí)節(jié)點(diǎn)eos42

使用方法詳見eos42官方博文,chintai的年化收益率最高達(dá)到20%左右,不僅是cpu救急,屯幣的同學(xué)也可以選擇當(dāng)個(gè)包租公/婆穩(wěn)穩(wěn)的幸福即可。
3)meetone錢包
地址:https://dapp.ethte.com/eostools/meetonestake
出品方:meetone錢包
假如,你只有一個(gè)賬號(hào)cpu告急,沒人來救你,或者手里沒有eos了,但是有錢有支付寶,那meetone絕對(duì)是絕佳選擇。輸入賬號(hào)—付款—cpu即刻到賬—賬號(hào)活啦。作為第一個(gè)通過apple store審核的eos錢包,meetone的產(chǎn)品體驗(yàn)和安全性也是絕對(duì)值得信賴的。沒有eos賬號(hào)的同學(xué),也可以支付寶付款買一個(gè)eos賬號(hào),下載meetone錢包即可。

后記
其實(shí),上面說的無論是改參數(shù),還是租賃,并沒有從根本上解決cpu緊缺的問題。最近,麒麟測(cè)試網(wǎng)的中國bp們也在召集eos的開發(fā)者們研究源碼,希望從根本上解決cpu分配機(jī)制問題。另外,eos官方也準(zhǔn)備推出rex市場(chǎng),可以將eos兌換成rex進(jìn)行cpu兌換,但感覺和官方錢包一樣會(huì)拖很久才面世,可以先不考慮了。有才華的大家,也可以研究下eos源碼:cpu資源分配,官方是很樂意接受pr的。