默克尔树又称“Merkle Tree”,它是一种分叉树数据结构,用于对数据进行散列,在区块链中,它是存储和验证事务数据的基础结构。
默克尔树是1980年由宾夕法尼亚大学计算机学院的Ralph Merkle教授设计的,有效地解决了一组数据的校验问题,这是为确认没有篡改的数据而创建出来的。它通过将一组包含大量事务(交易)数据的信息块,通过散列算法,分而治之。默克尔树可以被用来实现复杂的数据存储,它减少了在大量信息中进行校验的复杂性。
这种数据结构包含每种事务的散列索引树,每个散列值都是根据它的前一种事务数据计算出来的。每个索引单元都会有一个散列值,这个散列值包含该单元中的所有数据的散列和。最底层的叶节点(Leaf Nodes)包含了真实的数据。所有的节点关联在一起,这就是一个Merkel tree。
默克尔树通常被用于各种分布式系统的验证(verification),因为它可以将一组存储元素的内容压缩为一个“root hash”(根哈希),这个根哈希对此组元素进行整体的汇总,使得可以迅速有效地校验前后数据是否一致,以及验证系统是否处于一致状态。
区块链发明者就用这种树状结构在其系统中,以存储每个区块中的交易,利用数据信息根据其难度创建出Merkle Root。这个root就是整个区块链中所有的交易的集体校验码。如果某个交易数据经过包含在消息摘要中的哈希算法处理,就能得到一个Merkle Root,以此来确保事务正确性和完整性,也就是说,验证者可以根据Merkle root来检查这个交易是否被篡改。
它也支持非常快速和高效的在线技术操作,可以有效验证数据的完整性,而无需任意检查每个节点。默克尔树也可以用来验证医疗数据,金融报表等数据的完整性和准确性,因为它能有效检查出数据中的任何变更。
总之,默克尔树是一项技术,也是一种数据结构,可广泛应用于分布式系统,在区块链中,它也在存储和验证事务数据的基础结构中起着关键作用。这项技术的优势在于,给定一个根,验证者无需验证树中每个节点,只需计算和验证方可非常快速地完成验证。