区块链应用开发指南:业务场景剖析与实战
上QQ阅读APP看书,第一时间看更新

1.7.1 区块是怎么产生的

每个区块由参与其中的计算机节点独立生成。由于是分布式网络,所以就会有不同的区块在同一时间被生产出来。区块链数据库中的区块通过哈希信息相连构成了一条基于哈希信息的历史链。不同的区块在同一时间产生,系统中就出现了多条历史链。区块链会提供一套算法来对每一条历史链进行打分,以此来留下分数更高的链,同时淘汰分数低的链。

随着时间的推移,区块链的每一个独立节点都在生产自己的区块,同时接收其他节点传递过来的区块。所以节点本地总是会有多条历史链。这时候,节点就需要在本地生产的区块和接收到的区块中进行选择,如果接收到的区块构成的历史链优于自己本地的,那么就会销毁自己刚刚生成的区块,然后以更优的历史链为基础,再生成新的区块并广播给网络中其他的节点。

由于区块生成一直在各个节点中不停地发生,所以从任何一个节点上得到的历史链都无法保证是最优的。但是由于区块链总是把新的区块不停地加到旧的历史链上,每一次添加都会增加这条链的分数。这也就意味着,随着时间的推移,某一个区块后边总是会跟上很多新的区块,当它被广播出去之后,该区块也更可能被更多的机器所识别,并以此为基础构建本地的新链,所以虽然这个区块后边跟随的新区块在不同的历史链上可能不一样,但是就这个区块来说,这个区块被所有节点都认为是有效的可能性会越来越高。到一定的程度之后,我们就可以认为这是一个不可修改的区块。这也是我们经常听到当区块达到一定高度,我们就信任这笔交易的原因。