37

为什么区块链是不可篡改的

 4 years ago
source link: https://studygolang.com/articles/24833
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

区块链的数据结构是由包含事务信息的块按远近顺序排列的。块按远近顺序在这个链中链接,每个块都指向前面的块。

区块链通常被视为一个垂直堆栈,第一个块是堆栈底部的第一个块,然后将每个块放在前一个块的顶部。使用堆栈将块依次堆叠的概念可视化之后,我们可以使用一些术语,如“高度”来表示块与第一个块之间的距离;和“top”或“top”表示新添加的块。

每个块头生成一个SHA256加密散列来生成散列值。使用这个散列值,可以标识区块链中相应的块。同时,每个块可以通过其块头的“父块哈希值”字段引用前一个块(父块)。 更多区块链知识

也就是说,每个块头包含其父块散列值。这样,通过将每个块链接到相应父块的散列序列,就创建了一个返回到第一个块(创建块)的链。

虽然每个块只有一个父块,但它可以临时有多个子块。每个子块具有与其父块相同的块,并且在“父块哈希值”字段中具有相同的(父块)哈希值。在一个块中出现多个子块的情况称为“块链叉”。

区块链分叉只是暂时的,并且只在多个不同的块几乎同时被不同的矿工发现时才会发生。最后,只有一个子块成为区块链的一部分,解决了“区块链fork”的问题。虽然一个块可能有多个子块,但是每个块只有一个父块,因为一个块只有一个“父块散列值”字段可以指向它惟一的父块。

由于块头包含“父块哈希值”字段,所以当前块的哈希值也会受到字段的影响。如果父块的标识改变了,子块的标识也会改变。

当父块中有任何更改时,父块的哈希值也会更改。这将迫使子块的“父块哈希值”字段发生更改,从而导致子块的哈希值发生更改。子块的哈希值的改变将迫使大块的“父块哈希值”字段发生变化,从而改变大块的哈希值等等。

一旦一个块有许多代,这个瀑布效应将确保这个块不会被改变,除非强制重新计算该块中所有后续的块。正是这种重新计算需要大量的计算,所以长区块链的存在可以使区块链的历史无法改变,这也是比特币安全的一个关键特征。

你可以把区块链想象成地质构造中的一个地质层,或者是冰川核心的一个样本。沉积前表层可能随季节变化,甚至被风吹走。但在更深的地方,地质结构变得更加稳定。在几百英尺深的地方,你会看到保存了数百万年但仍然具有历史意义的岩层。

在区块链中,由于区块链分支导致的重新计算,可能会修改最新的块。最近的六块地在表土里只有几英寸深。但是,在超过6个块之后,块在区块链中的位置越深,更改它的可能性就越小。100个街区之后,区块链足够稳定,可以支付Coinbase交易(包括新挖的比特币交易)。经过数千个街区(一个月)后的区块链将成为一个确定的历史,永远不会改变。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK