[后羿區(qū)塊鏈筆記]用以太坊搭建私鏈發(fā)送交易遇到的坑

軟件環(huán)境

go:1.9.2

ethereum&GETH:v1.8.11-unstable

名詞解釋:

以太坊有三種同步的模式,full, fast, light

full 模式

從開始到結(jié)束,獲取區(qū)塊的header,獲取區(qū)塊的body,從創(chuàng)始塊開始校驗每一個元素,需要下載所有區(qū)塊數(shù)據(jù)信息。速度最慢,但是能獲取到所有的歷史數(shù)據(jù)。

//命令:
geth --syncmode full

fast模式

獲取區(qū)塊的header,獲取區(qū)塊的body,在同步到當前塊之前不處理任何事務。下載的數(shù)據(jù)大小約為50GB(截止2018-02-04)。然后獲得一個快照,此后,像full節(jié)點一樣進行后面的同步操作。這種方法用得最多,目的在不要在意歷史數(shù)據(jù),將歷史數(shù)據(jù)按照快照的方式,不逐一驗證,沿著區(qū)塊下載最近數(shù)據(jù)庫中的交易,有可能丟失歷史數(shù)據(jù)。此方法可能會對歷史數(shù)據(jù)有部分丟失,但是不影響今后的使用。

(注意:挖礦節(jié)點必須是 full ,否則會增加塊廣播給其他人的風險)

//命令:
//使用此模式時注意需要設置–cache,默認16M,建議設置為1G(1024)到2G(2048)
geth –fast –cache 512

light模式

僅獲取當前狀態(tài)。驗證元素需要向full節(jié)點發(fā)起相應的請求。

//命令:
geth --light

重點說明:

> geth help
DEPRECATED OPTIONS:
  --fast   Enable fast syncing through state downloads (replaced by --syncmode)
  --light  Enable light client mode (replaced by --syncmode)

在Geth1.5以上版本,--fast參數(shù)已經(jīng)改為--syncmode=fast,當然--fast依舊有效。 大家應該注意到?jīng)]有--full選項,因為以太坊同步區(qū)塊默認是full。

  --syncmode "fast"                               Blockchain sync mode ("fast", "full", or "light")

注意:默認情況下full模式,在以太坊源碼中,如果本地當前塊是number 0 (創(chuàng)始區(qū)塊),不管指定的哪種模式都默認是 --fast模式,當geth第二次啟動的時候,默認情況下full模式同步。
因此很多小伙伴在沒有指定同步模式的時候,在同步區(qū)塊的前期非常快,當再次重啟機器或者斷掉geth再啟動發(fā)現(xiàn)更新區(qū)塊速度非常慢,就是這個原因

此判斷代碼片段位置

handler.go 代碼中 新建以太坊子協(xié)議管理器

func NewProtocolManager()
    // Figure out whether to allow fast sync or not
    if mode == downloader.FastSync && blockchain.CurrentBlock().NumberU64() > 0 {
        log.Warn("Blockchain not empty, fast sync disabled")
        mode = downloader.FullSync
    }
    if mode == downloader.FastSync {
        manager.fastSync = uint32(1)
    }
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容