哈希谜题的第二个特性是成本可以通过参数来变化,而不是固定值。在比特币网络中,每产生2016个区块,所有节点就重新计算一次目标区域的大小,使得后续区块的产生时间间隔约为10分钟。也就是,大约两个星期重新计算一次。
重新调整目标区域的大小,以维持10分钟的间隔,原因是,如果区块产生的时间间隔太小,将会造成很多低效率,还会失去许多优化上的好处,比如在一个区块内放入大量的交易。10分钟并没有神奇之处,只是按照一个指数分布来看待发现下一个区块的时间得到的平均时间间隔,如下图所示。
图2.4.1 发现下一个区块所需时间的概率密度函数
注意上图是整个网络内区块被创造出来的频率,而不是具体一个矿工发现了区块。对于某个特定的矿工,它发现下一个区块的平均时间是:
发现下一个区块的平均时间 = 10分钟/该矿工占全部计算能力的比例
易于证明
哈希谜题的第三个特性是验证一个随机数符合哈希谜题是很容易的。也就是说,一旦某个节点找到了一个随机数并将包含这个随机数的区块广播出去,那么收到这个区块的节点可以快速验证这个随机数是否符合要求,从而证明这个节点是否正确地计算了工作量证明。
2.5 总结
到此,我们已经很好地理解了比特币是如何实现去中心化的,现在总结一些关键点,放在一起以便更好地理解。
身份。比特币协议不需要真实身份就可以参与,用户只需要生成一对匿名的钥匙,用公钥代表身份,用私钥进行签名。
6次确认。我们说一个交易被放进区块链,其实说的是这笔交易被确认了许多次,但是多少次并没有一个明确的规定,6次是一个常用的数目。
哈希谜题和挖矿。哈希谜题具有三个特性:难于计算、可参数化成本、易于证明。同时由于挖矿成本高,因此并不是每个节点都是矿工。
比特币深度使用了分布式共识的概念。在比特币系统中,我们需要围绕比特币的价值进行共识,需要对账本情况进行共识。甚至你拥有多少比特币的算法也依赖于共识。也就是,当我们说Alice拥有一定数量的比特币,我们的真实意思是说,在比特币网络中,区块链中记录的所有Alice地址上拥有的比特币数量。这就是比特币系统的一个终极真相:拥有比特币就是其他节点对给定的一方拥有这些比特币的共识。直观地说,在比特币网络中,你自己对所有人宣称拥有1000个比特币,这没有用,只有大家都认为你拥有1000个比特币,你才是真的拥有1000个比特币。