这两次硬分叉都是意外,但硬分叉的成因前一个是因为对新产生的区块格式在不同节点上产生分歧,后一个是因为对交易格式在不同节点上产生分歧。比特币社区正在策划一次硬分叉,来由是区块被塞满了交易,为了能在十分钟一个区块里容纳更多的交易,就需要对区块的数据结构做修改。区块的数据结构如图1。比特币网络主要的完整节点软件是bitcoin core 0.12,这个软件规定“区块大小”这个字段最大值为1M。这就导致最后一个字段“交易”能够容纳的比特币交易数据有限,一笔交易至少是250字节,1Mb只能装下4000多笔交易,平均每秒最多只能处理7笔交易。而因为实际的交易往往会达到500字节的大小,实际上平均每秒往往只能容纳3笔交易。所以有人就提出将这个字段的最大值调高,比如Bitcoin Classic这个软件就将这个字段的最大值调到2M,并且以后有计划取前2016个区块大小的中位数再乘一个约定好的倍数来决定下一批区块的大小上限。而Bitcoin XT则将这个值修改为20M,并且每两年翻一倍,直到上限值达到8.3G。而Bitcoin Unlimited则直接将这个字段修改为由矿池决定自己打包多大。问题是,使用这些修改了这个字段的软件的节点生产出的区块就会和没有升级的节点不兼容,没升级的会拒绝验证这些新节点生产的区块。这就会导致硬分叉。由此可见,所谓的硬分叉需要修改的“共识”就是指的是修改区块数据结构格式,或修改交易数据结构格式。