[幣嚴區塊鏈]ETH搭建節點區塊數據同步的三種模式:full、fast、light


ETH  全節點Archive(歸檔)模式數據量增長圖

上述圖表可通過鏈接查看:https://etherscan.io/chartsync/chainarchive

 

通過上表,可以看到截止2019年8月12日,以太坊的全部區塊數據已經高達2.8T,如果按照比特幣的方式搭建全節點,會是一個很痛苦的事,畢竟雲硬盤也不是那么便宜的。

做數字錢包或交易所的開發人員里,有聰明人可能會意識到一個問題,在處理用戶賬戶充值時,我們所關注的數據僅僅是從當前開始到未來這段時間的區塊數據,那么巨大體積的歷史區塊數據沒什么用處。

有問題,自然會有更聰明的人解決問題,鑒於ETH龐大的區塊數據,並且不斷在增長,ETH提供了三種同步模式:

  • –syncmode  "fast"         Enable fast syncing through state downloads
  • –syncmode  "light"        Enable light client mode
  • –syncmode  "full"

在Geth1.6以前,fast與full模式的命令參數為  --fast與--full。Geth 1.6版本及以后,兩種命令參數都可使用。

 

使用方法,啟動命令如下:

./geth --datadir  "D:\Program Files\Geth\data"  --syncmode  "fast"  --rpc  --rpcapi  "db,eth,net,web3,miner" 

上面的命令指定了區塊數據與秘鑰文件的存儲目錄:D:\Program Files\Geth\data

也指定了同步模式是: --syncmode  "fast"

同時開啟了RPC方式模式: --rpc  --rpcapi  "db,eth,net,web3,miner" 

 

本文中,我們需要關注就是: -- syncmode,下面對三種同步模式做一個介紹:

Full同步步驟:

獲取區塊的header

獲取區塊的body

從創始塊開始校驗每一個元素

PS:下載所有區塊數據信息,所以此種方式的數據量會十分龐大

Fast同步:

獲取區塊的header

獲取區塊的body

在同步到當前塊之前不處理任何事務,然后獲得一個快照,像full節點一樣進行后面的同步操作。沿着區塊下載最近數據庫中的交易,有可能丟失歷史數據。比如,你的賬戶地址A上面有10個ETH,但轉入的的交易存在於較老的歷史交易中,此同步模式無法獲取到交易的詳細情況。

使用此模式時注意需要設置–cache,默認16M,建議設置為1G(1024)到2G(2048)。

Ligth同步:

僅獲取當前狀態。驗證元素需要向full節點發起相應的請求。

 

此外,啟動ETH節點時還可以增加--gcmode=archive,這個模式稱為歸檔Archive模式,即歸檔節點,這種模式保存了最最最全的Ethereum節點數據,占用硬盤空間也會更大。其數據量比單純的full模式數量還要大。這個參數很多人不知道,大部分也沒法用這個啟動模式,因為需要的存儲空間實在太大。啟動命令一般如下:

./geth --datadir  "D:\Program Files\Geth\data"  --syncmode  "fast"    --gcmode=archive  --rpc  --rpcapi  "db,eth,net,web3,miner" 

 

那么,作為交易所與錢包服務商,如何選擇合適的模式呢?如果對安全性要求極高,並且有充足的硬盤資源,自然是選擇Full模式。而對於一般情況下,可使用Fast模式,因為Full模式同步區塊數據需要很長時間。截止到本文發文時間2019-08-12,Fast模式需要同步數據大小為132GB,相較於Full模式的2.8TB而言,小了很多。Light模式對於輕量級的移動錢包比較適用。

 

附,當前Fast模式數據量大小變化:

 數據查看鏈接:https://etherscan.io/chart2/chaindatasizefast

 

BIZZAN(幣嚴) 數字貨幣交易所官方網址:

www.bizzan.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM