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