當前位置:
首頁 > 最新 > 區塊鏈-Ethermint框架源代碼介紹

區塊鏈-Ethermint框架源代碼介紹

邏輯上講,Ethermint做了一件事情:集成Tendermint和Ethereum。Ethermint集成Tendermint實現POS+BFT的共識機制。

本文講解Ethermint的框架實現:

上圖中的中間的一些模塊是Ethermint實現,這些模塊大多數是在Ethereum的代碼上的封裝。比如Ethermint中的ethereum.Node是Ethereum中的node.Node的封裝,Ethermint中ethereum.EthState是對以太的世界狀態的抽象,其實也是以太代碼中的state.StateDB的封裝。

EthermintApplication是Tendermint上的應用程序實現,是Ethermint和Tendermint的「介面」。

1)交易轉發

很清晰,Ethermint創建的是以太的node節點。以太的node節點在接收到RPC的交易時,是緩衝在TxPool中,並發送TxPreEvent通知miner進行打包處理的。這些交易怎麼送給Tendermint的呢?關鍵在event.TypeMuxSubscription。

在ethereum.Backend啟動時,會啟動一個go線程(txBroadcastLoop)。該線程會訂閱TxPreEvent事件,在接收到一個交易時,會通過rpcClient.HTTPClient轉發給MemPool。

2)Validators的更新

Ethermint的Application的介面中的EndBlock的返回值中,可以指明Validator的變化。比如,某個Validator的power設置為0,意味著刪除該Validator。

3)區塊生成邏輯

DeliverTx的介面更新一個個區塊中的交易,Commit的介面生成一個區塊,並加入當前的鏈中。Commit的調用關係如下:

4) RPC的替換

Ethermint劫持了Ethereum的APIs函數,替換了「net」RPC服務,去除了miner相關的RPC服務。具體函數如下,邏輯非常簡單:

大體的框架介紹完了,有對Ethermint感興趣或者有疑問的小夥伴,給我留言討論。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 星想法 的精彩文章:

以太坊-智能合約中的assert和require的區別
以太坊源代碼-ethash演算法介紹

TAG:星想法 |