分支和欺诈

让我们回顾一下们基于哈希的区块链系统,你会注意到它实际上并不需要将区块放入线性的链中。没有什么能阻止在一个给定的区块之后紧接着出现两个或更多的区块。

多个区块可以将任何给定的区块作为它们的前一个区块,因此区块链确实可以分支。图片改编自:中本聪

区块树

因此,区块链不一定是线性链。事实上,区块链通常不是线性链。区块链看起来更像“区块树”,有“树干”和“树枝”,如下图。

当两个矿工同时挖出一个区块时,区块树有时会产生一个新的分支。这种情况很少见,但确实会发生。当这种情况发生时,两笔交易会从最近的交易中分离出来,一个新的区块分支就诞生了。

但是,与雅浦岛石币系统一样,比特币需要一个单一的、线性的交易历史。这不允许多个分支共存。(设想一下,你能告诉某人,“在一个历史记录中,我有500美元,但在另一个记录中,我有600美元”吗?)

区块链可以有很多分支,就像一棵树一样(设想一下,底部的区块在地面上,此图看起来很像一棵树)。最长的分支被认为是“正式的”。来源:维基媒体。

最长链原则

为了保证线性的正式历史,比特币使用了名为“最长链原则”的经验法则。这条法则指出,拥有最多区块的“区块树”的分支就是正式的区块链。最长链决定了你有多少钱、过去发生过什么交易等。如果某件事不在最长链上,它就不会发生。

在比特币用户的计算机上运行的比特币软件,只向在最长链上添加一个区块的矿工支付报酬,从而贯彻最长链原则。这通常足以使矿工们保持秩序。(不过,它有一个副作用。如果两个矿工同时开采出一个区块,就会产生两个分支,但只有一个分支会胜出,成为最长链。另一个分支成为“孤儿”并被抛弃,而在挖掘出该分支底部区块的不幸矿工将得不到任何钱。这种“孤儿”事件一天会发生好几次。)

挖矿劫持

但是最长链原则仍然存在安全漏洞。如果一个不正当的矿工创造了一个新分支,并且能比其他矿工更快地挖掘区块,从而使他的分支比合法的分支更长,那该怎么办呢?嗯,不正当的矿工的分支将成为最长链,所以它将成为正式的区块链。他的欺诈链上的所有区块将成为正式历史,而合法链上的一些区块将被扔掉。

攻击者如何通过比其他人更快地挖掘区块来劫持区块链。

当然,让骗子控制区块链会造成很多混乱,这也可能导致欺诈。设想一下,不正当的矿工用比特币购买了数千美元的商品,并把交易放在区块链上。然后,他执行攻击,建立一个比正式区块链更长的新链。他支付给商家的交易数据将被丢弃,因为这些交易数据所在的区块不在最长链上。这就好像他一开始就没有付款一样。所以,他最终得到了所有的商品,但从来没有为它付钱!