问题:
在中心化网络中,数据通常只能通过单一来源访问,因此组织单一数据副本不需要太多工作,除了信任该系统,别无选择。
但是,在具有多个节点的去中心化网络中,有效地组织数据很重要。在分发数据的区块链中,挑战首先在于有效访问数据,其次,再是进行验证并在所有节点之间准确分发数据副本。
解决方案:
在基于去中心化网络的系统中实现梅克尔树来共享和验证数据。
梅克尔树通过以下方式降低成本:
以共享数据及其验证不需要处理能力的方式组织数据。
它是有效执行的。
梅克尔树的概念
在比特币,以太坊,IPFS,Git,Apache Cassandra和BitTorrent的实现中,共同点在于他们的存储数据的技术,即梅克尔树,该技术是区块链的基本组件,可以高效,安全地验证大型数据结构。
梅克尔树用于在区块链的一个块中存储和组织所有交易,并帮助验证数据的一致性。让我们在下面的图表的帮助下进一步了解该概念,
二进制哈希树
梅克尔树是一个二进制哈希树,其中内部节点的值是其叶节点的哈希。在梅克尔树的根处,我们有交易的哈希,在上图中被表示为H [A],H [B],H [C]和H [D],称为叶节点或子节点。在左树中,H [A]和H [B]分别是数据块L1和L2的哈希值,在右树中,H [C]和H [D]分别是L3和L4的哈希值。内部节点H [AB]是叶节点H [A]和H [B]的串联,类似地,H [CD]是H [C]和H [D]的串联。
梅克尔树的每个叶/子节点都包含交易的哈希,其次是包含叶/子节点(“ H [AB]”和“ H [CD]”的“组合哈希值”的哈希的中间节点),以及然后是根节点,该根节点包含其左树和右树(H [ABCD])的组合哈希值(称为梅克尔根),如上所述。
有趣的是,如果我们想在某个交易中进行任何更改,则中间节点哈希将发生变化,从而导致根哈希同时发生变化。这意味着,如果某人尝试更改一个特定的交易,则根哈希将被更改,并且一旦根哈希被更改,由于它们相互链接,因此存在的所有块的所有后续哈希将被更改。这样,攻击者就无法尝试操纵数据,因为这样做,他将必须实际更改整个链的事务数据,这当然是不可能完成的任务。这就是梅克尔树的设计之美,这使其成为防篡改的数据结构。
梅克尔树负责数据的完整性,因此您不必浏览整个交易即可查看其可验证性。可以将树划分为小的数据块,这些数据块可用于验证整个网络中的事务。此概念称为梅克尔证明,在去中心化系统中非常有用。梅克尔证明(Merkle Proofs)不需要验证整个树中的所有信息,只需要足够的计算能力即可验证少量数据以查看其是否为真。
应用领域
梅克尔树用于在分散和分布式系统中同步数据,在分散和分布式系统中,相同数据应存在于多个位置。
它们还用于检查数据中的不一致之处,并检测整个数据库副本之间的不一致的地方。
主要好处
梅克尔树可以将数据分成不同的部分,从而提高了大规模的可扩展性,因为梅克尔树可以分为微小的信息块进行验证。
它有效地验证了数据的完整性。
可以将任何数量的数据存储在梅克尔树中,该树将始终以顶部的根哈希结尾。
它提供了高级数据和一致性验证。
在梅克尔证明的帮助下,梅克尔树大大降低了成本。
梅克尔树如何使Umbrella Network受益
由于梅克尔树可帮助有效地组织数据,从而使验证过程使用的计算能力较小,因此,Umbrella Network使用它以低成本将数以千计的真实数据点带到了链上,而不会牺牲安全性和数据完整性。
在Umbrella Network的系统中,梅克尔树上的每个叶子都代表一个预言机的数据点。梅克尔根哈希是梅克尔树中整个交易块的唯一标识符。在代表树中所有数据的梅克尔根哈希上进行了“权益证明”共识,最终验证的交易集以一笔交易费的成本写在链上。
Umbrella利用梅克尔树来批量处理事务,以解决当今预言机中的可扩展性问题。梅克尔树用于汇总数据,允许将多个交易捆绑为一个交易,并且只需支付一次费用。因此,显着减少了将现实世界的数据链上链所需的时间和成本,从而使Umbrella Network成为成本最低的预言机解决方案,并且具有市场上可用的最大数据集。
原文链接:
https://medium.com/umbrella-network/merkle-trees-an-introduction-to-concepts-and-components-5d2ff2b939e2
作者:Shubhi Tiwari
翻译:Vane