交易到打包流程概述

以太坊如何保证交易的执行结果的一致性的?

简单画一张图,描述以太坊的从一个交易到打包的流程:(点击查看大图)

以太坊源代码分析-3U财经

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)树。树根会被保存到该区块的区块头中。也就是说,逻辑上,在区块中,保存了交易“执行列表”。这样所有的节点,就可以验证这些交易的“执行列表”,并由这些“执行列表”,更新状态。