币圈子解析:比特币为什么分叉为BTC和BCH?
在比特币运行的早期,中本聪对区块的大小进行了1M的限制和规范。这种限制既保障性能较弱的个人电脑也能够参与,同时也起到了防止攻击者让比特币网络超载的风险发生,毕竟那时候系统还很脆弱。在1M的限制下,10分钟一个区块最多能够容纳2000笔左右的交易,也就是每秒7笔交易,即7tps(交易数/秒)。在2014年之前这个限制对系统完全没有影响,因为没有那么多人使用比特币。但却为此后比特币的发展埋下了重大的隐患。
早在2010年10月,早期开发者Jeff Garzik考虑到以后1M区块会容纳不下所有交易,提出修改代码,按照每分钟1400笔的目标(即23tps)扩容到7.1M。反对者认为这要求所有的软件必须升级,容易造成混乱。中本聪赞同暂不升级,但提出应该预先做好准备,比如在更新软件时在代码中写入在某个区块高度(也就是某个时间)后,区块限制提高。此后中本聪隐退,开发工作交给了Gavin Andresen牵头。
2015年5月,比特币的平均区块大小达到了400KB,并且在快速增长,Gavin提出应当在2016年3月1日将区块限制扩大到20MB。此后,Jeff Garzik提出BIP100(BIP指比特币改进建议,按提出顺序进行编号)建议75%算力同意情况下即可进行扩容。Gavin Andresen 和 Mike Hearn提出BIP101,主张先扩到2MB,然后每两年翻倍。
此时,挖矿领域中国的几家矿池占据了主要的份额,由于担心国内网速劣势,区块过大传输慢,会影响挖矿收益。因此联合拒绝Gavin的20M扩容建议,但接受BIP100扩容到8M。[1]
此时,比特币的开发由称为Core的核心开发组进行,尽管Gavin仍然是Core的关键成员,但其他多名成员反对改变1M上限,主张
通过隔离见证方案(Segwit)优化交易和区块链结构在1M区块限制不变的情况下,扩大交易容量到原来的1.7倍左右;
在主链之外,发展第二层支付通道(比如闪电网络、侧链、树链等等)来解决容量不足的问题。
此时的Core核心开发组多名成员受雇于Blockstream公司,组内主张扩容的Gavin处于较为鼓励的状态。
Gavin为了推进扩容,重新组织了一个开发团队,并在开发展、矿池、社区之间进行协调和妥协的方案。2016年2月终于形成一个90%以上算力同意的情况下从1M扩容到2M的共识。但在Core开发组的坚持下,社区普遍反对Gavin组织的开发团队,并且接受了Core的隔离见证方案。中国矿业与Core在香港达成共识先实施隔离见证,然后硬分叉扩容至2M。这个共识实质上否定了Gavin的主张。在扩容争论的关键时刻,澳大利亚人Craig Wright宣称自己是中本聪,并且得到Gavin的支持。但最终Craig没能拿出充足的证据,被当做冒充中本聪的众多骗子之一。这也使得Gavin名誉扫地,被迫退出了Core开发组。
2016年7月,比特币的1M区块被填满了,更多地交易无法及时计入区块,为了使自己的交易能够更快地计入区块,人们不得不支付更高的交易费“贿赂”矿工优先打包自己的交易。然而,比特币系统的拥堵并未动摇Core坚持1M区块大小的决心,甚至强调,比特币系统本来就不应当是廉价使用的,而应当是全球重要的金融结算网络,普通的支付需求应当交给第二层支付去满足。
2017年加密货币市场快速高涨,用户和交易需求快速增长,比特币系统的拥堵越来越严重。在高峰期,积压未能打包确认的交易一度达到20万笔,正常确认所需要的交易费高达300元以上,重要的交易需要额外向矿池支付几百元到几千元不等的“加速费”。这使得比特币支持者无法继续宣扬其快速、价格低廉的支付功能。更严重的是,由于比特币的拥堵,高涨的市场需求快速涌入以太币、莱特币、瑞波币等等竞争币,比特币的市场份额从90%以上迅速跌落到50%以下。
而此时,Core之前承诺的2M扩容并未推进,而隔离见证对比特币系统的改动很大。为此,越来越多的人怀疑Core开发组并不打算扩容至2M,一旦隔离见证部署,交易和区块结构改变,扩容会比以前复杂困难很多,从而事实上无法扩容,并且使开发更加依赖于Core开发组。为此,一些比特币企业和个人开始组织或资助新的开发团队脱离Core开发组,开发扩容的比特币软件。
2017年7月,开发团队BitcoinABC开发完成了从1M扩容到8M的新软件系统,并做了应对攻击的防范措施,经多方测试较为稳定。由于整个社区仍然认为Core代表了比特币开发的主要力量,也由于对比特币系统分裂的恐惧,比特币的绝大部分支持者最终选择了支持Core开发组和隔离见证。
只有少部分人对Core失去信任和信心,经再三考虑后担心隔离见证之后的比特币会走入衰落,并且能够超越对比特币分叉的恐惧。他们选择支持BitcoinABC的软件版本,并在2017年8月1日正式开始运行。
新的软件版本在比特币区块高度478599开始运行,此区块之后,世界上就有了两种比特币系统软件,分别记录1M限制的区块和8M限制的区块,由于参数不同,两个系统软件相互不承认对方的新区块。从而就出现了两条区块链或两个账本。