您现在的位置: 哈希区块链 > 哈希区块链 > 一文读懂区块链中的哈希值

一文读懂区块链中的哈希值

来源:哈希交流群  热度:   时间:2022-05-17 10:16
1. 哈希值是什么? 哈希值是将任意长度的输入字符串转换为密码并进行固定输出的过程。哈希值不是一个密码,我们不能通过解密哈希来检索原始数据,它是一个单向的加密函数。 你...

1. 哈希值是什么?

哈希值是将任意长度的输入字符串转换为密码并进行固定输出的过程。哈希值不是一个“密码”,我们不能通过解密哈希来检索原始数据,它是一个单向的加密函数。

1PwzVPi98ermXcoD6BSXhP9YoR46Ssi8PW2dBEZQ.jpeg

你知道吗,我们可以在哈希算法的帮助下,以固定的字符串长度保存互联网上的所有数据。我们使用一个数学算法称为SHA-256(安全哈希算法-256位)。SHA 256是SHA-1的继承者,SHA-1有160位。

2. 如何在区块链中使用哈希值?

在区块链中,每个块都有前一个块的哈希值,前一个块被称为当前块的父块,如果考虑父块有一个当前区块。它将会有上一个块的哈希值即父块。

在区块链中,每个块都有前一个块的哈希值。当我们更改当前块中的任何数据时,块的哈希值将被更改,这将影响前一个块,因为它有前一个块的地址。例如,如果我们只有两个块,一个是当前块,一个是父块。当前块将拥有父块的地址。如果需要更改当前块中的数据,还需要更改父块。当只有两个数据块时,很容易更改数据,但是现在,当我们在区块链中实现时,2020-01-24 12:32已经挖掘了614272个块,而614272(th)块的哈希值00000000000000000007 a6be31011560f1e3abe8f125e356a31db6051753334e。如果我们要更改当前块614272(th)中的数据,614271块的哈希地址必须更改,但是614271块的哈希是不可能更改的,所以这就是区块链被称为不可变的,数据可信的。区块链的第一个块,称为起源块。你可以从这个起源块中看到有多少块被开采到现在。

我已经创建了这个过程的可视化。

zugv130csz6XhQmuzzKuWU3MecpN7YicF5qXi7QL.jpeg

如果我们对输入的任何部分做一个小的改变,输出就会有一个大的改变,请看下面的例子以获得更多的理解。

哈希值是区块链技术不可变的和确定的潜力核心基础和最重要的方面。它保留了记录和查看的数据的真实性,以及区块链作为一个整体的完整性。这是一个更技术性的方面,然而,理解区块链如何工作以及它所具有的不可估量的潜力和价值是更坚实的一步。

3. Merkle树是如何工作的?

当存在大量的数据时,将很难验证它,并需要大量的内存来存储和保护它,但在Merkle树的帮助下,我们可以轻松克服所有这些问题。

Merkle树是区块链技术的基础部分,我们可以很容易地发现大量数据发生的任何变化,并且可以有效地对数据进行验证。比特币和以太坊也正在正样做。

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

正如我们在上图中看到的,所有的基于都在底部,顶部的单个哈希值称为根哈希值或Merkle根。

举一个例子,有4个交易 A, B, C, D。现在A和B哈希值将合并成一个哈希值,而C和D将合并成另一个哈希值,AB哈希值和CD哈希值现在合并成一个单一哈希值,称为根哈希或Merkle根ABCD。

根哈希值将包含所有交易的所有信息。Merkle树会反复哈希值,直到只剩下一个哈希值称为根哈希对节点。Merkle树是一棵二叉树,所以需要有偶数个叶节点,如果交易数是奇数,那么最后一个哈希值将重复一次,以创建偶数个叶节点。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

在上图中,我们可以看到当交易数为奇数时的重复交易哈希值,这就是merkle树复制奇数叶的方式。

所有交易的数据被总结成单一的根哈希值,并存储在块头,因为我们现在的数据在不断变化,我们将改变整个哈希函数,如果哈希值改变,那么Merkle根也会改变。Merkle树帮助我们维护数据的完整性。

Merkle树的另一个优点是,如果你想知道一个特定交易的状态,我们不需要下载整个区块链,我们只需要要求垂直证明,证明树的某个分支,并验证一个特定的交易分支即可。

4. 如何使用哈希值来保护数据?

哈希值大大提高了数据的安全性。正如我已经提到的,它是一个单向的加密函数。一个加密哈希函数需要具备以下几个关键的特性才能被认为是有用的:

1. 每个哈希值都是不同的。

2. 对于相同的消息,总是生成相同的哈希值。

3.不可能根据哈希值来决定输入。

4. 即使对输入的整个哈希值做一个小的更改也会被更改。

哈希值帮助我们查看数据是否被篡改。

例如,您下载了一段重要的信息,要查看数据是否改变,可以通过哈希值算法运行数据,比较数据的哈希值和接收数据的哈希值。

如果两个哈希值都是相同的,则不更改数据,如果哈希值不匹配,则在接收数据之前更改数据。