以太坊代码解析

暂时留空,后面填。

merkle tree

以太坊的每一个区块头,并非只包含一颗梅克尔树,而是包含了三颗梅克尔树,分别对应了三种对象:
交易(Transactions)
收据(Receipts,基本上,它是展示每一笔交易影响的数据条)
状态(State)

ffbe32d4.png

这使得一个非常先进的轻客户端协议成为了可能,它允许轻客户端轻松地进行并核实以下类型的查询答案:

  1. 这笔交易被包含在特定的区块中了么?
  2. 告诉我这个地址在过去30天中,发出X类型事件的所有实例(例如,一个众筹合约完成了它的目标)
  3. 目前我的账户余额是多少?
  4. 这个账户是否存在?
  5. 假装在这个合约中运行这笔交易,它的输出会是什么?
    第一种是由交易树(transaction tree)来处理的;第三和第四种则是由状态树(state tree)负责处理,第二种则由收据树(receipt tree)处理。计算前四个查询任务是相当简单的。服务器简单地找到对象,获取梅克尔分支,并通过分支来回复轻客户端。
    第五种查询任务同样也是由状态树处理,但它的计算方式会比较复杂。这里,我们需要构建下我们称之为梅克尔状态转变的证明(Merkle state transition proof)。