比特币一开始设计就是将区块生产间隔时间设定为平均10分钟,并不是严格的10分钟。10分钟这个时间是一个统计上的平均值,设定原理是这样的:
比特币系统会每隔2016个块检查全网挖出前2016个块的区块平均间隔时间,即2016个块的总时间除以2016。系统有一个“难度值”的设定。如果这个平均间隔时间大于10分钟,则系统会将“难度值”调低,以希望下一个2016个块的生产周期的区块间隔时间尽量逼近10分钟。如果这个平均间隔时间小于10分钟,则系统会将“难度值”调高。公众号关注:博森科技小蝶。
这么设计直接影响比特币的产出速率,比特币总量设计为2100万BTC。平均10分钟产出一个块,一个块的区块奖励是50BTC,每挖出剩下的一半时,区块奖励就减少一半,约四年会发生一次减半,现在已经发生了2次,目前一个区块奖励是12.5BTC/BCH。这样下去,大约到2140年会全部产出2100万BTC/BCH。
比特现金BCH现在不是使用上述2016个区块来调整难度,而是使用了另一个算法,叫DAA逐块调查难度值,目的是在算力波动大的前提下,让区块平均出块时间更趋进10分钟。
币的产出速率事关行业发展的时间窗口,这个是很重要的,但为什么是10分钟一个块,这个其实很难计算其合理性。不过,这次BCH讨论缩短区块时间,并不影响剩下的币的产出速率,所有参与讨论的人在这个目标是一致的。缩短区块的支持者也是要将区块奖励同比例下调,以保证币产出时间不受影响。
下面我们分析区块间隔时间具体对什么有影响。
第2章 区块间隔时间影响用户体验
比特币是通过“确认数”来保证安全性,所谓的“确认数”就是认可你这笔交易的区块数量,区块是矿工挖出来的。安全性和确认数是呈正比的,我们一般认为比特币(BTC和BCH)六个确认就是100%安全,以太坊36个确认就是100%安全。也就是比特币是1小时就可以达到100%安全,以太坊是9分钟。而实际情况是,比特币1个确认的安全性已经在绝大多数场景达到了100%,比如你往绝大多数交易所充值就只需要1个确认。而以太坊12个确认就满足了大多数场景的安全性。并且如果你是小额支付,在熟人圈的支付,零确认已经100%安全了。现实生活中绝大多数支付场景也是0确认就够了。
但人总是希望越短时间越好,太长的确认时间用户就不耐烦。这是支持缩短BCH区块间隔时间的最大理由了。
第3章 区块间隔时间影响挖矿去中心化
挖矿是这样的,系统会给出一个目标值,这是一个数,比如前面有18个零。挖矿就是找出一个小于这个目标值的随机数,比如前面有19个零。找到了,就挖到了区块。
这个随机数是对矿池对最新高度的区块链进行哈希得来的。矿池先构造一个最新的区块,并且将这个区块连并之前所有的区块进行哈希,哈希一次就对比一次目标值,如果不小于目标值,就调整他构造的最新区块中的一个叫Nounce值的随机数,再哈希。
第4章 区块间隔时间影响孤块率
如果同一时间,有两个矿池都挖出了一个块,那必然会有一个孤块。也因此,矿池之间需要建立比一般的P2P网络更紧密的联系,以及时发现别的矿池是否挖到了区块,从而更及时更新自己的挖矿高度,以避免浪费挖矿时间。
孤块率和网络硬件基础设计相关,越快的网络,就越能更快地发现同行是否挖到块,从而降低孤块率。而越大的区块,传播时间越长,就越容易造成同行发现时间更长,就会增加孤块率。
在完全相同的硬件基础设施下,以及相同区块大小下,区块间隔时间缩短了,会提高孤块产生的概率。区块总量多了嘛。大家发现最新高度的时间也缩短了。
而越长的区块间隔时间,在追求相同的孤块率下,可以支撑更大的区块。假设矿池追求孤块率达到0.1%,即1000个块有一个孤块。如果区块间隔时间是10分钟,全网可以传播最大区块可达到1G区块,而时间下降几倍,意味着最大区块尺寸就得下降。
第5章 区块间隔时间影响51%攻击能力
在各种条件都相同的情况下,越长的区块时间,生产一个区块的成本就越高。那越短的区块时间,就显然降低了51%攻击的成本。
现在假设10分钟,对阵2分钟,所有其他条件都一样。全网有一个持有51%算力的坏蛋矿工,准备51%双花一笔交易。
这个坏矿工先花出去一笔交易,在得到一个确认后,开始发起51%攻击。因为持有51%算力,那他拼命算,假设算到3个块,就超过了其他算力成为最长链。那10分钟的区块间隔就需要40分钟的双花时间,而2分钟,则只要6分钟。这样的攻击成本完全是两个维度的。
但10分钟的安全是不是安全系数过高呢?51%攻击的安全隐患是不是被夸张了呢?毕竟莱特币2.5分钟也没啥问题,各种币都越来越短的区块时间,其实都挺安全的。
第6章 区块间隔时间影响SPV钱包的使用
比特币是有SPV验证的,SPV钱包一般是会装在手机上,只保存所有的区块头。现在区块头是80字节,一天144个区块,一年会产生144*365*80/1024=4.1M的区块头数据。 现在是10年了,现在SPV钱包要下载41M的区块头数据了。交流请加笔者!