1. 程式人生 > >Eth和EthClient程式碼目錄詳細說明

Eth和EthClient程式碼目錄詳細說明

一級目錄
eth:以太坊協議

ethclient :以太坊RPC API客戶端

二級目錄

downloader:手動全鏈同步,主要負責區塊鏈最開始的同步工作,當前的同步有兩種模式, 一種是傳統的fullmode,這種模式通過下載區塊頭,和區塊體來構建區塊鏈,同步的過程就和普通的區塊插入的過程一樣,包括區塊頭的驗證,交易的驗證,交易執行,賬戶狀態的改變等操作,這其實是一個比較消耗CPU和磁碟的一個過程。另一種模式就是 快速同步的fast sync模式, 這種模式有專門的文件來描述。請參考fast sync的文件。簡單的說 fast sync的模式會下載區塊頭,區塊體和收據,插入的過程不會執行交易,然後在一個區塊高度(最高的區塊高度 - 1024)的時候同步所有的賬戶狀態,後面的1024個區塊會採用fullmode的方式來構建。 這種模式會加區塊的插入時間,同時不會產生大量的歷史的賬戶資訊。會相對節約磁碟, 但是對於網路的消耗會更高。因為需要下載收據和狀態。

fetcher:基於塊通知的同步。接收到當我們接收到NewBlockHashesMsg訊息得時候,我們只收到了很多Block的hash值。 需要通過hash值來同步區塊

filters:用於區塊,交易和日誌事件的過濾,包包含了給使用者提供過濾的功能,使用者可以通過呼叫對交易或者區塊進行過濾,然後持續的獲取結果,如果5分鐘沒有操作,這個過濾器會被刪除。

gasprice:提供gas的價格建議, 根據過去幾個區塊的gasprice,來得到當前的gasprice的建議價格

tracers:收集JavaScript交易追蹤

github地址:

https://github.com/guoshijiang/go-ethereum-code-analysis