mitchellcoin|解密被“神化”的区块链( 三 )


哈希有几个重要的属性:
1、给定相同的数据,它们将始终相同。
2、如果数据的任何部分发生变化,即使是最轻微的变化,它们也会完全改变。
3、很容易再次检查给定的散列是否来自给定的数据,但很难判断仅从散列中给出了什么数据。
举一个简单的例子。假设当我们通过哈希算法运行“区块链”这个词时,我们得到了“ef7797”(实际上,哈希要长得多)。如果我们运行“区块链”,只有一个字母不同,我们会得到“8e809e”。
如果我们想确保我们正在查看最初经过哈希处理的相同数据,只要我们使用相同的程序来创建我们的哈希值就很容易了,通过散列程序运行“区块链”,无论是谁在做总是会产生“8e809e”。但是反过来需要很长时间:如果我想知道有人为了得到“9ed142”而在散列程序中放入了什么,我只需要猜测,直到找到产生那个的特定单词哈希。
链中的每个区块都包含前一个区块的哈希值,这正是哈希算法在给定区块数据时所吐出的内容。如果有关该块的任何内容发生更改(例如,其中的交易,甚至整个块本身),则该块的哈希值都会更改,从而破坏链,包含前一个区块的哈希值的下一个区块会说“我已改变,有事!”
所有这些加起来构成了一个系统,在该系统中,任何查看提交给链的新块的人都可以知道在任何时候都没有任何更改。如果有,则更改后每个块的哈希值必须与当时的分类账不同。
mitchellcoin|解密被“神化”的区块链
文章插图
04、问题四:如何检查这些哈希值是否匹配?确切的答案取决于你说的是什么区块链,但每一个区块链都有一个叫做 "共识算法 "的东西。基本上,每个区块链决定它经典真理均基于投入工作最多的链。在基于工作证明的区块链中,这意味着拥有最多区块的链:因为每个区块都需要工作来挖掘,最长的链将是投入工作最多的,因此将是官方链。(不过,也有一些其他的方法,我们将在后面谈到)。
这将是非常痛苦的(对于你的计算机而言)。所以首先你要做的是改变发生这种情况的区块。然后,您必须重新计算该区块的哈希值,以及之后的每个区块……而且您不仅必须在一台计算机上执行此操作(这已经够难了,原因我们将在稍后介绍)。
这就是你可以让这些东西公开存在的方式,但仍然可以合理地确定没有人在篡改记录。攻击可以而且确实会发生,但是当需要如此多的计算能力来完成攻击时,很难不被人注意到。
05、问题五:区块链是如何被制造与挖掘的?一个区块如何被制造或“挖掘”取决于区块链本身。最受欢迎的系统之一被称为“工作量证明”。
工作量证明系统……很复杂,但我们已经涵盖了理解它们所需的大部分内容。基本上,区块链对于它希望区块的哈希看起来像什么有一定的规则。例如,假设 MitchellCoin 区块链要求散列的前五个字符都是字母 a(这样它就会像我一样不断尖叫)。
当一个挖矿节点想要创建一个区块时,它将获取区块中的所有数据,加上一个称为随机数的特殊数字,并通过哈希算法运行它。如果哈希开始时不是“aaaaa”,它会将随机数增加 1,然后重新开始。所以,你的你的计算机只是猜测数字直到它达到它想要的散列。
而且哈希值很大——我只使用了几个字符作为例子,但一般来说,哈希值有 60 多个字符长。平均而言,您的计算机必须进行大量猜测才能找到符合条件的猜测。但是,同样,虽然我们需要很长时间才能找出合适的哈希值,但几乎不需要任何时间来检查以确保我们的数据确实按照我们所说的进行了哈希处理。所以当您创建或挖掘区块时,你所做的每个猜测都需要时间和电力。