階段式同步重構自Go-Ethereum的完全同步模式,以實現更好的性能。
階段式同步需要進行大量讀寫操作。雖然我們的目標是能夠在機械硬盤上同步節點,但是我們仍建議使用固態硬盤。
顧名思義,階段式同步需要依次執行10個階段。
階段式同步是如何運作的
Turbo-Geth客戶端會向每個對等節點了解該節點的HEAD區塊,然后依次執行每個階段、尋找本地HEAD區塊和對等節點的HEAD區塊之間缺失的區塊。
第一個階段會設置本地HEAD區塊。
各階段會按順序執行。在每個階段執行期間,只有節點本地的狀態達到目標狀態,該階段才會結束。
也就是說,在理想情況下,每個階段只需執行一次,即可完成初始同步。
最后一階段結束后,整個同步流程會重新開始,尋找新的區塊頭下載。
The DAO主要設計師之一在九年后離開了以太坊社區:金色財經報道,The DAO背后的主要設計師之一Stephan Tual在九年后離開了以太坊社區。Tual稱,他現在打算專注于其他技術,包括網狀網絡和基于軟件的無線電通信。
2014年1月,Tual加入以太坊項目,擔任首席通訊官,他在那里工作到2015年9月。當時他離開創建了Slock.it,該公司在2016年創建了一個用于構建DAO的框架,那一年,一個大型開發人員社區采用了該框架,與Slock.it協作,并用它來啟動被稱為TheDAO的項目。
在其代碼中的一個錯誤被利用之前,The DAO吸引了大量投資,融資占當時流通中的所有以太坊(ETH)的15%。這個問題非常嚴重,以至于以太坊區塊鏈最終分叉,產生了我們今天所知道的以太坊和以太坊經典。
在錯誤代碼被利用使The DAO倒閉之后,Tual淡出了人們的視線,但仍然活躍在以太坊社區。他于2017年離開Slock.it,創建了一個專注于加密貨幣的孵化器,并繼續在倫敦舉辦以太坊社區活動。[2022/8/21 12:38:12]
如果你在兩個階段之間重啟應用,應用會從第一階段開始重啟。
以太坊未確認交易為192,117筆:金色財經消息,據OKLink數據顯示,以太坊未確認交易192,117筆,當前全網算力為452.31TH/s,全網難度為6.02P,當前持幣地址為57,088,797個,同比增加170,807個,24h鏈上交易量為3,306,067.59ETH,當前平均出塊時間為13s。[2021/3/30 19:30:54]
如果你在某個階段執行期間重啟應用,應用會從當前階段開始重啟,以完成該階段。
每個階段需要耗時多久?
通過下方的餅狀圖,我們可以看出每個階段的耗時占比。雖然這些數據并不精確,但是足以作為參考。
重組/回退
如果區塊鏈發生重組,我們需要“回退”部分同步數據。
回退指的是從最后一個階段倒退回第一個階段。但是,需要注意的一點是,我們執行完回退之后才會更新交易池,因此我們知道新的nonce。
當前以太坊未確認交易數為168400筆:Etherscan.io數據顯示,以太坊未確認交易數168400筆。當前挖礦難度5074.36TH,目前平均Gas費為156 Gwei。[2021/2/19 17:31:09]
回退的階段順序如下例所示。
state.unwindOrder=*Stage{
??//Unwindingoftxpool(reinjectingtransactionsintothepoolneedstohappenafterunwindingexecution)
??stages,stages,stages,stages,stages,stages,stages,stages,stages,stages,
?}
通過?ETL?進行預處理
波場TRON DApp活躍用戶數近一個月都領先于以太坊和EOS:據DappReview網站顯示,波場TRON DApp活躍用戶數近一個月都領先于以太坊和EOS。其中,昨日波場TRON DApp活躍用戶數為170787,以太坊DApp活躍用戶數為40133,EOS DApp活躍用戶數19532,波場TRON DApp活躍用戶數是以太坊DApp活躍用戶數的4倍多,是EOS DApp活躍用戶數的8倍多。波場TRON致力于為去中心化互聯網搭建基礎設施,旗下的TRON協議是基于區塊鏈的去中心化應用操作系統協議,為協議上的去中心化應用運行提供高吞吐,高擴展,高可靠性的底層公鏈支持。波場TRON還通過創新的可插拔智能合約平臺為以太坊智能合約提供更好的兼容性。[2020/8/26]
在將數據插入數據庫之前,一些階段會使用我們的ETL框架根據鍵值對數據進行排序。
這樣就可以極大減少數據庫寫入放大的情況。
基于0.12規范的更正式以太坊2.0多客戶端測試網有望在6月份發布:一個以太坊2.0開發人員的調用顯示,Schlesi 測試網非常成功,有望在6月份發布一個基于0.12規范的更正式的多客戶端測試網。現在,以太坊2.0的開發幾乎完全是為了修復bug,團隊試圖將所有現有的客戶端同步到區塊鏈的一個版本中。5月14日舉行的以太坊2.0實現者調用的后續報告顯示,大部分工作致力于修復代碼錯誤和改進檢測方法。對于后者,Sigma Prime的開發人員Mehdi Zerouali報告了在設計“模糊”技術方面的重大進展,這種技術會向程序提供虛假數據,以找出程序的漏洞。Sigma Prime分析已經幫助發現了以太坊2.0客戶端軟件和它們所依賴的庫中的一些低級錯誤。具體來說,分析人員在Teku客戶端中發現了一個無限循環錯誤,在Nimbus中發現了一個內存分割錯誤。
由于客戶端負責保存和驗證區塊鏈,因此它們之間的完全同步是非常重要的。對于以太坊2.0,有7個獨立的客戶機正在開發中。他們中的大多數人正在為Schlesi測試網進行優化,Schlesi測試網是第一個模擬主網環境的多客戶端以太坊2.0測試網。Schlesi 測試網計劃的負責人Afri Schoedon解釋說,該網絡有一個艱難的開始。bug阻止了第一次啟動,一旦修復,由于客戶端經常崩潰,事務最終結果“很糟糕”。 但是Schoedon贊揚了客戶端開發人員在修復這些問題時的響應能力,這使得網絡得以穩定。Schoedon補充道:“我將謹慎地將2020年6月作為發布日期。”不過他也指出,這在很大程度上取決于0.12客戶端的發布。(Cointelegraph)[2020/5/15]
因此,當我們生成索引或者說哈希值化狀態時,我們會執行一個多步驟流程。
將處理過的數據寫入位于數據目錄的幾個臨時文件中;
然后使用一個堆棧把臨時文件中的數據插入到數據庫中,并且使按照能夠最小化數據庫寫入放大現象的順序插入數據。
這種優化有時會將寫入速度提高幾個數量級。
各階段
每個階段都包含兩個函數,分別是向前推進階段的ExecFunc?和向后回退階段的?UnwindFunc。
從理論上來說,部分階段可以離線工作,但是當前版本并未實現這一功能。
階段1:下載區塊頭
在這一階段,我們會下載本地HEAD區塊和對等節點的HEAD區塊之間的所有區塊頭。
這一階段是CPU密集型的,適合使用多核處理器,因為要驗證區塊頭的工作量證明。
由于區塊鏈重組,大多數回退都是在這一階段開始的。
這一階段會推動本地HEAD的指針。
階段2:區塊哈希值
從區塊頭中抽取出一個從區塊哈希值映射成區塊號的索引表,以支持更快速的查找功能,并讓同步過程對機械硬盤更為友好。
階段3:下載區塊體
在這一階段,我們會將上一階段已下載區塊頭的區塊體也下載下來。
這一階段需要保持良好的聯網連接。絕大多數數據都在這一階段下載。
階段4:復原發送者
這一階段會復原出并存儲每個已下載區塊中的每筆交易的發送者。
這一階段同樣是CPU密集型的,適合使用多核處理器。
這一階段不需要聯網。
階段5:執行區塊
在這一階段,我們會執行之前下載的所有區塊中的每一筆交易。
需要注意的一點是,在執行區塊的過程中,我們不會驗證根哈希,甚至不會創建默克爾樹。
這一階段是單線程的,無需聯網,需占用大量磁盤空間。如果區塊執行失敗,可以回退該階段。
階段6:計算狀態根
這一階段會構建默克爾樹,并驗證當前狀態的根哈希。
這一階段也會構建中間哈希值,并將它們存儲到數據庫中。
如果之前沒有存儲任何中間哈希值,這一階段會構建出完整的默克爾樹及其根哈希。
如果數據庫中沒有中間哈希值,這一階段就會利用區塊的歷史記錄來弄清楚哪些哈希值已經過時,哪些哈希值是最新的,然后使用最新的哈希值來構建部分默克爾樹,只重構過時的哈希值。
如果根哈希無法匹配,就會向后回退一個區塊。
這一階段不需要聯網。
階段7:生成哈希值化狀態
在執行期間,Turbo-Geth使用無格式狀態存儲。
無格式狀態:在標準狀態中,賬戶和存儲項的地址是?keccak256(address)?,但是在一般狀態中,二者的地址就是?address?。
盡管如此,為了確保一些API能夠正常運作并與其它客戶端保持兼容,我們也會生成哈希值化狀態。
如果哈希值化狀態不是空值,我們會查看歷史記錄變更集,并且只更新已更改的項。
這個階段不需要聯網。
階段8、9、10?:生成索引
同步期間會生成3個索引。
這3個索引可能會被禁用,因為所有API都不使用它們。
這一階段不需要聯網。
交易查詢索引
該索引表由從交易哈希值到區塊號的映射構成。
賬戶歷史索引
該索引存儲了從賬戶地址到區塊列表的映射。
存儲歷史索引
該索引存儲了從存儲項地址到區塊列表的映射。
階段11:交易池
在這一階段,我們會啟動交易池或更新其狀態。例如,如果我們已下載的區塊中包含了某些交易,就把這些交易從交易池中移除。
在回退時,我們會將被回退的區塊中的交易重新添加到交易池中。
這個階段不需要聯網。
原文鏈接:
https://github.com/ledgerwatch/turbo-geth/tree/master/eth/stagedsync
作者:?AlexSharov
翻譯&校對:閔敏?&?阿劍
尊敬的ZT用戶: 因ET進行分叉需進行程序維護,為保護用戶財產安全,ZT現已暫停其充提幣業務,維護完成后將恢復正常。具體恢復時間請關注官網公告,由此給您帶來的不便敬請諒解.
1900/1/1 0:00:00親愛的FatBTC用戶:本站已上架InsightProtocol(INX),UnionFairCoin(UFC),Decentr(DEC),MCDEX(MCB),NXM(NXM).
1900/1/1 0:00:00金融的核心功能之一是解決激勵問題,DeFi的出現和發展為進一步實現這一功能提供了新的思路和可能.
1900/1/1 0:00:00macd是一個經典的趨勢類指標,都知道,指標線在零軸下為空頭市場,指標線在零軸上為多頭市場。在確定趨勢方向的前提下,就有了相對應的操作策略:空頭市場,逢高做空為主;多頭市場,逢低做多為主.
1900/1/1 0:00:00沒有走不到頂的山,只有找不到路的人,持倉就像兩個拉著橡皮筋的人,受傷的總是不愿意放手的那個,總有一段路崎嶇,總有一時霧霾,不要為曾經的錯失忿忿不平,無須為走遠的風景扼腕嘆息.
1900/1/1 0:00:00近日,一條關于全球將面臨近50年以來最為嚴重的糧食危機,引發了熱議,將近25個國家面臨饑餓風險,6.9個處于饑餓狀態,受疫情全球影響,經濟增長快速下滑,洪災、蝗蟲等自然災難.
1900/1/1 0:00:00