http://www.7klian.com

什么是 Merkle Pollard?

区块链系统常常会用到默克尔证明,证明某个数据荟萃内存在某个输入值,这样就不需要将整个数据荟萃都存储在区块链上了。假设一个以太币合约内有一个白名单列表, 只答允列表内的账户购置以太币。假如将白名单内每个账户信息都存储在区块链上,势须要支付很高的本钱。在这种环境下,只需要建设一个默克尔树,再将根节点存储在区块链上即可。

在暗码学钱币规模,默克尔树是一种很高效的要领,用于证明一大组数值中存在一个特定的数值,并且将数据存储量降到了最低。本文先容了默克尔树,而且展示了如何通过存储多个层级的默克尔树分支而非根节点的方法来大量淘汰反复证明(即 “默克尔树截顶(Merkle pollard)”)。

默克尔证明需要三样对象:输入值(赤色标志)、中间支哈希值(绿色标志)和默克尔根节点(蓝色标志)。每个输入值对应的中间支哈希值荟萃各不沟通。

利用默克尔树截顶可以或许节减大量存储空间。譬喻,一个 STARK 测试证明假如利用的是默克尔根节点,需要 564 KB 的存储空间,假如利用的是默克尔树截顶,只需要 346 KB 的存储空间,淘汰了 40% 。传输并验证证明所需的时间也会淘汰。

2 阶默克尔截顶包括两层中间支,如下图所示:

-一处窜改对整个默克尔树的影响(如灰色阴影部门所示)-

正如上文所述,纵然输入值极为近似,获得的哈希值也是迥然差异的。假如输入值产生了变革,会影响到默克尔树的各个条理,最后得出完全差异的根节点。譬喻,将输入值中的 “Peach” 改为 “Pear” 之后,这个默克尔树城市产生变革,如下图所示:

至此,可以看出默克尔证明具有以下特征:

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。