以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads
首頁 > FIL幣 > Info

硬核測試以太坊2.0_NODE

Author:

Time:1900/1/1 0:00:00

Prysm是優秀的ETH2.0的實現,也是目前Medalla測試網上運行最多的實現。Prysm采用BeaconChainNodeValidatorNode的架構,前者負責同步區塊數據,后者負責簽名出塊和見證。由于ValidatorNode可同時負載多個驗證人,為了對其可負載驗證人數量以及相關驗證人部署步驟有一個定性和定量的認知,我們特安排此次測試。??

測試結論

我們復刻了Medalla測試網,搭建HashQuark自己的ETH2.0BeaconChain,進行了兩輪測試,一共14個測試用例,跑了數十萬計Validator。Prsym的實現非常優秀,對于擁用少量ETH想參與以太坊Staking的普通用戶而言,一臺4核8G的云服務器就能夠平穩地運行BeaconChainNode和Validator,但運行過程中遇到的技術問題都不是非技術人員的普通用戶能解決的。

對于運行上萬個Validator的專業化PoS礦池,需要更高的配置才能保證超高出塊率。出塊率會隨著Validator數量的增加而減少。

我們接下來會在公開測試網Medalla進行下一輪測試,以更貼近主網環境,目前我們已經在Medalla正常運行了近3000個Validator,占整個網絡的5%。

測試環境

我們采用geth來搭建私有ETH1.0網絡,與公開測試網Rinkeby或goerli一樣,采用『clique』proof-of-authority算法,因為其相比PoW對資源需求更少。Prysm采用測試時的最新的release版本。

Kava 12主網正式上線:金色財經報道,Kava Network發推表示,Kava 12主網正式上線。此前原定于1月19日發布,后推遲1周,定于北京時間1月25日23:00上線。[2023/2/16 12:10:09]

以下測試采用的云主機部署,我們選取通用型N機型,CPU平臺為Intel/Broadwell。系統采用Ubuntu18.04.2LTS。geth版本為1.9.19-stable,Prysm版本為v1.0.0-alpha.24。

第一階段初步嘗試

測試方案

我們先從不同數量的驗證人對服務器資源的壓力進行簡單測試以獲得基本認知。

采用最基礎的兩臺ETH1.0節點兩臺ETH2.0BeaconChainNode兩臺ValidatorNode架構搭建私網作為起始嘗試方案。網絡穩定運行一天為觀察的時間段。

測試用例

下表為我們進行測試的概覽:

表1

測試指標

測試過程中我們收集了各個實例服務器的CPU、內存、磁盤IO、網絡帶寬IO等指標。??

測試過程

在測試1中,2核4G的BeaconChainNode內存階段性上升,在運行約6小時后,內存使用率達到100%,導致進程出現內存不足錯誤被迫停止,同時CPU使用率也逐步提高。如下圖所示:??

安全團隊:Synapse Protocol釣魚網站在谷歌搜索中作為廣告優先出現,提醒用戶點擊正確鏈接:金色財經報道,CertiK監測顯示,跨鏈流動性協議Synapse Protocol的釣魚網站www-app-synapseprotocol.com/connect/ 在谷歌搜索中作為廣告優先出現,提醒用戶點擊正確的鏈接。[2023/1/12 11:08:15]

圖1??

圖2

之后,我們提升了BeaconChainNode的配置為4核8G。

在實例2-5中,依次提升驗證者數量1k-10k來觀察服務器CPU、內存、磁盤IO、帶寬等指標數據,均無壓力,也沒有異常。

之后我們在不同地區部署ETH2.0節點,來觀察不同地區的網絡互聯情況是否會對各指標產生較大影響,實驗結果均無異常。

測試小結

根據私網測試情況來看,BeaconChainNode建議4核8G配置,Validator節點2核4G的配置夠用,但是在導入key文件時會占用1核CPU,該CPU占用率為100%,穩妥起見,建議4C6G的配置。??

圖3

第二階段對比測試

測試方案?

第一階段主要測試了不同數量的驗證人對于服務器資源的壓力,此外,驗證者的出塊和見證也是也是對于驗證人很重要的指標。為此我們進行了對比測試。在同一個網絡中,將不同數量的驗證人部署在不同的地區來進行對比測試。

安全團隊:跨鏈DEX聚合器Transit Swap因任意外部調用問題被黑,被盜資金規模超2300萬美元:10月2日消息,據慢霧安全團隊情報,2022年10月2號跨鏈DEX聚合器TransitSwap項目遭到攻擊,導致用戶資產被非預期的轉出。慢霧安全團隊分析評估此次被盜資金規模超過2300萬美元,黑客地址為0x75F2...FD46和0xfa71...90fb。接著對此次攻擊過程進行了分析:

1. 當用戶在Transit Swap進行swap時,會先通過路由代理合約(0x8785bb...)根據不同的兌換類型選擇不同的路由橋合約。隨后路由橋合約(0x0B4727...)會通過權限管理合約(0xeD1afC...)的 claimTokens 函數將用戶待兌換的代幣轉入路由橋合約中。因此在代幣兌換前用戶需要先對權限管理合約(0xeD1afC...)進行授權。

2. 而 claimTokens 函數是通過調用指定代幣合約的 transferFrom 函數進行轉賬的。其接收的參數都由上層路由橋合約(0x0B4727...)傳入,本身沒有對這些參數進行任何限制只檢查了調用者必須為路由代理合約或路由橋合約。

3. 路由橋合約(0x0B4727...)在接收到用戶待兌換的代幣后會調用兌換合約進行具體的兌換操作,但兌換合約的地址與具體的函數調用數據都由上層路由代理合約(0x8785bb...)傳入,路由橋合約并未對解析后的兌換合約地址與調用數據進行檢查。

4. 而代理合約(0x8785bb...)對路由橋合約(0x0B4727...)傳入的參數也都來自于用戶傳入的參數。且代理合約(0x8785bb...)僅是確保了用戶傳入的 calldata 內各數據長度是否符合預期與所調用的路由橋合約是在白名單映射中的地址,未對 calldata 數據進行具體檢查。

5. 因此攻擊者利用路由代理合約、路由橋合約與權限管理合約均未對傳入的數據進行檢查的缺陷。通過路由代理合約傳入構造后的數據調用路由橋合約的 callBytes 函數。callBytes 函數解析出攻擊者指定的兌換合約與兌換數據,此時兌換合約被指定為權限管理合約地址,兌換數據被指定為調用 claimTokens 函數將指定用戶的代幣轉入攻擊者指定的地址中。實現了竊取所有對權限管理合約進行授權的用戶的代幣。

此次攻擊的主要原因在于 Transit Swap 協議在進行代幣兌換時并未對用戶傳入的數據進行嚴格檢查,導致了任意外部調用的問題。攻擊者利用此任意外部調用問題竊取了用戶對Transit Swap授權的代幣。

截止到目前,黑客已將 2,500 BNB 轉移到 Tornado Cash,剩余資金分散保留在黑客地址中。經過黑客痕跡分析發現,黑客存在從 LATOKEN 等平臺存提款的痕跡。慢霧 MistTrack 將持續跟進被盜資金的轉移以及黑客痕跡的分析。[2022/10/2 18:37:27]

測試指標?

加密社區發現創建于2015年8月8日的 “Name Registrar”或是以太坊最古老NFT項目:金色財經報道,據加密用戶 @Leonidas.og 透露,一個名為“Name Registrar”的項目最近被社區發現,這可能是以太坊最古老 NFT,它是一個類似于以太坊域名服務 ENS 的項目,于 2015 年 8 月 8 日推出,就在以太坊上線一周后。如果事實證明該項目確實是 NFT,那么將取代 Etheria,成為以太坊上的第一個 NFT。另據“Name Registrar”合約信息顯示,該項目最初只創建了 60 個域名,但自從被社區發現之后,短短一天時間就已經鑄造了超過 10 萬個域名。@Leonidas.og 還透露,該域名注冊合約的創建者或是以太坊開發者 Linagee,他還曾在以太坊上部署了第一個智能合約以及 TestCoin,“Name Registrar”項目信息于 2015 年被他發布在 Reddit 的以太坊論壇上。[2022/10/1 22:44:03]

測試過程中我們將收集各個實例服務器的CPU、內存、磁盤IO、網絡帶寬IO、應出的塊數、實際出塊數、應該見證的塊數、實際見證的塊數等指標。

測試用例?

以下為我們的測試用例:??

表2??

ETH1.0網絡由三臺2核4G云服務器組成,兩臺位于香港,一臺位于圣保羅。出塊時間設置為15s。

我們分別在香港、新加坡、洛杉磯、法蘭克福、圣保羅、倫敦六個地區部署了BeaconChainNode和ValidatorNode。各個地區的BeaconChainNode和ValidatorNode通過內網連接。配置和相應的驗證人數量如上圖。

過去24小時,BSC鏈上NFT交易額超過4000萬,超越以太坊排名第一:據BSCFA數據顯示:過去24小時BSC鏈上NFT銷售的超過4000萬美元,本文撰寫日為4987577美元,增幅達到9501.74%。數據顯示,過去24小時,BSC鏈上交易額增長最快的3個NFT項目分別是:Baby Wealthy Club(41653667美元)狗ForthBox(2361129美元),AmazingDogeNFT(1154574美元)。[2022/6/27 1:32:53]

實例1和實例2都是1k驗證人,區別在于ValidatorNode的配置,用于對比不同配置的驗證人數量對指標的影響。

實例3,4,5,6增加了驗證人數量。鑒于實際情況下我們不太可能將超過10k的驗證人置于單臺機器上,因此我們將測試數量停在了20k。

各個地區的BeaconChainNode與其余node相連。

測試網參數選擇?

我們先在ETH1.0網絡上部署了deposit合約,生成所需數量的驗證人密鑰后,批量發送了存款交易。Prysm啟動時修改了以下參數:

MinGenesisActiveValidatorCount設置為8192,由于我們的測試中包含了40k驗證人,所以能夠滿足;

Eth1FollowDistance設置為20,也就是ETH1.0網絡上的存款合約在5分鐘后會被ETH2.0網絡監測到;

SecondsPerETH1Block設置為15,這與ETH1.0網絡每個塊時間設置的一致;

MinGenesisTime設置為1599811200,也就是說最早在2020-09-11T16:00:0008:00啟動。

實際上,由于我們事先發送了所有的存款交易,滿足最早啟動時間設置的最小驗證人數量,整個ETH2.0網絡在1599811207(2020-09-11T16:00:0708:00)啟動。

數據統計和測試結果?

我們額外部署了一個BeaconChainNode來連接到ETH2.0私有網絡,來查詢數據。加上--slots-per-archive-point=1的參數來持久化存儲每個區塊的數據,從而加快查詢速度。加上--rpc-max-page-size=1000的參數,使得我們每次可以查詢更多的數據,從而減少請求次數加快總體速度。

我們選取了網絡相對穩定的一段時間,從75epoch到1200epoch采樣,獲取這段時間內處于不同實例中驗證者的出塊和見證的數據加以分析,得出如下結果:

所有驗證人都成功出塊,無漏塊情況;

不同地區的驗證者見證情況略有差異:

表3??

這里我們定義見證率為在一段時間內被包含的見證數除以被分配到見證數。不難看出,總體來說,隨著驗證人數量的上升,見證率會下降。但在實例3中,雖然驗證人只有2k,但見證率卻比6k甚至10k的見證率都要低。

為了探究導致實例3總體見證率異常的原因,我們統計每個實例里驗證者的見證率加以分析,看是否由于個別驗證者出了問題拉低總體比例。

我們將每個驗證者比例按照范圍劃分,得到以下數據:??

表4

由于各個實例驗證人數量不同,換算成比例會更加直觀:?

?表5

可以看到,實例3中大多數驗證人的見證率都不高,這也意味著實例3應該出了問題。

為此,我們檢查了實例3的日志,發現BeaconChainNode與其它節點以及ETH1.0的連接并不穩定,猜測是由此導致了見證率的異常,有待后續檢驗。

服務器壓力?

在本輪測試中,我們觀察到如下表的性能指標數據:??

-BeaconChainNode

實例1-5中,BeaconChainNode的CPU使用率在5%-10%之間,實例6的BeaconChainNode的CPU使用率約為12%。內存方面呈現平穩增加,在12%-17%之間,磁盤IO與帶寬無明顯差異。

-ValidatorNode

隨著驗證者數量的增加,ValidatorNode的各項指標均平穩增多,可以看到,磁盤IO與帶寬基本上正比于驗證者的數量。

此外,生成驗證者密鑰文件方面,我們采用的是一個推薦的python命令后工具(https://github.com/ethereum/eth2.0-deposit-cli),該工具生成密鑰的效率相對不高,在多核的機器上只占用1核,生成2000個密鑰對需要2.5小時左右。另一方面,ValidatorNode導入密鑰對也是單核執行,導入2000個密鑰對的時間大約為40分鐘。

測試小結?

通過本輪測試,我們在私有網絡中觀察到,驗證人數量的增加會影響節點上所有驗證人的出塊率,對于單個驗證人來說,在最好的情況和最壞的情況下,平均每天少見證約10個塊。出塊方面在我們的測試中并未發現不同。內存與磁盤IO的使用率相對于CPU和帶寬,更加明顯地隨著驗證人數量的增加而提升。

后續測試方案和待優化步驟

在本輪測試中,以下幾方面占據較多的準備時間:

驗證者密鑰對生成

部署deposit合約

ValidatorNode導入密鑰對

在后續方案中,計劃對上述步驟采取優化,提高測試效率。

此外,在后續測試計劃中,考慮到不同地區的網絡之間的穩定性及其對驗證人指標的影響,可以考慮以下幾點改進:

在同一地區增加多個測試實例,來對比是否為地區造成的差異;

部署多個ETH1.0節點,使BeaconChainNode能夠暢通連接ETH1.0網絡,減少造成的影響;

增加單獨同一地區對比測試,增加驗證者數量,控制變量,單純比較驗證者數量的影響。

在統計數據方面,考慮增加更多維度,如考慮到見證被包含的距離等,可參考這篇關于見證效率的文章。

測試問題匯總

GRPC數據量超過默認大小

當增加到近4k驗證人時,ValidatorNode會報錯grpc獲取的消息大小5350532(5M)超過最大值4194304。??

圖4?

解決方案:啟動ValidatorNode時通過--grpc-max-msg-size參數將grpc允許的消息大小適量調大。

Beaconchainnode無法同步

進行第一輪測試時,在網絡中只存在兩個BeaconChainNode的情況下,容易出現兩個節點之間無法同步區塊的問題,兩個節點都不認為對方是合適的peers。如下圖所示:

?圖5??

解決方案:我們目前采用清除節點的數據重新同步來解決。測試中我們發現,隨著BeaconChain節點的數量增多,該問題便不再發生。

存款金額誤報不夠

如發生下述計算activeEpoch過大或存款金額不夠而實際已夠的情況,則表示Prysm實現存在問題,參考這個issue(https://security.feishu.cn),該問題已在編寫本報告的最新版本修復。

圖6

原文來源:王澤樞,HashQuark社區?

Tags:NODEODEETHDATOK Node CoinDECODEBabyAETHJSB Foundation

FIL幣
紫盈說幣:9.28比特幣,以太坊行情分析,晚間黃金暴漲20余點_AVE

紫盈說幣:9.28比特幣,以太坊行情分析,晚間黃金暴漲20余點,主流比能否持續拉漲當你踏入投資市場那一刻起,要么疲憊交易著,要么就是損失慘重不甘離開市場,沒有五年八載的交易經驗和系統的技術學習.

1900/1/1 0:00:00
TokenBetter上線STORJ的公告_TOK

尊敬的TB用戶: TokenBetter即將上線STORJ/USDT交易對,并開放充值、提現。具體時間如下: 1、充值時間:已開放; 2、交易時間:2020年9月30日17:00; 3、提現時間.

1900/1/1 0:00:00
將在CoinListPro上線,Filecoin再迎利好消息_OIN

近日,Filecoin官方宣布主網將于10月15日左右上線。據悉,CoinListPro即將上線Filecoin,其可能是唯一一家能夠在主網推出的第一天就支持Filecoin的交易所.

1900/1/1 0:00:00
美國參議院候選人是個騙子,將比特幣視為美元的替代價值存儲_比特幣

美國參議院候選人辛西婭·魯米斯是前比特幣。在國會期間,她購買了第一枚比特幣。現在她稱自己為騙子,并認為加密貨幣是美元價值的可行替代品.

1900/1/1 0:00:00
關于LBank完成「LEAD交易大賽」的說明公告_LEA

尊敬的LBank用戶: LBank于2020年9月21日20:00(UTC8)開啟「LEAD交易大賽」,截止9月27日20:00,該活動已結束,現在公布活動結果.

1900/1/1 0:00:00
BigONE 關于流動性挖礦收益分發完成的公告(2020/09/29)_ONE

親愛的用戶: BigONE已發放「GXC流動性挖礦」、「TRXDeFi機槍池」、「USDCDeFi機槍池」、「DAIDeFi機槍池」、「ONE和諧號·老鐵專列」、「ETHDeFi宇宙最強機槍池」.

1900/1/1 0:00:00
ads