主页 > imtoken钱包安卓版手机下载 > 为什么比特币的出块速度设置为 10 分钟?

为什么比特币的出块速度设置为 10 分钟?

比特币选择10分钟出块,也就是1/600 BPS(Blocks/Sec),这个是根据具体的设计,也是人为的选择。比特币的最高交易处理速度为:7 TPS(Transactions/Sec),这是整个交易验证机制、共识机制、P2P通信机制以及代码实现所达到的技术上限。相比之下,以太坊目前是1/20 BPS和20 TPS,维基链是1/10 BPS和1000+TPS。对于 POW 共识机制的公链,通过改变挖矿难度系数来动态调整 BPS。但是对于DPOS机制的公链来说,BPS是不变的。

然后说一下比特币选择BPS设计的原因:因为比特币采用POW共识机制,即每个人都可以成为矿工参与挖矿,并且可以随时退出挖矿。因此,全网参与挖矿的矿工计算能力动态变化。当参与挖矿的人数较少时,算力较低,挖矿难度系数会根据算法自动递减;相反,当参与挖矿的人数增加时,算力会增加,挖矿难度系数会根据固定算法自动增加。通过调整难度系数来保证一个相对固定的出块时间。但是因为难度系数不是实时调整的,而是根据设计和代码实现每2016个区块调整一次,大约是2周(如果绝对平均出块时间:2*7天*24小时/ day *3600/hour/600 seconds/block = 14*24*6=2016) 所以调整难度系数有滞后性,无法把握整体算力的变化进行调整及时,导致每次算力调整后出块的时间周期不同,但一般在10分钟左右波动,不会有太大的偏差,即达到了统计平衡。

为了增加敏感性理解,比特币出块时间表见以下网络统计:

比特币出块速度

那为什么要调整难度系数来保证BPS相对稳定呢? ?因为难度越大,需要更多的算力同时计算出答案,也就是挖地雷。反之,要保持相同的时间成功挖矿,就需要计算总算力,调整一下难度系数吧。

但为什么必须是 10 分钟?当中本聪做出这样的选择时,并没有明确说明。网上也有很多研究,但没有一个“官方”或绝对权威的说法。根据作者对区块链的研究,我认为时间长短是基于以下因素的人为选择:

1) 交易广播时间:所有参与挖矿的矿工都需要获取最新区块的信息,并在此基础上尝试挖掘连接的下一个区块。据研究,从一个节点向整个P2P网络节点广播一条消息的时间为下表的统计数据:

比特币出块速度

也就是说,全网每个节点平均获得一个新区块的时间是12.6秒。比特币的出块间隔是10分钟比特币出块速度,比广播覆盖整个网络节点,这也是必要的。

2)共识建立时间:如果出块间隔短,则必须降低难度系数以保证更短的出块时间。这样,在同样的算力下,更多的矿工会在前一个区块的基础上产生新的区块,从而增加更多的分叉,同时也会导致更多的无效区块在网络中被广播比特币出块速度,导致每个参与节点需要做更多的计算来处理分叉。

比特币出块速度

3)空块率大小:在没有交易的情况下,区块链有时也会产生空块,这是一种比较浪费的机制,无法避免。如果块之间的间隔太短,产生空块的概率越高,浪费越大。

为了可视化整个网络节点的挖矿过程,用下图给大家解释一下:

如果全网共有三个比特币矿工挖矿,绿色路线分不挖矿成功的节点迁移轨迹。

比特币出块速度

​但是,从一个矿工节点的角度来看,连续两个区块的间隔分为:

比特币出块速度

令:时间 T = t1+t2 为区块间隔时间。 t1 负责挖矿,t2 负责解决冲突并广播新挖出的区块。如果有分叉,t1生成的新块没有被接受,那么浪费的时间就是t1。

如果整个网络中节点的计算浪费率控制在10%以内,那么t1/T = 10%。

如果 t1=1min,则 T=10min。

但是,其实对于绝大多数矿工来说,他们的挖矿程序不会在整个t1+t2过程中停止,因为整体的浪费模式挖矿收益要大于节约模式挖矿收益,所以一旦之前的区块被成功开采,连续第二次开采成功的机会也会增加。虽然也产生了更多的废弃区块,但最终挖矿成功的概率大大增加。这个10分钟的区块间隔设计并没有解决能源浪费的问题,这是当时中本聪没有想到的。