gpt4 book ai didi

blockchain - 在区 block 链中搜索项目

转载 作者:行者123 更新时间:2023-12-04 02:01:54 30 4
gpt4 key购买 nike

A blockchain是一个包含前一个区块的哈希值的链。每个块由单个哈希树(或 Merkle 树)组成。我在讨论的是区块链的整体结构。

由于区块链的值位于哈希树内,那么在区块链内查找值的最佳方法是什么?我想遍历整个区块链以在树中搜索您希望找到的值是不可行的。是否有我缺少的搜索方法来搜索区块链中的块内的值?

最佳答案

如果你所拥有的只是一个在每个区块中都有 Merkle 树的区块链,那么根据定义,这个数据结构并没有提供任何有效搜索任何东西的方法:

  • Merkle 树的叶子中的所有哈希值本质上都是伪随机的,并且不包含有关内容的可用信息
  • 默克尔树节点中的所有散列都是由伪随机位序列(密码学上强伪随机无意义平方,log N 次)串联而成的伪随机位序列
  • 指向前一个块的散列除了找到前一个块外一无是处(伪随机废话的 M 次方,其中 M 是块数)
  • 块本身的哈希值也是如此

  • 结论:不,区块的哈希值和 Merkle 树对于搜索信息本质上是无用的。它不仅“效率低下”,而且是在设计上对区块链中包含的数据进行了最无用的“索引”(因为一旦数据中的一个位翻转,哈希值就会完全改变)。如果你想在这样的数据结构中找到任何东西,除了在线性时间内遍历它之外,你绝对无能为力。所有这些哈希值所做的就是确保区块链不被篡改,仅此而已。

    然而,每次你想在其中找到一些信息时,没有人会强制你遍历整个区块链。相反,你可以
  • 一次遍历整个区块链
  • 构建您需要的任何其他数据结构,以在区块链中查找所需内容(索引、搜索树、图形、指纹,以及您可以从区块链中的数据构建的任何内容)

  • 然后在每一个要求你简单地
  • 使用预先计算的数据结构高效地执行您的查询

  • 并且每次附加一个新块时
  • 更新所有预先计算的数据结构。

  • 或者:偶尔重建你的数据结构,单独处理最后几个块。

    这与“互联网”非常相似。它是一个包含内容的节点网络。你如何在这些节点中找到任何东西?每次要查找任何东西时,是否都要遍历所有节点?不,你问一个搜索引擎。因为搜索引擎已经在后台完成了这项工作,并且访问了网络中的(一些)节点,并将内容编入索引,以便您可以轻松找到其中的内容。同样的事情,除了你的图是线性的(如果你忘记了孤儿分支),并且之前添加到图中的节点不会经常改变(永远不会,除非有人不成比例地攻击你的区块链)。当您更新数据结构时,当然应该使用先前添加的节点的不变性来提高效率:如果您已经看过这些节点,则无需每次都重新扫描它们(不像在互联网中,以前的内容 inode 节点可以更改)。

    另一个(明显的)替代方案,如果你能影响区块链的设计:提前考虑可能有用的东西,从一开始就将所需的数据结构烘焙到区块链中,这样不仅区块链本身,而且帮助导航区块链的数据结构不能轻易修改。

    关于blockchain - 在区 block 链中搜索项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48817283/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com