时间:2023-06-17|浏览:201
保持区块链数据可管理和安全的关键是通过一种称为散列的算法与称为默克尔树的整合数据结构相结合。
什么是哈希?
当交易经过验证并需要添加到链中的块时,它将通过哈希算法将其转换为一组唯一的数字和字母,类似于随机密码生成器创建的内容。然后将两个交易哈希组合起来,并通过哈希算法产生另一个唯一的哈希。这种将多个交易组合成新散列的过程一直持续到最后只剩下一个散列——多个交易的“根”散列。
散列的独特之处以及区块链的一个关键安全特性是它们只能以一种方式工作。虽然相同的数据总是会产生相同的数字和字母的散列,但不可能“取消散列”或逆转过程,使用数字和字母来破译原始数据。
什么是默克尔树?
如果使用完全相同的交易重复哈希过程,则将创建完全相同的哈希。这允许任何使用区块链的人检查数据是否被篡改,因为数据任何部分的任何更改都将导致完全不同的哈希值,影响哈希值的每次迭代,一直到根。这被称为默克尔树。
Merkle树通过将散列交易集汇总为单个根散列来显着减少需要在网络上存储和传输或广播的数据量。由于每个事务都经过散列,然后再次组合和散列,最终的根散列仍将是标准大小。
Merkle树是如何工作的?
当存在大量的数据时,将很难验证它,并需要大量的内存来存储和保护它,但在Merkle树的帮助下,我们可以轻松克服所有这些问题。
Merkle树是区块链技术的基础部分,我们可以很容易地发现大量数据发生的任何变化,并且可以有效地对数据进行验证。比特币和以太坊也正在这样做。
正如我们在上图中看到的,所有的基于都在底部,顶部的单个哈希值称为根哈希值或Merkle根。
举一个例子,有4个交易A,B,C,D。现在A和B哈希值将合并成一个哈希值,而C和D将合并成另一个哈希值,AB哈希值和CD哈希值现在合并成一个单一哈希值,称为根哈希或Merkle根ABCD。
根哈希值将包含所有交易的所有信息。Merkle树会反复哈希值,直到只剩下一个哈希值称为根哈希对节点。Merkle树是一棵二叉树,所以需要有偶数个叶节点,如果交易数是奇数,那么最后一个哈希值将重复一次,以创建偶数个叶节点。
在上图中,我们可以看到当交易数为奇数时的重复交易哈希值,这就是merkle树复制奇数叶的方式。
所有交易的数据被总结成单一的根哈希值,并存储在块头,因为我们现在的数据在不断变化,我们将改变整个哈希函数,如果哈希值改变,那么Merkle根也会改变。Merkle树帮助我们维护数据的完整性。
Merkle树的另一个优点是,如果你想知道一个特定交易的状态,我们不需要下载整个区块链,我们只需要要求垂直证明,证明树的某个分支,并验证一个特定的交易分支即可。