http://www.7klian.com

神奇的Merkle树是如何实现存储层优化的?

图一是 Merkle 树单个节点时的状态:

在 Ontology 中,Merkle 树也有不少应用场景,个中之一就是将每个区块的生意业务根作为叶子节点,结构出一个区块 Merkle 树,用于提供生意业务上链的存在性证明。本文主要描写 Ontology 在实现 Merkle 树时的相关优化细节。
return hash_empty()
别的,在需要提供证明处事的环境下,Ontology 实现的方案可以制止频繁地读写数据以及维护树的干系,只需要对相关文件举办 append 操纵,极大地简化了数据一致性的容错设计。
}
return accum

hashes = self.hashes

Merkle 树在许多应用场景中都有着遍及应用。在 Ontology 中,Merkle 树的一个应用场景就是将每个区块的生意业务根作为叶子节点,结构出一个区块 Merkle 树,用于提供生意业务上链的存在性证明。
在不需要提供证明处事的环境下,可以使共鸣节点的机能和存储本领获得极大晋升。Ontology 在实现区块 Merkle 树的进程中,只将区块 Merkle 树的要害节点举办存储。通过这种要领,我们只读写一次 LevelDB 就可以更新 Merkle 树,计较巨大度到达 O(log n)。
size := len(self.hashes)
type CompactMerkleTree struct {
self.hashes = append(self.hashes, leaf)
通过对 Merkle 树节点插入的调查可知,Merkle 树中存在两类节点:一种是会跟着后续节点的插入,节点值会改变的姑且节点;另一种是不会随后续节点插入而改变的恒定节点。不难证明,成为恒定节点的条件是当该节点及其子孙节点组成的子树是一个完全树。别的,姑且节点的个数较少,只有 log(n),且可以由恒定节点计较出来,耐久化后会因后续节点的插入立马改变。
}

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

相关文章阅读