以太坊解析:默克尔树、世界状态、交易及其他
默克尔树 以太坊的主要数据对象之前,我想先向各位简要介绍一下默尔克树到底是什么,以使得它得以发挥作用的属性特征 假设由定制的默克尔-帕特里夏树维护世界状态和交易。 在默克尔树中, 由叶子节点保存区块数据的哈希,而由非叶子节点保存其子节点的哈希。 -默克尔树示意图(包括节点以及他们之间的关系) 默克尔树所 指向数据的任何改动都会引起节点哈希的变化。 由于每一个父节点中所保存的哈希值都取决于子节点所包含的数据,所以子节点中数据的变更都会引起父节点哈希的变化。并且这样的影响是连锁反应,从叶子节点直达根节点的。因此对叶子节点所指向数据的改动会引起根节点所保存哈希的变化。由上述结构特征,我们可以引申出两条重要的属性: 在判断两棵默克尔树所指向数据是否完全相同时,我们不需要比较每个叶子节点,而只需比较根节点所保存的哈希。 在判断特定数据是否被树所指向时,我们可以使用 默克尔证明 技术。此处不对该技术作过多介绍,只需知道这是证明数据存在于默克尔树中的一种简单、高效的方法。 第一种属性的重要之处在于,我们能够仅利用根节点的哈希值,就标示某一时刻整棵树所指向的数据。这意味着仅通过保存根节点的哈希值就能标示区块(无需储存区块链中所有的数据),且维护数据的不可篡改。 至此我们理清了默克尔树中根节点哈希的作用,下面来介绍以太坊中的主要对象。 世界状态 世界状态是地址(账户)到账户状态的映射