iden3.io 的 blog 最近发表了一篇关于默克尔树的图解文章,相当不错,特摘取了文章的图解部分。
[iden3.io 的 blog](Blog 最近发表了一篇关于默克尔树的图解文章,相当不错,特摘取了文章的图解部分。
包含数据的区块组成了树的叶子。
首先,为每个数据区块创建父节点,其值为它们后代数据区块的哈希。
然后,两两分组父节点,将它们值的哈希保存于上一级的树节点中。
重复此过程直至一个节点,其为树的根。
假设叶子节点数据被恶意篡改
将导致上一级节点的哈希值与之不匹配
因此不得不继续篡改该节点
同理,不得不依次篡改上一级节点
最终,来到了根节点,无法篡改,因为此节点在链上一直处于被跟踪的状态。
现要证明 data0 是默克尔树的一员
首先需要找到从数据区块到根节点的一条路径
然后找到该路径上 data0 兄弟区块
忽略树的其余部分,因为这些区块已经有足够信息参与计算
递归重新计算根的值,若与链上的根的值相等,则 data0 属于默克尔树一部分
先计算 data0 哈希,放于标记为 0 的区块中
将 data0 的哈希结合标记为 1 的区块值计算,结果放入 4
最终结合 4 和 5 算出根的值
比较两者结果即可做出判断
关于默克尔树的其他内容,请阅读原文。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!