区块链中的Merkle Tree

IPFSååºåé¾ä¸­çMerkle Treeï¼

有道面试题讨论了一个应用场景:一道程序员面试题?

题目:某公司在中国和美国各有一台服务器,服务器中各自装有存储相关信息的大文件,这两份文件内容是一致的。某日,由于故障导致美国服务器中的文件中的某几个字节出错了,现在希望找出是哪几个字节出现。请给出算法,要求时间复杂度越低越好。

其中一个答案非常优秀。传统方法中,数据中的改变需要传输整个文件才能进行验证。Merkle Tree本质上是二叉树hash,方案是,文件只储存在leaf nodes中,非叶子节储存left child+right child的hash值。每次有文件有改动,只需要传输相应的data,验证根节点是否相同,文件拷贝时也只需要考虑改动的leaf node,及其与根节点之间的节点。

  • Merkle Tree提供了一种验证文件的方法。
  • Merkle Tree需要的memory/disk space小,验证快。大小为n的文件,时间复杂度O(Log n),空间复杂度O(Log n)。
  • Merkle Tree的验证需要的网络传输流量小。

猜你喜欢

转载自blog.csdn.net/shangsongwww/article/details/88695967