本文摘要:译者录:以太坊网络是一台富状态(stateful)的世界计算机,其状态还包括状态余额、交易流水号(nonce)、合约代码及合约存储内容等。
译者录:以太坊网络是一台富状态(stateful)的世界计算机,其状态还包括状态余额、交易流水号(nonce)、合约代码及合约存储内容等。在技术上,这些状态数据是靠一种叫作 “默克尔树根” 的结构来的组织的,因此,以太坊世界状态及其采访、改版,之后可传达为一棵默克尔树根及其采访、改版。某种程度地,所有跟默克尔树根涉及的数据证明及检验操作者,都可以在以太坊协议的语境下被解读为状态的证明及检验操作者。
实质上,默克尔树根是我们解读、利用、改良以太坊协议不可或缺的一环。本文讲解了一种可以证明多个值不存在于同一棵默克尔树上的方法,因此也可以说道,这就是在讲解如何证明多个以太坊状态隶属于同一时刻的世界状态的方法。
科普 | 什么是默克尔截顶稠密默克尔树根多值证明(Sparse Merkle multiproofs)是对默克尔树截顶(Merkle pollard)的一种替代方案,可在为证明一棵默克尔树上不存在多个值时获取空间上更为节约的证明。什么是默克尔证明、默克尔树截顶,我已在前一篇··文章中说明过了;引荐您再行读者并解读这些概念再行来读者本文。接下来,文本将用右图的默克尔树来说明多值证明:稠密多值证明最先由 Vitalik Buterin 明确提出。
多值证明多值证明(multiproof)就是把一棵默克尔树中的一组证明包在一起,从而节省存储空间。例如,下面是右图右图默克尔树根的 3 条默克尔证明:从上图可以显现出,3 个证明总共包括 9 个中间分支的哈希值(即由绿色标示的部分):每条证明有 3 个哈希值。
将这 3 个证明组合成如下图右图的结构,蒸多值证明:比起于单条证明时总共必须的 9 个中间分支哈希值,默克尔多值证明只必须 7 个哈希值,这就节省了存储空间。稠密的多值证明虽然默克尔树根的多值证明显然节省了一些存储空间,但其中一些数据可以用其他方式获得,所以去除这些数据可以更进一步节省存储空间。
(译者录:可通过其他方式获得的数据,就不必须存储在证明中,只要在必须时需要获得才可)以上图的默克尔树根多值证明为事例,网卓新闻网,许多中间分支的哈希值都可以被计算出来。比如检验者将未知的值 Banana 和 Peach 通过哈希函数计算出来后,可以获得哈希值 bc4F…8d3f 和 59a0…421d。对于与六根节点连接的两个节点的哈希值 c0b7…da30 和 6ff9…8e3d,可以通过其孩子节点(与两个节点必要连接的,并正处于上方的节点)的哈希值计算出来。因为孩子节点的哈希值要么是证明中包括的,要么可以通过再行上一层的哈希值计算出来。
右图中黄色的节点标记了这 4 个可由计算出来获得的哈希值:去除这些哈希值后,可以获得 默克尔树中稠密的多值证明,如下图右图:稠密的默克尔树根多值证明将必须包括的哈希值数量从 9 个增加到了 3 个。证明效果完全相同时,稠密的多值证明也比默克尔截顶更加有效地,因为后者必须 6 个哈希值。检验者获得稠密的多值证明后,为了检验那些值是默克尔树根的一部分,必须继续执行以下的步骤(在默克尔树中,依照从左到右,从上到下的顺序):(译者录:“将某个值哈希”指:将值作为哈希函数的输出,获得随机的一串输入)将 Banana 哈希获得 bc4f…8d3f将Peach 哈希获得 59a0…421d将 Kumquat 哈希获得 2aab…6f791将bc4f…8d3f 和 59a0…421d哈希获得 9c15…5dec将 2aab…6f79 和 45cf…14d9哈希获得 a6e4…87df将d596…66ef 和 9c15…5dec 哈希获得 c0b7…da30将e336…ed14 和 a6e4…87df 哈希获得 6ff9…8e3d将c0b7…da30 和 6ff9…8e3d 哈希获得 d576…ffd9自此可以把最后获得的哈希值与默克尔树根的六根哈希值做到较为,如果二者完全一致,则确认所有的值都在该默克尔树中。
本文来源:永旺彩票Welcome-www.cm385qe.cn
我要加盟(留言后专人第一时间快速对接)
已有 1826 企业通过我们找到了合作项目