3.6 公共账本的副本
点对点P2P网络环境组成一个网络社区,若每个网络节点为一个记账员,则按照第1章论述的原理,网络社区维护着一本公共账本。
假定你是新加入这个网络社区的一员,在网络环境中,你不知道“最新”的区块,因为它可能在路上,但你可以拿到“较新”的一个区块,可根据上述“缩放机”原理,从这个区块开始,用嵌入它的数字指纹恢复前一区块,即追溯到前一区块,再基于这个区块继续追溯,直至最初的创世纪区块。将追溯到的区块存于本地,你就得到了公共账本的一个副本。这说明,每一个(即使是新来的)网络节点都可以得到该公共账本的副本,并且只维护这个副本,即以此为基础进行记账。然而,公共账本的“正本”只存在于各个“副本”之间,因为这个社区是平等的、无中心的,谁也不能宣称自己的账本是正本。那如何找到正本?对副本进行抽样,统计意义上的公共部分就是正本。因此,并不需要在一个地方存放正本,在需要的时候做个统计抽样就能得到。当然,你得到的是正本的一个副本。
在第1章中我们已描述了,一个伪造的副本是得不到大家的承认的,因而,公众就不会基于它进行交易,这样,该伪造的副本就没有生命力了。如何确认一个副本的真实性呢?因为不同的账页是由不同的记账员通过竞争机制记下的,并且在社区中记账员是匿名的,所以确认一个副本的真实性的方法是选举法。
选举法,即检查投票情况,这是一个概率问题。例如,要确认第1000号区块是否正确,你可以随机抽查社区中的10个记账员,若都一致,就能肯定它是正确的。若还有两个与这个不一致,你就会有点不放心,就会扩大抽查数,如抽查100个。这里有个条件假设:随机抽样达到一定数量时,诚实的记账员就会超过半数。当然,这件事通常交给点对点P2P网络去做,即你去查询某个指定的区块,点对点P2P网络按类似的选举办法返回给你一个正确的区块。一旦确定了这个区块是正确的,那么,可以由此区块追溯到全部区块,即此区块与创世纪区块间的所有区块。为什么呢?请回忆防篡改原理。
点对点P2P网络形成的网络社区具有自愿加入和自愿退出的原则。根据这一原则,我们再去看第1章所述的记账员,他们原来是一个团体,就像记账室的记账员,回家办公后,形成一个固定的社区。办公系统经过“点对点P2P网络”改造,由于进出自由,固定社区变为了动态社区:可能原来的记账员全退出了,可能社区人数大大多于以前了,可能社区人员的地域分布范围更广了。