買以太坊 買以太坊
Ctrl+D 買以太坊
ads
首頁 > FIL > Info

EER:以太坊主動數據同步簡析-ODAILY_SYNC

Author:

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

一、前言

開門見山,以太坊數據同步是以節點作為數據載體存放和傳輸主要以Header,Body,Reciept組成的數據主體,通過以太坊p2p通信協議管理數據同步事務,最后交給執行器執行最后的數據下載任務。

那么問起數據主體我們進行同步需要同步哪些數據?不同數據又是否需要分類同步?

知道創宇區塊鏈安全實驗室進行了全面而詳細的分析。

二、數據主體:

進行數據同步首先需要明確我們同步的數據主體由什么組成,籠統來分有兩類,一類不需要節點發送主動同步請求,節點會在完成數據打包的時候自行向網絡廣播,這一類數據有三種——完整block,區塊hash,和交易Transaction。而我們今天重點探討下一類數據。

第二類數據是需要節點主動發送同步請求隨后其他節點響應才能進行同步的數據,除了第一類數據其他需要同步的數據都屬于第二類,所以可以說他的種類更加繁雜,而其中最重要的也有三種——區塊頭Header,區塊體Body,交易回執Receipt,跟第一類不同這三者可以說都是完整區塊的某一組成部分,這也顯示了主動同步希望節點進行數據同步時范圍自由可控,能夠優先同步必要數據而放棄同步暫時非必要的數據。

?Header表示區塊頭,在區塊里扮演這相當重要的角色,ParentHash會記錄上一個區塊的區塊hash,uncleHash會記錄叔塊hash,coinbase則標識礦工地址。Root,Txhash,ReceiptHash這三個分別是statetrie,txtrie,Receipt.trie三個前綴樹的根節點RLP編碼hash一個用于描述世界狀態,一個用于描述交易,一個用于描述交易回執。bloom是區塊頭中的布隆過濾器用于快速判斷目標hash是否在某個集合中。Header中以上數據都是區塊頭用來對區塊以及區塊中重要數據模塊利用hash進行標識的。剩下的數據則各有他用不細贅述。可以看出一個區塊頭其實已經將一個區塊框架基本描述出來了這也為后面談到的數據同步策略埋下了伏筆。

以太坊Layer2總鎖倉量達86.5億美元,7日跌幅1%:金色財經報道,據L2BEAT數據顯示,當前以太坊Layer2總鎖倉量下跌至86.5億美元,7日跌幅1%。其中,鎖倉量前五分別為:ArbitrumOne(56.7億美元,7日跌幅2.52%);Optimism(17.3億美元,7日漲幅1.69%);dYdX(3.4億美元,7日跌幅1.81%);zkSyncEra(2.83億美元,7日漲幅11.42%);Loopring(1.09億美元,7日漲幅1.52%)。[2023/5/22 15:17:49]

?Body就比較簡明了,里面包含一組交易對象,和一個叔塊的區塊頭數組。

?Receipt是區塊中所有交易對象在執行完成后生成的一個數組,用于記錄交易處理信息。他們會在生成后被逐個插入到Receipttrie中同時也會生成區塊頭中的ReceiptHash。一個交易回執記錄了三部分信息用于交易的管理和標識,第一部分為共識部分,PostState,Status,CumulativeGasUsed,Bloom,Logs只有這五個數據在ReceiptRLP會被encode構成回執hash隨后回執hash會參與共識的校驗,第二部分數據是交易部分,TxHash指的是交易回執所對應的交易哈希,,ContractAddress是當這筆交易是部署新合約時記錄新合約的地址,GasUsed表示該筆交易的Gas使用量,第三部分是區塊部分,他記錄的是BlockHash區塊哈希,BlockNumber當前區塊數,TransactionIndex該交易在區塊中的序號。對于Receipt在數據同步策略中有著直觀的區別,下文說到的fullSync和fastSync最直觀的區別就在于到底是同步對端的Receipt,還是本地自行生成Receipt。

以太坊突破3000美金,但以太坊礦工收入卻創下近期新低:5月3日,以太坊突破3000美金,但以太坊礦工收入卻創下近期新低。最近一周以太坊礦工收入下降27.3%,24小時收益下降7.97%,核心原因是由于近期以太坊gas費降低,礦工手續費收益近期大幅降低,5月2日僅為4022個ETH,是2020年12月以來單日最低水平,同時以太坊全網算力仍在增長,部分ASIC與顯卡持續出貨。原因主要是以太坊Gas費持續降低,來到近期的最低水平,原因與MEV機制的改進以及流量涌入BSC等交易所公鏈有關。此前市場有傳聞稱部分顯卡不再緊俏甚至降價。以太坊開發者警告將在年底完成POW向POS的轉移,但市場普遍認為可能性不大。7月份啟動的EIP-1559升級將使得以太坊礦工收入再次下降10-30%。(吳說區塊鏈)[2021/5/3 21:19:44]

三、數據載體

數據傳輸載體為peer節點,這個數據載體peer,如果你在源碼里面去認真尋找你會發現,某些角落里就能找到一個peer.go.首先我列出有關數據同步模塊我所找到的peer結構。有p2p/peer.go,eth/peer.go,les/peer.go,eth/downloader/peer.go。以太坊的網絡也有傳輸層,會話層,表示層和協議層。

那p2p包中的peer扮演了一個底層的節點模型,傳輸層會基于UDP協議發現相鄰peer并維持peer連接,還會基于TCP協議建立peer之間的信息交流通道。會話層Peer管理主要管理的是節點和上層子協議的交互,而NodeTable管理主要管理的是底層基于udp協議構建的節點連接表table。所以p2p這一層的peer節點他需要能獲取和開啟子協議的能力,還需要有ping通其他節點的能力當然還要去接受其他節點消息。這就體現在p2p/peer.go中的3個重要功能模塊,pingLoop,readLoop,startProtocols而這也是peer.run()方法里的3個函數。

以太坊未確認交易為127,247筆:金色財經消息,據OKLink數據顯示,以太坊未確認交易127,247筆,當前全網算力為353.94TH/s,全網難度為4.71P,當前持幣地址為54,421,652個,同比增加206,034個,24h鏈上交易量為4,396,731.74ETH,當前平均出塊時間為13s。[2021/2/9 19:21:20]

可以看出上面是底層peer結構,下圖則是子協議層的peer結構,不同的子協議層會有不同的peer結構,這也就是為什么會有eth/peer.go和les/peer.go畢竟不同子協議應用于不同的數據場景。

我們可以看出數據載體有底層peer,和子協議層peer,而進行數據同步需要利用通信協議管理連接兩層peer,由底層實現peer的消息分發,消息的監聽,子協議層peer執行數據的下載和同步,而這兩層之間就需要非常重要的protocolManger進行管理和溝通。

聲音 | 以太坊的聯合創始人:擴展以太坊網絡將進一步提高與DeFi相關服務的實用性:據Cryptoslate消息,以太坊的聯合創始人Joseph Lubin表示,自2019年以來,創建了超過2000萬個以太坊賬戶,鎖定在DeFi中的以太幣數量急劇增加,最近超過了6.5億美元。而絕大多數的DeFi用戶使用以太坊作為默認抵押品來處理各種在借貸,衍生產品,支付和去中心化交易所(dexes)中的金融活動。從中長期來看,擴展以太坊網絡的努力將進一步提高與DeFi相關的服務的實用性。[2019/12/14]

四、數據同步流程

那么如何啟動protocolManager呢?我們上面介紹了peer結構,他主要是代表遠程其他節點,在以太坊中還有一類同樣是代表了節點的結構Node,他主要代表了本地節點自身會稍微有點區別,而節點想要啟動p2p網絡就要依靠本地Node模塊,其中利用Node.Start()函數開啟了兩個任務,一個是啟動EthereumService,其中的Ethereum.start就啟動了protocolmanager;另一個是啟動p2p.Server,新建并刷新K桶,開啟UDP端口監聽,同時監聽TCP端口,處理從遠端節點發來的message。

當protocolManager啟動了之后,他就開始需要連接底層邏輯層peer和頂層協議層peer:

獨家 | 丹華資本丁若宇:以太坊君士坦丁堡硬分叉標志著以太坊3.0時代的到來:就即將到來的以太坊硬分叉,金色財經獨家采訪到了丹華資本董事總經理丁若宇,他表示:以太坊君士坦丁堡硬分叉標志著以太坊3.0時代的到來。從PoW工作量證明到PoS權益證明的核心layer 1共識層切換,以太坊3.0將帶來一系列底層技術更新和多個EIP(ethereum improvement proposal)迭代,包括super quadratic分片技術、零知識證明STARKs、數據可用性證明、鏈下擴容(EIP 1014)以及未來在以太坊serenity階段將上線的Casper CBC等。這次戰略升級標志著以太坊在公鏈擴容、安全性、經濟體系(EIP 1283)和更加難且去中心化的挖礦機制(EIP 1234)上的升級,賦予了以太坊持幣者更多參與公鏈共識的權利。近期ethereum classic分叉鏈受到PoW 51%算力攻擊后,v神曾表示“沒有讓51%算力惡意攻擊比51%持幣權益證明惡意攻擊更高昂成本的秘訣,只因以太坊算力大于ethereum classic 20倍而暫時未受攻擊“,側面表示了v神對PoS提高主鏈安全性的信心。以太坊核心社區為此次硬分叉準備已久,是一場有共識有秩序的分叉,相比Bitcoin Cash前段時間的競爭性惡意分叉,此次以太坊分叉過渡會更平滑。[2019/1/10]

當啟動了protocolManager,首先節點會進行初始化,調用NewProtocolManager,初始化的過程中會調用SubProtocol函數向地城p2p.peer獲取一個消息讀寫通道,然后再構建一個消息處理器Handle,Handle,他不僅會接受請求同步的消息,也會接受節點響應的消息,在protocolManger的start方法中他會啟動一個定期同步協程syncer,他會根據消息通知調用fecher或者downloader執行器執行數據同步。

數據同步模式

主動數據同步指的是本地節點自發的向相鄰節點請求區塊數據,數據入口在eth/downloader/downloader,和eth/handler里

被動數據同步指本地節點收到其他節點數據同步消息而后請求區塊數據,數據入口在eth/fetcher/fetcher.go

主動同步流程我們以主動同步為例,當調用downloader執行器時,他會先調用findAncestor找到本地鏈和遠程鏈的共同祖先,從共同祖先開始同步,他會配置4個fetchers,分別是fetcherHeader,fetcherBodies,fetcherReceipts,ProcessHeaders最后根據同步模式調用收到processFullSyncContent和processFastSyncContent最后調用spawnSync執行同步。

以上為同步過程的源碼,從源碼里可以看出主要的下載任務是集中在他構造的可拓展fetchers里,他是一個fetcher任務隊列。而根據不同的數據同步策略他的fetcher任務隊列不僅構造不同,fetcher之間的協作流程也不盡相同。

五、數據同步策略

fetcher任務隊列的作用概括起來就是在進行,數據填充,數據組裝,和最后的數據插入。而其中填充什么樣的數據,那些數據需要組裝,什么時候插入數據,均由一個重要的數據結構mode進行標識,他代表了數據同步策略,主要分為三種。

lightSync:輕節點同步,數據填充的時候只填充區塊頭數據,不需要進行數據組裝,調用insertHeaderchain直接插入區塊頭。

fullSync:全節點同步,數據填充的時候需要填充區塊頭Header,區塊體Body,但不填充交易回執Receipt,將數據組裝到結果集Result,之后調用importBlockResults將結果集內數據插入到主鏈,和lightSync區別在于輕節點同步沒有區塊體,所以他不會執行和驗證交易而fullSync全節點同步會在插入數據的同時執行交易并驗證這也是他為什么同步速度慢的原因,之后會自行生成交易回執Receipt,所以他在填充組裝的時候不需要Receipt參與。

fastSync:快速同步,數據填充的時候會填充Header,Body,同時也會填充Receipt,然后組裝3個數據,執行數據插入,而在執行數據插入的時候和fullSync,lightSync完全不同,他調用的commitFastSyncData這個函數和fullSync全節點同步調用的importBlockResults不一樣他不會執行交易而只是提交同步數據,所以他為了保證安全加了一步驗證獲取來的交易回執。而這也才是快速同步的一部分,快速同步為了保證數據的安全性古老的區塊會使用上述方法同步,對于時間上來說比較新的區塊會使用fullSync的同步模式進行同步。用而言之就是fastSync會快速同步一大部分而一小部分還是會按照fullSync的同步模式同步。

六、結語

以太坊數據同步非常復雜,他涵蓋了其網絡架構,通信協議管理,數據傳輸通道的相互配合,數據同步策略的安排,以及加速數據同步速率的算法。其中還有眾多細節和邏輯關系。而數據同步是區塊鏈節點和外界通信的基石他還有更多的架構彩蛋令人拍案叫絕。期待后續文章和大家分享。

Tags:以太坊PEEREERSYNC以太坊價格今日行情幣幣情Livepeer TokenTEER價格zksync幣合法嗎

FIL
COI:DAOrayaki:二次方融資與有效利他主義-ODAILY_ITCO

摘要 這篇文章,主要探討了有效利他主義和web3.0的交集以及對GitcoinGrants2.0的擴展建議,希望將GitcoinGrants越來越多地引導到最有效的事業上.

1900/1/1 0:00:00
以太坊:取代以太坊,競爭者們都有何殺手锏?-ODAILY_Dola USD Stablecoin

“以太坊作為第一個擁有智能合約的區塊鏈,憑借先發優勢已經建立了相對完整的生態并沉淀了足夠多的用戶,但在Gas費、處理速度和可擴展性方面飽受詬病.

1900/1/1 0:00:00
STARS:黑客能調用,你和我也可以?Starstream被盜1500萬美元事件分析-ODAILY_STR

北京時間4月8日凌晨01:43:36,CertiK安全技術團隊監測到收益聚合平臺Starstream因其合約中的一個執行函數漏洞被惡意利用,致使約1500萬美元的資產受到損失.

1900/1/1 0:00:00
SPR:Parity團隊為波卡生態建設推行新計劃Builders for Builders是什么?-ODAILY_SPRK幣

“波卡知識圖譜”是我們針對波卡從零到一的入門級文章,我們嘗試從波卡最基礎的部分講起,為大家提供全方位了解波卡的內容,當然這是一項巨大的工程,也充滿了挑戰.

1900/1/1 0:00:00
CLE:SupraOracles與HashBrownSwap達成合作-ODAILY_RAO

SupraOracles很高興地宣布與開放的跨鏈DeFi平臺HashBrownSwap(HBS)建立合作伙伴關系。它是為所有人設計的次世代交易所和易于使用的錢包.

1900/1/1 0:00:00
EDO:Qredo以4.6億美元估值完成8000萬美元A輪融資-ODAILY_qredo幣最新消息

Qredo宣布8千萬美元A輪融資,由10THoldings領投,Coinbase,Avalanche和Terra戰略投資.

1900/1/1 0:00:00
ads