区块之间用数字相互联系。比特币使用一种叫作哈希的数学技术,将输入信息转化为简短的信息“指纹”。计算机使用各种哈希函数,最流行的是MD5算法和SHA-256算法。
在比特币中,每个区块都有一个相关的哈希。每个区块的哈希基于它的前一个区块。通过这种方式,每个区块都指向它的前一个区块。所以,如果你有一个区块列表和与它们相关的哈希表,你可以很容易地对区块进行排序。
比特币的区块链系统实际上并不需要将区块放入线性的链中。没有什么能阻止在一个给定的区块之后紧接着出现两个或更多的区块。因此,区块链看起来更像“区块树”,有“树干”和“树枝”。
当两个矿工同时挖出一个区块时,区块树有时会产生一个新的分支。这种情况很少见,但确实会发生。为了保证线性的正式历史,比特币使用了名为“最长链原则”的经验法则。这条法则指出,拥有最多区块的“区块树”的分支就是正式的区块链。
比特币的用户计算机只向在最长链上添加一个区块的矿工支付报酬,从而贯彻最长链原则。如果两个矿工同时开采出一个区块,就会产生两个分支,但只有一个分支会胜出,成为最长链。另一个分支成为“孤儿”并被抛弃,而在挖掘出该分支底部区块的矿工将得不到任何钱。
最长链原则存在安全漏洞。如果一个不正当的矿工比其他矿工更快地挖掘区块,他的分支将成为最长链,所以他的欺诈链上的所有区块将成为正式历史,而合法链上的一些区块将被扔掉。
为了解决这个问题,中本聪使用了“工作量证明”法,也就是说你想建立一个区块就需要正确地算出一个哈希值。但是除非你控制了全网足够大的算力,否则你很难连续几次都是那个首先算出哈希值的幸运儿。