以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads

以太坊階段式同步:重構完全同步模式(Full Sync)_BSP

Author:

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

階段式同步(staged sync)重構自 Go-Ethereum 的完全同步模式(full sync),以實現更好的性能。

階段式同步需要進行大量讀寫操作。雖然我們的目標是能夠在機械硬盤上同步節點,但是我們仍建議使用固態硬盤。

顧名思義,階段式同步需要依次執行 10 個階段。

Turbo-Geth 客戶端會向每個對等節點了解該節點的 HEAD 區塊(即最新區塊),然后依次執行每個階段、尋找本地 HEAD 區塊和對等節點的 HEAD 區塊之間缺失的區塊。

第一個階段(下載區塊頭)會設置本地 HEAD 區塊。

各階段會按順序執行。在每個階段執行期間,只有節點本地的狀態達到目標狀態,該階段才會結束。

也就是說,在理想情況下(沒有出現網絡中斷、應用沒有重啟等問題),每個階段只需執行一次,即可完成初始同步。

最后一階段結束后,整個同步流程會重新開始,尋找新的區塊頭下載。

中銀國際在以太坊上發行價值2億元數字化結構性票據:6月12日消息,瑞銀集團表示,中銀國際首次成功發行2億元人民幣全數字化結構性票據,成為第一家在港發行區塊鏈數字化證券的中資金融機構。該產品由瑞銀負責發起,并面向其亞太區客戶銷售。瑞銀曾于2022年12月成功發售5000萬美元區塊鏈數字化固定利率票據,根據英國和瑞士法律設立,且在許可區塊鏈上進行了數字化。

雙方在發行本次區塊鏈數字化票據時,在適用法律與區塊鏈種類方面都做了新的嘗試。此發行是在亞太地區第一次根據香港和瑞士法律設立,第一次在公共以太坊區塊鏈上進行區塊鏈數字化,并成功將受規管證券引入公共區塊鏈。[2023/6/12 21:32:24]

如果你在兩個階段之間重啟應用,應用會從第一階段開始重啟。

如果你在某個階段執行期間重啟應用,應用會從當前階段開始重啟,以完成該階段。

通過下方的餅狀圖,我們可以看出每個階段的耗時占比(這些都是從完全同步中得出的數據)。雖然這些數據并不精確,但是足以作為參考。

Binance推出以太坊工作量證明礦池后ETHW短時突破12美元:金色財經報道,Binance宣布推出以太坊工作量證明礦池且10月29日前不會收取費用后,ETHW出現短時上漲并觸及12.72美元,本文撰寫時下挫至11.89美元,24小時漲幅8.8%。據相關信息披露,由于主要礦池已宣布支持ETHW,包括Coinbase在內的一些大型交易平臺也表示不排除上線ETHW,但Binance指出,在Binance礦池上支持ETHW并不保證在交易平臺上線ETHW。(decrypt)[2022/9/30 22:41:41]

如果區塊鏈發生重組,我們需要“回退”部分同步數據。

回退指的是從最后一個階段倒退回第一個階段。但是,需要注意的一點是,我們執行完回退之后才會更新交易池,因此我們知道新的 nonce 。

Uniswap 24小時交易量12.5億美元,占以太坊上Dex總量的50.05%:據歐科云鏈OKLink數據顯示,截至今日10時,以太坊上Dex的24小時交易量約合24.9億美元,環比上升13.18%。

其中交易量排名前三的Dex協議分別是Uniswap V2 12.5億美元,交易量占比50.05%;SushiSwap 4.36億美元,交易量占比17.51%以及1inch 2.05億美元,交易量占比8.25%。[2021/3/25 19:16:19]

回退的階段順序如下例所示(從右往左依次發生)。

state.unwindOrder = []*Stage{

   // Unwinding of tx pool (reinjecting transactions into the pool needs to happen after unwinding execution)

   stages, stages, stages, stages, stages, stages, stages, stages, stages, stages,

Cardano創始人:以太坊由于無法擴容及與傳統系統共享數據而受到限制:金色財經報道,Cardano創始人Charles Hoskinson在接受采訪時表示,比特幣的問題在于其功能非常簡單。比特幣單純推動價值的局限性催生了以太坊。盡管以太坊的可編程性打開了許多大門,但Hoskinson表示,以太坊由于無法擴容以及無法與傳統系統共享數據而受到限制。Hoskinson稱,他在比特幣和以太坊中看到的局限性導致其創立了Cardano。當將這三件事(互操作性、可擴展性和可持續性)捆綁在一起時,就從功能上創造了所謂的第三代加密貨幣。[2020/6/30]

 }

通過 ETL 進行預處理

在將數據插入數據庫之前,一些階段會使用我們的 ETL 框架根據鍵值對數據進行排序。

這樣就可以極大減少數據庫寫入放大(write amplification)的情況。

因此,當我們生成索引或者說哈希值化狀態(Hashed State)時,我們會執行一個多步驟流程。

Derbit平臺以太坊期權交易量達3000萬美元,創下歷史新高:Skew數據顯示,以太坊(ETH)價格今日一度突破了250美元關口,隨后小幅回落。價格的飆升也引發了諸如Deribit等平臺上ETH期權交易量的大幅增長,其中Deribit在6月1日創下了單日以太坊期權交易量新高。交易員們已經注意到了最近的價格走勢,似乎正在為近期的重大動向做準備。[2020/6/2]

將處理過的數據寫入位于數據目錄的幾個臨時文件中;

然后使用一個堆棧(heap)把臨時文件中的數據插入到數據庫中,并且使按照能夠最小化數據庫寫入放大現象的順序插入數據。

這種優化有時會將寫入速度提高幾個數量級。

每個階段都包含兩個函數,分別是向前推進階段的ExecFunc 和向后回退階段的 UnwindFunc。

從理論上來說,部分階段可以離線工作,但是當前版本并未實現這一功能。

階段 1 :下載區塊頭

在這一階段,我們會下載本地 HEAD 區塊和對等節點的 HEAD 區塊之間的所有區塊頭。

這一階段是 CPU 密集型的,適合使用多核處理器,因為要驗證區塊頭的工作量證明。

由于區塊鏈重組,大多數回退都是在這一階段開始的。

這一階段會推動本地 HEAD 的指針(指向更新的區塊)。

階段 2 :區塊哈希值

從區塊頭中抽取出一個從區塊哈希值映射成區塊號(blockHash -> blockNumber)的索引表,以支持更快速的查找功能,并讓同步過程對機械硬盤更為友好。

階段 3 :下載區塊體

在這一階段,我們會將上一階段已下載區塊頭的區塊體也下載下來。

這一階段需要保持良好的聯網連接。絕大多數數據都在這一階段下載。

階段 4 :復原發送者

這一階段會復原出并存儲每個已下載區塊中的每筆交易的發送者。

這一階段同樣是 CPU 密集型的,適合使用多核處理器。

這一階段不需要聯網。

階段 5 :執行區塊

在這一階段,我們會執行之前下載的所有區塊中的每一筆交易。

需要注意的一點是,在執行區塊的過程中,我們不會驗證根哈希,甚至不會創建默克爾樹。

這一階段是單線程的,無需聯網,需占用大量磁盤空間。如果區塊執行失敗,可以回退該階段。

階段 6 :計算狀態根

這一階段會構建默克爾樹,并驗證當前狀態的根哈希。

這一階段也會構建中間哈希值(Intermediate Hashes),并將它們存儲到數據庫中。

如果之前沒有存儲任何中間哈希值(這種情況可能在第一個初始同步期間發生),這一階段會構建出完整的默克爾樹及其根哈希。

如果數據庫中沒有中間哈希值,這一階段就會利用區塊的歷史記錄來弄清楚哪些哈希值已經過時,哪些哈希值是最新的,然后使用最新的哈希值來構建部分默克爾樹,只重構過時的哈希值。

如果根哈希無法匹配,就會向后回退一個區塊。

階段 7 :生成哈希值化狀態

在執行期間,Turbo-Geth 使用無格式狀態存儲(Plain state storage)。

無格式狀態(Plain State):在標準狀態(我們稱之為 “哈希值化狀態”)中,賬戶和存儲項的地址是 keccak256(address) ,但是在一般狀態中,二者的地址就是 address 。

盡管如此,為了確保一些 API 能夠正常運作并與其它客戶端保持兼容,我們也會生成哈希值化狀態。

如果哈希值化狀態不是空值,我們會查看歷史記錄變更集(History ChangeSet),并且只更新已更改的項。

這個階段不需要聯網。

階段 8、9、10 :生成索引

同步期間會生成 3 個索引。

這 3 個索引可能會被禁用,因為所有 API 都不使用它們。

交易查詢索引

該索引表由從交易哈希值到區塊號的映射構成。

賬戶歷史索引

該索引存儲了從賬戶地址到區塊列表(在這些區塊中,該賬戶的狀態有了更改)的映射。

存儲歷史索引

該索引存儲了從存儲項地址到區塊列表(其中,該存儲項在一定程度上有了更改)的映射。

在這一階段,我們會啟動交易池或更新其狀態。例如,如果我們已下載的區塊中包含了某些交易,就把這些交易從交易池中移除。

在回退時,我們會將被回退的區塊中的交易重新添加到交易池中。

原文鏈接:

https://github.com/ledgerwatch/turbo-geth/tree/master/eth/stagedsync

作者: Alex Sharov

翻譯&校對: 閔敏 & 阿劍

Tags:BSPSTANBS以太坊BSPAY價格ThunderstakeNBS幣比特幣最新價格行情以太坊實時行情

比特幣價格今日行情
孫宇晨專訪:JustSwap將打造開放式金融市場新模式_JUS

近段時間,DeFi無疑是市場中最炙手可熱的領域。最新數據顯示,DeFi生態鎖倉總額已經突破了63.81億美元,這個數字已經接近了2019年的全球各大交易所首發代幣的入金量,可見投資者對這波DeF.

1900/1/1 0:00:00
Filecoin工程經濟研討會實錄:太空競賽與經濟模型最新解答_FIL

北京時間今日早上10點,Filecoin官方線上舉行了Filecoin工程經濟研討會,會上圍繞經濟的機制與模型、社區提出的的問題進行了討論.

1900/1/1 0:00:00
網頁錢包和桌面錢包漏洞利用與分析_ERT

區塊鏈技術的迅速發展,使得加密資產逐漸成為大眾的投資方式之一。全球加密資產規模的高速增長使得錢包成為每一個加密資產擁有者不可或缺的資產管理工具.

1900/1/1 0:00:00
Filecoin大礦工測試全解析(8月21日實時更新)_FIL

現在Filecoin大礦工測試已經敲定為2020年8月25日(下周二,七夕節)。Filecoin的熱度不再多說,遲遲不上線主網,不但沒有磨去大家的熱情,反而吊足了礦工的胃口.

1900/1/1 0:00:00
Filecoin發布最嚴苛挖礦模型 80%礦機廠商可能淘汰_FIL

今年的熱點除了DeFi、波卡,還有令許多投資人愛恨交加的Filecoin挖礦。近期,官方發布了32頁的《Filecoin經濟模型白皮書》初步確定了主網的挖礦經濟模型,其中說了三個關鍵點,一個是懲.

1900/1/1 0:00:00
8.18早間行情:BTC強勢突破12000 下一目標20000?_BTC

昨晚行情不僅突破了12000美元,打破了長時間以來的高位震蕩,還直接突破了年內高位最高時到達12450美元附近,雖然當前再次回落到了12300美元附近.

1900/1/1 0:00:00
ads