zoukankan      html  css  js  c++  java
  • 区块链中的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的验证需要的网络传输流量小。

  • 相关阅读:
    js 笔记
    openstack笔记
    Nginx
    Nginx
    Nginx
    nginx 服务器篇
    Nginx 原理篇
    MySQL 视图、触发器、函数、存储过程
    day41
    MySQL 作业题及答案
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313617.html
Copyright © 2011-2022 走看看