甲blockchain是包括散列以先前块的链.每个块由单个哈希树(或Merkle树)组成.我正在讨论的是区块链的整体结构.
由于区块链的值在哈希树内部,在块链内查找值的最佳方法是什么?我想通过遍历整个区块链来搜索树以寻找您想要找到的值是不可行的.我是否缺少搜索区块链中块内部值的搜索方法?
如果您拥有的是每个块中具有Merkle树的区块链,则根据定义,此数据结构不提供任何有效搜索任何内容的方法:
log N时间)M,其中M是块的数量)之外什么也没有用.总而言之:不,块和Merkle树的哈希对搜索信息基本上没用.它不仅"效率低下",而且是设计中区块链中包含的数据最无用的"索引"(因为一旦数据中的一个位翻转,哈希就会完全改变).如果你想在这样的数据结构中找到任何东西,除了在线性时间内遍历它之外,你绝对无能为力.所有这些哈希所做的就是确保区块链不被篡改,而不是其他任何东西.
但是,每当您想要在其中查找某些信息时,没有人强迫您遍历整个区块链.相反,你可以
然后根据你的每一个要求
每次附加一个新块
或者:偶尔重建数据结构,分别处理最后几个块.
它与"互联网"非常相似.它是一个包含内容的节点网络.你如何在这些节点中找到任何东西?每次想要查找任何内容时,您是否遍历所有节点?不,你问一个搜索引擎.因为搜索引擎已经在后台完成了工作,并访问了网络中的某些节点,并对内容编制了索引,因此您可以轻松地在其中查找内容.同样的事情,除了你的图形是线性的(如果你忘记了孤儿分支),以及之前添加到图形中的节点不会经常变化(从来没有,除非有人不成比例地强大攻击你的区块链).当您更新数据结构时,以前添加的节点的不变性当然应该用于提高效率:如果您已经看过这些节点,则无需每次都重新扫描它们(与互联网中的内容不同)索引节点节点可以改变).
另一个(显而易见的)替代方案,如果你可以影响区块链的设计:考虑提前可能有用的东西,从一开始就将所需的数据结构烘焙到区块链中,这样不仅区块链本身,而且无法轻松修改有助于导航区块链的数据结构.
| 归档时间: |
|
| 查看次数: |
606 次 |
| 最近记录: |