以太坊 交易树

每个区块都有一棵独立的 交易树 (transactionsRoot),

这棵树包含了当前区块打包的所有交易。交易的排列顺序由矿工在打包时唯一确定。

若有幸包同一个块中含了同一个账户发出的数笔交易,矿工按照发送账户的 nonce 值顺序安排该账户的交易。矿工在排序完成后,调用自身的以太坊虚拟机执行交易指令来变更世界状态中对应的账户的状态,收取相应的交易费。

每笔交易最后都会被永久记录下来,并且组织成 MPT 树的叶子节点,经过层层哈希计算后,树根的256位哈希值被记录下来进入区块头,该值,在代码中被命名为transactionsRoot,即为 交易树

下图中最右侧为一棵MPT结构的交易树示意图。它的一个叶子节点为一笔交易,若我们放大该节点,则能看到一笔交易的细节包含6个域,已在 交易的样子 详细阐明,此处不再赘述。

http://static.codebaoku.com/pics/40/a5/40a50230d477204599703c427e91127c.png

单笔交易和交易树的构成

每个区块都有一棵独立的 收据树 (receiptsRoot)。收据树中包含了执行交易期间产生的相应的收据,就和我们去超市买东西,在交易完毕后拿到的收据小票一样。如果一笔交易是一次智能合约的执行,则在以太坊执虚拟机执行的过程中 ...