日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CPU告急,EOS网络拥堵该如何解决?

發(fā)布時(shí)間:2023/12/15 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CPU告急,EOS网络拥堵该如何解决? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

EOS CPU告急,主網(wǎng)再次擁堵

11月1日,ENU社區(qū)的創(chuàng)始人AP在EOS上發(fā)行了代幣EIDOS(ENU Is Dead,Oh Shit),并再一次通過和ENU相同的代幣分發(fā)方式對(duì)EOS社區(qū)進(jìn)行空投。

根據(jù)EIDOS分發(fā)規(guī)則,EOS持有者可以發(fā)送任意金額到EIDOS的智能合約賬戶,智能合約會(huì)返回等量的EOS和賬戶池總量的0.01%的EIDOS。

這意味著,越早期參與的用戶能夠獲得的EIDOS就越多。大量EOS用戶涌入到了這場空投活動(dòng)中,其火爆程度一點(diǎn)不輸于當(dāng)時(shí)的ENU。

然而,就在EOS用戶爭先想要效仿ENU的暴富神話時(shí),號(hào)稱百萬TPS的EOS卻率先崩潰,EOS社區(qū)內(nèi)這場大規(guī)??胀痘顒?dòng)直接導(dǎo)致了EOS全網(wǎng)擁堵。

截止到目前為止,EOS的CPU資源價(jià)格已提高了將近1000倍,轉(zhuǎn)賬一次需要抵押將近7000個(gè)EOS。同時(shí)主網(wǎng)CPU、NET等資源也一路暴漲,根據(jù)EOSpark數(shù)據(jù)光CPU這一項(xiàng)就上漲了109533.33%。這意味著,超過90%的EOS用戶根本無法使用轉(zhuǎn)賬功能。

EOS的資源模型的利弊

這些問題是出于EOS的資源模型設(shè)置,在EOS中用戶交易免費(fèi),但是必須要抵押足夠的資源才能交易。

EOS將資源分為三類:RAM、CPU、NET,用戶可以抵押EOS來換取資源的使用權(quán)。

RAM即內(nèi)存,用來記錄賬戶信息,包括賬戶余額、公鑰、質(zhì)押、投票、智能合約等。通常需要3KB-8KB的容量來存儲(chǔ)個(gè)人EOS賬戶信息。RAM是可以隨時(shí)買賣的,每筆收取0.5%的手續(xù)費(fèi),同時(shí)價(jià)格也是隨RAM的稀缺程度時(shí)刻變動(dòng)的。

CPU/NET是質(zhì)押類型的資源。當(dāng)EOS賬戶進(jìn)行轉(zhuǎn)賬、投票等操作時(shí),會(huì)消耗主網(wǎng)的算力和帶寬,此時(shí)需要質(zhì)押一部分EOS來換取CPU/NET,每天使用的算力和帶寬會(huì)在24小時(shí)后重置。質(zhì)押的EOS是可以隨時(shí)贖回的,但是會(huì)存在72小時(shí)的凍結(jié)期。

這種解決方案不同于以太坊等直接收取GAS燃料費(fèi)。EOS的方式使得交易費(fèi)在資源充足的情況下,可以免費(fèi)交易。這大大方便了開發(fā)者和使用者。但是因?yàn)楣?jié)點(diǎn)的物理機(jī)器的計(jì)算能力和存儲(chǔ)能力都是有限的,所以整個(gè)網(wǎng)絡(luò)中用戶能使用的資源也是有限的。

這次EIDOS代幣空投事件,隨著抵押EOS新用戶數(shù)量的不斷增加,價(jià)格也不斷上漲,老用戶原先擁有CPU的比例也會(huì)隨之縮水,導(dǎo)致用戶資源不足,無法交易。同時(shí)因?yàn)樽杂墒袌龅木壒?#xff0c;會(huì)導(dǎo)致大量用戶主動(dòng)大量購買CPU,造成惡性循環(huán)。

EOSC資源模型的解決方案

EOSC主網(wǎng)是EOS原力團(tuán)隊(duì)在2018年6月基于優(yōu)化后的EOSIO代碼啟動(dòng)的主網(wǎng),是EOSIO生態(tài)的一部分。

在EOS上線之初,EOS原力團(tuán)隊(duì)就曾經(jīng)指出EOS資源抵押模型的弊端,惡意攻擊者只需要抵押數(shù)萬EOS就能低成本地讓EOS全網(wǎng)陷入癱瘓。EOS原力為了使得所有用戶都能使用到資源來進(jìn)行交易,并解決主網(wǎng)運(yùn)行中產(chǎn)生的一系列問題,對(duì)EOS進(jìn)行了修改,建立了一套新的資源模型, 在保證資源分配公平合理的情況下,盡量減少對(duì)于資源的濫用,讓真正需要資源的用戶可以使用EOSC網(wǎng)絡(luò)提供的資源。

和EOS相比,主要有兩點(diǎn)不同:

1) 基于手續(xù)費(fèi)分配的交易方式

在EOSC中,我們需要用戶為其所觸發(fā)的每一個(gè)action支付手續(xù)費(fèi),這一方式類似與以太坊CPU資源和NET資源是基于手續(xù)費(fèi)分配。每一筆手續(xù)費(fèi)會(huì)為其action提供一個(gè)CPU和NET的資源使用上限, 對(duì)于系統(tǒng)原生的action如轉(zhuǎn)賬、創(chuàng)建用戶、更新權(quán)限等action,可以采用固定手續(xù)費(fèi)和限制的方式便于用戶使用,在默認(rèn)情況下,每次交易支付0.01 EOSC,這樣又激勵(lì)了開發(fā)者優(yōu)化合約代碼邏輯,提高資源使用率,又為用戶帶來了非常流暢的使用體驗(yàn)

執(zhí)行過程:
cleost transfer eosforce test “5000.0000 EOS” “fo test”

executed transaction: ed62211eda722230472d416a8e3c92ab3f950fe951bcd357f9fb217792dac936 152 bytes 213 us

eosio <= eosio::onfee {“actor”:“eosforce”,“fee”:“0.0100 EOS”,“bpname”:“biosbpb”}

eosio <= eosio::transfer {“from”:“eosforce”,“to”:“test”,“quantity”:“5000.0000 EOS”,“memo”:“fo test”}

eosforce <= eosio::transfer {“from”:“eosforce”,“to”:“test”,“quantity”:“5000.0000 EOS”,“memo”:“fo test”}

test <= eosio::transfer {“from”:“eosforce”,“to”:“test”,“quantity”:“5000.0000 EOS”,“memo”:“fo test”}

我們用eosforce賬戶給test賬戶轉(zhuǎn)賬了5000 EOSC,這個(gè)交易中只運(yùn)行了 eosio::transfer action, 所以對(duì)于這個(gè)action執(zhí)行了對(duì)應(yīng)的eosio::onfeeaction來向eosforce賬戶收取了 0.01 EOSC作為交易的手續(xù)費(fèi)。

注意 eosio::transfer action會(huì)觸發(fā)eosforce <= eosio::transfer和test <= eosio::transfer兩個(gè)通知,但是這里兩個(gè)賬戶都沒用相應(yīng)通知,所以這里只執(zhí)行了一個(gè)action。

Eosforce會(huì)為transaction中的所有action分別計(jì)算手續(xù)費(fèi),這里的action也包括inline action,
如下面,這里testc是合約賬戶,當(dāng)接受到轉(zhuǎn)賬時(shí),會(huì)向另外兩個(gè)賬戶testa和testb轉(zhuǎn)賬,這里構(gòu)建一個(gè)transaction,向testc賬戶轉(zhuǎn)賬:

cleost transfer eosforce testc “5.0000 EOS” “fo test”
executed transaction: 6339c73f167602607c8ee1a89a73e7f0171f375b39b361eb47047f0e4a48c69d 152 bytes 646 us

eosio <= eosio::onfee {“actor”:“eosforce”,“fee”:“0.0100 EOS”,“bpname”:“biosbpm”}

eosio <= eosio::transfer {“from”:“eosforce”,“to”:“testc”,“quantity”:“5.0000 EOS”,“memo”:“fo test”}

eosforce <= eosio::transfer {“from”:“eosforce”,“to”:“testc”,“quantity”:“5.0000 EOS”,“memo”:“fo test”}

testc <= eosio::transfer {“from”:“eosforce”,“to”:“testc”,“quantity”:“5.0000 EOS”,“memo”:“fo test”}

apply testc eosio transfer

eosio <= eosio::onfee {“actor”:“eosforce”,“fee”:“0.0100 EOS”,“bpname”:“biosbpm”}

eosio <= eosio::transfer {“from”:“testc”,“to”:“testa”,“quantity”:“5.0000 EOS”,“memo”:“1;testa”}

testc <= eosio::transfer {“from”:“testc”,“to”:“testa”,“quantity”:“5.0000 EOS”,“memo”:“1;testa”}

apply testc eosio transfer

testa <= eosio::transfer {“from”:“testc”,“to”:“testa”,“quantity”:“5.0000 EOS”,“memo”:“1;testa”}

eosio <= eosio::onfee {“actor”:“eosforce”,“fee”:“0.0100 EOS”,“bpname”:“biosbpm”}

eosio <= eosio::transfer {“from”:“testc”,“to”:“testb”,“quantity”:“5.0000 EOS”,“memo”:“1;testa”}

testc <= eosio::transfer {“from”:“testc”,“to”:“testb”,“quantity”:“5.0000 EOS”,“memo”:“1;testa”}

apply testc eosio transfer

testb <= eosio::transfer {“from”:“testc”,“to”:“testb”,“quantity”:“5.0000 EOS”,“memo”:“1;testa”}

warning: transaction executed locally, but may not be confirmed by the network yet ]

這個(gè)過程中,首先是eosforce向testc轉(zhuǎn)賬需要0.01 EOSC手續(xù)費(fèi),之后testc的合約觸發(fā)了兩個(gè)inline_action,分別是向testa和testb轉(zhuǎn)賬,這里由收取兩次0.01 EOSC手續(xù)費(fèi),所以整個(gè)合約會(huì)收取0.03 EOSC手續(xù)費(fèi)。既避免了寶貴有限的鏈上資源被無節(jié)制消耗,又使得每筆資源都相對(duì)獨(dú)立不會(huì)影響到其他用戶的使用體驗(yàn)和智能合約的正常運(yùn)行,不會(huì)遭受“粉塵攻擊”。

2)投票分紅分配RAM資源

與CPU和NET不同,RAM采用租賃方式,以賬戶為單位根據(jù)其所繳納租金來設(shè)置賬戶可以使用的RAM的上限,這里租金按照時(shí)間收取,為了方便用戶操作,現(xiàn)階段我們?yōu)槊總€(gè)賬戶設(shè)置了8kb的免租金額度,這樣對(duì)于絕大多數(shù)普通用戶是不需要關(guān)心RAM的,通常,開發(fā)者需要為其DApp所使用的RAM支付租金,包括了合約占據(jù)的RAM和執(zhí)行中產(chǎn)生的RAM數(shù)據(jù)。

目前EOS原力實(shí)現(xiàn)了通過投票分紅來支付租金的功能,在EOSC中用戶投票可以獲得分紅,這形成了一個(gè)token流,而RAM租金也是按照時(shí)間和租賃的多少來計(jì)費(fèi),通過分紅支付租金,一方面方便用戶操作,不需用戶經(jīng)常補(bǔ)交租金和繳納押金,另一方面可以提高投票率,促進(jìn)鏈生態(tài)健康發(fā)展。

這個(gè)過程是這樣的:

這種類似租云主機(jī)的方式以方式分配RAM資源, 用戶可以通過使用投票分紅來支付租賃RAM資源的費(fèi)用, 這樣即不需要用戶擔(dān)憂租金繳納問題, 也杜絕了租金欠費(fèi)的問題. 通過“以租代售”的方式, EOSC可以有效避免針對(duì)RAM資源的投機(jī)行為, 使得DAPP的發(fā)展不必受到RAM價(jià)格的干擾, 有效促進(jìn)DAPP生態(tài)建設(shè).

3) 結(jié)語

這次事件我們可以看出,在EOS整個(gè)主網(wǎng),EOS目前的狀態(tài)遠(yuǎn)沒有達(dá)到TPS交易上限,EOS的資源抵押模型導(dǎo)致EOS無法真正發(fā)揮出其出色的性能。這也通過事件證實(shí)了EOS的高TPS在區(qū)塊鏈中的優(yōu)勢和應(yīng)用。

BM在白皮書中表露資源模型的初心是—“降低開發(fā)者成本,讓用戶交易免費(fèi)”。目前的資源模型還需要進(jìn)一步的調(diào)整和修改。

EOS目前暴露出的問題在于其CPU資源模型, CPU實(shí)際上是一種時(shí)效性很強(qiáng)的資源, 在達(dá)到整個(gè)主網(wǎng)實(shí)際性能上限前所有限制用戶的加成都是浪費(fèi)資源, 同時(shí)EOS主網(wǎng)不應(yīng)過分放任和遷就超級(jí)節(jié)點(diǎn), 應(yīng)該鼓勵(lì)和敦促超級(jí)節(jié)點(diǎn)更新為良好計(jì)算設(shè)備, 在此同時(shí)開發(fā)工具和插件以減少同步節(jié)點(diǎn)對(duì)應(yīng)的資源消耗, 所以可以通過以下思路改進(jìn):

增加一個(gè)指標(biāo)衡量性能瓶頸,這個(gè)值應(yīng)該和歷史最高tps相關(guān),并且設(shè)置一定的基于時(shí)間的增速來適應(yīng)計(jì)算技術(shù)的發(fā)展, EOS主網(wǎng)已經(jīng)獎(jiǎng)勵(lì)EOS給BP作為激勵(lì), BP不應(yīng)提供過于落后的計(jì)算設(shè)備。
增加一個(gè)指標(biāo)以衡量當(dāng)前實(shí)際性能壓力,這個(gè)指標(biāo)應(yīng)該和最近一段時(shí)間內(nèi)的實(shí)際cpu消耗和用戶抵押cpu總量正相關(guān),鏈上可以動(dòng)態(tài)調(diào)節(jié)這兩者影響的比值, 這樣兼顧性能實(shí)際消耗與未來消耗預(yù)期。
增加一個(gè)容量窗口加權(quán)指標(biāo),這個(gè)指標(biāo)同當(dāng)前性能壓力成反比,和歷史性能指標(biāo)成正比,并定義一條以當(dāng)前性能壓力為參數(shù)的性能影響梯度曲線作為這個(gè)指標(biāo)的加權(quán)值, 用這個(gè)指標(biāo)作為用戶cpu資源上限的加權(quán)值。
規(guī)劃容量窗口指標(biāo)的刷新機(jī)制, 這個(gè)機(jī)制應(yīng)該間隔較短以減少用戶擁堵預(yù)期。

當(dāng)前EOSC,允許通過固定手續(xù)費(fèi)和限制的方式來解決此問題。對(duì)于CPU和NET資源, 用戶可以基于分紅票齡支付手續(xù)費(fèi)來達(dá)到類似EOSIO抵押獲取CPU和NET資源的效果, 對(duì)于RAM, 用戶可以通過抵押投票互換的形式來達(dá)到EOSIO基于市場購買的效果, 這樣DAPP開發(fā)者也可以快速從其他EOSIO鏈切入EOSC, 并平滑的轉(zhuǎn)向EOSC的資源模式。同時(shí)EOSC去中心化預(yù)算系統(tǒng)也近期上線,系統(tǒng)通脹發(fā)行的30%進(jìn)入預(yù)算系統(tǒng)。在接下來會(huì)隨著EOS一起共同發(fā)展和繁榮整個(gè) dApp生態(tài)。

總結(jié)

以上是生活随笔為你收集整理的CPU告急,EOS网络拥堵该如何解决?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。