区块链是一种以数字方式存储数据的概念。这些数据以块的形式出现。这些块链接在一起,使数据不可变。当一个数据块与其他块链接时,它的数据将永远不会再被更改。任何想要再次看到它的人都可以公开使用它,并且可以按照添加到区块链的相同顺序使用它。一旦将信息添加到区块链中,任何人都无法更改信息。
在上一节中,我们学习了如何将区块构建和加密哈希绑定到整个过程中。在这里您可以看到区块链如何结合使用所有这些概念来保持完整区块链的完整性。
想象一下如下图所示的一堆交易数据块。
在上图中,您可以看到块按时间顺序组装。第一块之后是第二块,然后是第三块,然后是第四块,您可以根据需要继续它。在这里,你会发现有块号字段、数据字段、随机数字段、哈希值字段和前一个字段。前一个字段对应于前一个块的哈希值字段。
我们知道,区块链中的每个区块都以加密方式与下一个区块相关联。在上面的例子中,块一中的前一个字段为零,因为块一没有先前的哈希值,所以它的值为零。在第二个区块中,您会发现前一个字段中有一个哈希值,它引用了前一个区块的哈希值。这个过程一直持续到最后一个块。
现在想象一下任何块中的数据是否被更改。假设我们在第 2 个区块中进行了更改,现在第 2 个区块中的数据不同了,并且挖掘该区块也获得了一个新签名。与这组新数据对应的签名不再链接到其他块。它只是破坏了第 2 个块,因为哈希不再有效,并且它也使在它之后到链末端的每个块都无效。它向该区块链的其他用户表明区块 2 中的某些数据已被更改,并且由于区块链应该是不可变的,因此他们通过返回区块链的先前记录来拒绝此更改,其中所有区块仍链接在一起。这是区块链的主要优势。
现在,如果您尝试修复它,唯一的方法是找出一个在上一课中解释过的随机数。所以我们只取一个块并尝试一下。如果它没有给出有效的哈希值,请尝试使用两个、三个、四个,如果它们都不起作用,则只需挖掘它。当你挖掘一个区块时,系统会发现有一个有效的哈希值,因为它有四个前导零。但是正如您注意到的,当您尝试对第二个块进行散列时,该散列没有四个前导零。因此它仍然是一个无效块。所以你也必须挖掘这个块。此外,您必须对一直到链前端的每个块都这样做以解决问题。
现在让我们谈谈拥有四个前导零的重要性。这四个前导零与称为难度级别的东西相关联。难度级别是绑定并内置到区块链网络中的东西,它决定了您获得一个区块的等效加密哈希的难度。在这种情况下,该难度级别要求我们的哈希值小于目标中的哈希值。
为此特定目的,我们需要一个至少有四个前导零的目标。例如,如果哈希目标是0000a1b2c3d4e5f6,则任何小于或等于此数字的哈希都是有效的块哈希。许多散列将满足此要求,并且其中任何一个都是有效的。然而,找到这样的散列是一项艰巨的任务。散列目标越小,找到有效散列就越困难。
随着新计算机以更多加密散列方式添加到比特币网络,这些难度级别会随着时间的推移而不断增加。因此,更多的哈希能力意味着难度级别需要提高。该难度级别每两周调整一次,以确保实际竞争解决这些密码问题的计算机总共需要大约 10 分钟来挖掘新块。
例如:如果我们要找到一个小于或等于 0FFFF 的哈希,我们有 65,536 个选择。然而,如果我们要找到一个小于或等于 000FF 的哈希值,我们只有 256 种选择。较低的目标数字意味着较少的选择。通常,我们在散列中需要更多的前导零,找到有效的散列要困难得多。