當前位置:
首頁 > 最新 > 以太坊源碼分析-交易到打包流程概述

以太坊源碼分析-交易到打包流程概述

有個朋友問我一個以太坊的問題:以太坊如何保證交易的執行結果的一致性的? 為了回答這個問題,把以太坊的源代碼翻了一下:

https://github.com/ethereum/go-ethereum

簡單的畫一張圖,描述以太坊的從一個交易到打包的流程:

1)TxPool從網路上接收到一個交易,發送TxPreEvent事件。

2)worker在接收到TxPreEvent事件後,調用update->commitTransactions提交目前收到的交易。

3)Work中的commitTransaction負責調用EVM虛擬機執行交易,並返回給Work有關此次交易的Receipt(執行列表)。

4)Miner調用Work的commitNewWork,從交易列表中選擇交易,組裝區塊結構。

5)Work調用CpuAgent,完成POW工作量證明(打包)。

6)一旦區塊打包成功,worker廣播NewMinedBlockEvent事件。

回答問題:以太坊如何保證交易的執行結果的一致性的?

每個交易在EVM虛擬機中執行後會生成「執行列表」。區塊中所有交易的「執行列表」組成Merkle-PatriciaTrie(MPT)樹。樹根會被保存到該區塊的區塊頭中。也就是說,邏輯上,在區塊中,保存了交易「執行列表」。這樣所有的節點,就可以驗證這些交易的「執行列表」,並由這些「執行列表」,更新狀態。

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

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


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

TAG:星想法 |