主页 > imtoken钱包怎么激活 > 区块链中的哈希到底是什么?

区块链中的哈希到底是什么?

imtoken钱包怎么激活 2023-01-17 14:17:00

制作 |区块链营(ID:blockchain_camp)

什么是哈希?

散列是对任意长度的输入进行编程以加密固定长度的输出的过程。哈希与加密方法不同,因为哈希值无法解密得到原始数据。事实上,哈希是一个单项加密函数。

通过哈希函数,可以将互联网上的数据以定长字符串的形式存储。其中一种方法是 SHA-256(安全哈希算法 - 256 位),SHA-256 是 SHA-1 的继承者,SHA-1 的输出是 160 位。

在区块链中如何使用散列?

在区块链中,每个区块都有前一个区块的哈希值,前一个区块称为当前区块的父区块。由于每个区块都有前一个区块的哈希值,当当前区块的任何数据被修改时,该区块的哈希值都会发生变化,这会影响到前一个区块,因为它包含了前一个区块。区块的地址。

例如,当前有两个块,一个是当前块,另一个是父块。当前块包含父块的地址。如果需要修改当前区块的数据,则需要修改父区块链。如果只有两个块最好修改数据,但实际上区块链上有很多块。

截至2020年1月24日12:32,共有614272个区块,第614272个区块的哈希值为00000000000000000007a6be31011560f1e3abe8f125e356a31db6051753334e。如果要修改第 614272 个区块的数据,第 614271 个区块的哈希地址会发生变化,但不可能修改所有 614271 个区块的哈希值,因此区块链中的数据无法被篡改。并且可靠。区块链的第一个区块称为创世区块。

研究人员将这个过程可视化:

对输入的微小修改可能会导致大量输出。改变。

哈希是区块链技术及其不变性和潜力的核心基础和最重要方面。哈希保持记录和查看数据的真实性,区块链的完整性也是如此。

这也是区块链技术最重要的技术特性的一部分。只有理解了哈希,我们才能理解区块链不变性的潜力和价值。

什么是默克尔树(马尔可夫树)?

当需要验证的数据很多时,需要消耗大量内存来存储和保护,过程比较困难。但是加上默克尔树,这些问题就可以轻松解决了。

马尔可夫树是区块链技术的基础。在这种结构下,很容易在大量数据中找出哪些数据发生了变化,整个数据验证过程非常高效。马尔可夫树用于比特币和以太坊。

从上图可以看出,所有交易都在底部哈希值,顶部的哈希值称为Root hash或Merkle root(马尔科夫根)。

如上图,有4笔交易A、B、C、D。A和B会被hash形成一个hash值,C和D会形成另一个hash值,AB的hash结果和CD hash结果会合并形成一个新的哈希值 - 根哈希或 Merkle RootABCD。

根哈希包含所有交易信息。马尔可夫树会反复计算节点对的哈希值,直到只剩下一个哈希值,即Root哈希。

Merkle 树是二叉树哈希值,所以它需要偶数个叶子节点。如果事务数为奇数,则将最后一个哈希值复制一次,以创建偶数个叶子节点。

如上图所示,可以看出奇数值的交易数量有重复交易hash,说明Merkle树会计算奇数叶子树。

所有的交易数据都会被汇总为一个 Root 哈希,存储在区块头中。数据的任何变化,整个哈希值都会发生变化,如果哈希值发生变化,Merkle 根也会发生变化。 Merkle 树有助于维护数据完整性。

Merkle 树的另一个好处是,如果你想知道特定交易的状态,你不需要下载整个区块链,你只需要请求一个垂直证明和树的特定分支即可验证特定交易。事务分支。

如何使用hash来保证数据安全?

散列还提高了数据的安全性。因为数据没有加密,所以没有必要也没有办法解密数据。因为散列函数是一种单向加密函数,所以加密散列函数需要满足一些关键特征才能发挥作用,包括:

每个哈希值都不一样

相同的消息会产生相同的哈希值

无法从哈希值确定输入值

输入值的微小变化也会导致整个哈希值发生变化

哈希可以帮助确定数据是否已被修改。例如,如果之前下载了一些重要信息,为了判断数据是否被修改,可以对数据进行哈希计算,将数据的哈希值和接收到的数据的哈希值进行比较.

如果hash值相同,表示数据没有被修改,如果hash值不匹配,表示数据在发送后和接收前都被修改过。