作者:古土雷柏
发布时间:2019年6月8日
网络来源:知乎
前言
本文尝试从客观事实入手,分析比特币的“永远软分叉路线”是否已经在事实上确立,并且分析该路线形成的可能性来源,以及进一步探讨该路线的未来发展。本文有意避免直接引用大量的技术文档,以免使本文的易读性下降。如有错漏,欢迎指正。
一、“永远软分叉”的技术开发路线是否已经形成?
1.1. 比特币的“共识版本”历史
回顾一下比特币的的共识版本历史,我们看到在2013年3月份(0.8.1版本)之后,比特币共识版本已经没有再进行过任何一次硬分叉:
至今六年,比特币的共识版本一直且只进行软分叉,对于此形成直接的结果就是:
- 过去6年(0.8.1版本)到现在的所有比特币共识版本均全部兼容一种币,即比特币。
- 比特币仍然是存续历史最长的链条
- 绝大部分矿工的支持(背后是因为市场的认可,矿工跟随市场)
- 其它的币种很难伪装成比特币
1.2. BIP的向后兼容性情况
BIP是比特币的改进草案,凡是涉及功能上的变更都首先会以提交BIP草案的形式进行技术论证,我们查阅了近两年的BIP,大体上有如下情况:
- 几乎所有的BIP都支持向后兼容性(即软分叉)
- 均强调与现有版本的无冲突性
- 链上的决策及投票机制,以UASF(软分叉)为主导(即任何决策结果均不会导致硬分叉)
- 早年一些与软分叉过程有冲突的BIP均被标记为Withdrawn(撤销)状态
1.3. 结论
基于以上情况,我认为比特币的共识版本开发的“永远软分叉”路线,已经得到事实上的确立。
二、“永远软分叉”的技术开发路线是如何形成的?
2.1. 硬分叉的必要性减少
在比特币必然要进行硬分叉的可能性来于:
- 恶性bug修复(比如BIP 50)
- SHA256完全受损
除了这两种情况,比特币没有其它情况必然需要进行硬分叉,在协议底层协议稳定之后,关于比特币升级的功能,包括并不限于:
- 计算tx哈希的方法
- 币的可分性
- 块头和事务中的新字段
- 原生彩色币支持
- 缩短块时间间隔
- 区块扩容
均可以同时采用软分叉或硬分叉的方式进行升级,也就是硬分叉不是必要的,用软分叉也可以实现这些功能的升级。软分叉可以将中本聪协议修改为绝对最小(可能除了少数涉及块头,如SHA256 PoW和Merkle Tree),并实现一组全新的规则。
随着比特币解决掉早期发现的bug,在稳定运行的情况下,进行硬分叉的必要性消失殆尽。
2.2. 政治成为影响分叉的主导因素
比特币的成熟过程中,参与各方的核心动力转向经济利益,如其他研究者所指出,这是成熟政治格局的基础。“这种成熟生态强调的核心是给各方带来持久的经济利益,其他如去中心化、安全、便利、自由、抗审查等都服务于此,并因为有利益支撑才能够长期保持。”也就是说接纳比特币的人群在扩大,经济利益是主要动因,使比特币进一步融入社会经济系统。因此比特币的代码迭代,从技术为主导逐步转向政治为主导,这类似于国家建立之后,从军队管制逐步过渡到行政司法立法体制。
早期的比特币由少数的技术人员把控,有什么修改直接就发布了,随着社区的壮大代码审计流程越趋严格。作为开源项目,任何一个人都可以发布比特币的代码,节点软件。但这些软件是否被认为是“比特币”,是一个关键的问题,因为比特币有很多“分叉币”(关于分叉币的历史将另外整理),这些分叉币都不会被认为是比特币。比特币的社区经历“制宪”流程,相当去中心化,中本聪消失后并没有实质上的控制人,它能够运行良好,在于其核心机制是靠数学,即区块链即治理,由算力自行决定比特币的版本选择。比特币代码的部署大体上是这么一个流程,这个流程并非唯一的标准,而是经过多方博弈之后形成的事实:
- 功能和改进的构思,以BIP草案的形式呈现,任何人都可以向邮件组提交原型
- 这里有一个开放的技术讨论,这些草案经过修订和编辑之后,就会发布出来
- 到这一步,没有投票决策、审核、审批的决议,只是作为建议草案发布出来
- BIP草案在成型前,可以在社区论坛自由公布讨论,技术论证
- 这个过程可能会很漫长,但这可以确保技术没有硬伤,以及得到较广泛的认可
- 最后BIP的内容会写入节点代码,但也不会马上生效
- 这些代码可以被下载在测试网进行更广泛的测试验证
- 因为比特币是一个不可中断的网络,所以相关的功能变更需要有自动激活的机制
- 常见的激活机制:在某个区块高度无条件自动激活、根据矿工算力投票比率(比如95%)触发激活、节点信号激活
看起来挺复杂的,但相当科学,可保证三个透明及代码安全:
- 代码透明
- 激活机制透明
- 过程和结果透明
政治由各种纷繁复杂的路线分支组成,因为利益动机的不同,任何一个改动,都可能陷入无休止没完没了的争论,不同的政治主体、政治主张,他们之间互相攻击对方激进、有风险,以及主张自身更符合比特币的远景目标,同时展开激烈的控制权、话语权争夺等等。社区政治化,是比特币发展遇到的最大挑战,也是必经之路。
比特币社区的政治活动广泛展开后,促成了“永远软分叉的技术路线”得到了更广泛的认可,这不是某个人或少部分人的主观意识决定的,而是被公众寻找出来并认可的最大公约数。因为比特币首先是一种“币”,如上所述,参与各方的核心动力转向了经济利益,在对比特币的属性定位上,绝大部分人认为它是一种“币”,而软件只是是其实现方式。任何代码的发布,用户最关心的是它会不会分裂成比特币A、比特币B,假如新版本与旧版本不兼容,现有版本的钱包里面的币还是不是比特币?谁说了算?凭什么他说了算?等等这些问题都会浮现出来。政治不是无源之水,需要面对现实,顺势而为,任何成为主流的政治路线,都必有其群众基础。
2.3. 社区政治家的实践证明路线的可行性
任何政治主张,政治路线,不管其理念如何高远、伟大、光明、正确,如果在政治实践中,没法走通,都不足以成为有效的政治路线。而选择“永远软分叉”的路线,在经历2017年比特币社区的路线政治斗争之后,被实践出来,是可以走通的。
在2017年之前两三年,比特币社区一直在研究“扩容”的议题,因为网络爆满,这当然是好事,是用户量增加的结果。不同的技术力量和参与者,均展开了研究,提出了各自不同的见解和方案,中间当然也有互相磨合的情况,最终分岐聚焦在2个核心问题上:
- 扩容技术采用直接扩大区块大小,还是采取隔离验证技术?
- 是先实现扩大区块大小,再研究部署隔离验证技术,还是反过来?
其中扩区块大小是硬分叉方案,而隔离验证是软分叉方案。软分叉方案我们知道升级后,老版本还是可以用的,新版本、老版本都是同一种币,必然是比特币,而硬分叉方案,是新老版本不兼容,升级后,有一种风向,就是新版本是一种币,老版本是一种币。但是主张的双方都在提出各自充分的理据,争论非常激烈,旷日持久,到了2017年的时候,其中隔离验证的技术,已经形成了完整的BIP(BIP141),激活方法,代码开发,这证明该技术经过了严格的论证、审计和测试,而大区块硬分叉扩容方案,迟迟没有看到明确的BIP,技术开发的进展较慢。
客观情况,也就是实施隔离验证的成熟度高于扩大区块大小,当然在主张者眼里,这不是问题,改几行代码的事情,没必要搞那么复杂,其实这是因为大部分比特币的参与者,以前并没有参与过开源社区的运作,参与比特币是基于经济动机,并不了解开源软件的运作。隔离验证在2016年年底全部代码就部署完毕了,其实这是一次软分叉,并且设置了95%矿工算力投票支持才会激活,看起来对现有用户没有实质性的影响,但是社区里面有大量的攻击,到2017年3月份的时候,投票支持的算力只有45%,显然,有一大半的矿工在犹豫,担心这次决策会有问题。当然,没有投票支持激活的矿工,也不见得就支持大区块扩容,只是隔离验证的部署进度已经走在前头。对于硬分叉的方案,在社区里面一样有大量的疑问,比如硬分叉后,怎么保证不会分裂为两条链条,产生两种币,而主张这个方案者,往往只能给出口头上的保证,绝对保证,按着胸口发誓,我们一定不会去挖原链,产生两条链条,而没有技术上的保障,实际上也没法给出技术上的保障,因为硬分叉确实存在两条链并行存活的可能性。我们知道在政治活动中,这种口头保证,其实很难形成实质的说服力,而分裂比特币为双币的动机也是存在的。所以大区块的硬分叉方案也没有形成优势,双方处于胶着状态。我们到此看到的是软分叉方,有45%的算力铁票,而另外55%里面有一部分是中间派,以及一部分支持大区块硬分叉。按照一般政治经验来理解,算力的基本面在支持隔离验证上。
声音太大太杂,不同的表述方式呈现出截然不同的真相。对立双方的选择,如果真相于己有利,则要尽力拨开真相,展现最全面的真相,而如果真相于己不利,则要搞乱局面制造迷雾,最终目的是一样的,就是让大众跟随己方。这种情况很常见,在BCC硬分叉的时候,有一批媒体一面倒地采取官方制作的宣传稿,说硬分叉是不存在分裂出双币的任何可能性,而另外一方则在积聚算力,全力挖掘以继续出块。到这一步,摆在双方政治家面前的目的已经很清晰,一方要逼出真相,一方要全面搅浑。很多时候,我们不知道哪一方是对的。声音大的一方,未必拥有很大的支持率,但是我们没法判断,在获得明确的信息之前,中间派会处于观望摇摆。
2017年3月12号,软分叉路线这方推出了BIP 148,即UASF,由节点发出信号激活隔离验证,节点强制部署,不支持隔离验证的矿工,会导致出块不被支持BIP 148的节点所抛弃。这类似一种投票,让世界上全部的节点自行选择。这种投票一发生,真相就完全浮出水面,有多少节点支持马上部署隔离验证就出来了,那些有影响力的交易所、开发公司的选择也会摆在台面上可见。这个方案出来后,大区块方迅速做出了妥协,不愿意看到这个投票发生,组织了一批公司代表开会,提交了一个临时提案,接收隔离验证方案,并提出未来再投票决定扩大区块到2MB的诉求。在网上看到支持硬分叉的人写的“即便超过 80% 的人都认为应该扩容,并对 core 团队有很大意见,但真正到了分叉的时候,绝大部分人是反对分叉的”,即大区块硬分叉方案的支持方,很清楚真到了投票,硬分叉的低支持率会现出原形。
根据这个临时提案,双方约定在8月份(BIP 148投票发生)之前,部署BIP 91,仍然由算力进行投票,投票达到80%,即激活隔离验证,然后再在11月份投票选择是否扩大区块到2MB。这个BIP 91证明,比特币社区的不同主张,已经有了实践上的争议解决办法,对立双方的提案都进行了表决。结果BIP 91很快超过90%算力支持通过,隔离验证软分叉激活上线运行,证明55%的中间派看清楚了情况,消除了疑虑。到了11月份的时候,扩大区块到2MB的版本也被开发出来了,但没有矿工跟进支持,支持率接近为零,因为大区块的支持方,已经在8月份看到硬分叉无望之后,自主选择出局,去做了独立的BCC/BCH。关于大区块方的利益动机将另外总结。
回过去看,软分叉开发路线在社区政治的实践中积累了很多的经验和成果,被论证是可以走通的。
2.4. 市场反应强化了此路线的确立
市场对比特币解决了区块扩容争议,给出了正面的响应,2017年8月之后比特币的市值走出新高。比特币保住了原链的延续性,确保了比特币始终保存在所有版本的钱包里面,所有版本的钱包里面只有一种币,必然就是比特币。
市场的认可情况,对于永远软分叉路线的确立起到了进一步强化的作用。反向地想,比特币的市值被任何一种其它类似的币种大幅度反超,则一定会引发这条路线的彻底反思,甚至被颠覆。市场的声音,一定会影响社区的政治,而社区的政治一定会影响技术开发路线。
比特币有三种投票机制:节点投票、算力投票、用钱投票,前两种是显性的,最后一种也是显性的,很多不看好BTC升级的人,会选择直接卖出BTC,而支持的人可以买入,而且砸钱可以买算力。某种程度上,谁的钱都不是天上掉下来的,所以这种投票也是很客观的。BSV的创始人说要用钱攻击BCH,就是这个道理。比特币的扩容争议尘埃落地之后,如果引发大面积抛售,市价跌倒几十块钱,则会引发升级路线的彻底反思。
2.5. 不存在完全可替代的路线
比特币的“永远软分叉”路线,目前没有其它路线可以完全替代它。我们把比特币视为一个社会实验,完全有多条路线去摸索。同样实现区块网络的扩容,可以扩大区块大小,也可以采用辅助块,也可以采用隔离验证构建二层网络等多种思路,哪种思路是对,哪种思路是错的,在结果出来之前并没有结论。从进化论的角度,分裂分化,是增加了成功的概率,任何一条路线达到目标,都是成功,同样从进化论的角度,每条路线都可能进化出其独特的生存能力。
我们不能说支持某条路线,就完全否定另外一条路线,而是每条路线都有其存在的意义,A路线不可以被B路线替代,反之亦然,B路线不可以被A路线替代。还是用进化论的角度来看,某些路线可能会到某个程度消亡,自然界的物种消失的很多,但在其消亡之前恐怕没有人可以预测,而消亡的物种可能其从属的大分支还在蓬勃发展。
“永远软分叉”这条路线目前没有被替代的迹象,而且是比特币的主流思潮,比特币的参与者并非传统开源软件社区建设者,已经渗透到了政治、经济、法律等领域,不是所有人,但是参与的很多人认为比特币是一种“币”,即使没有严格的标准定义,但是认为它是一种“币”的比重远大于它是一种“软件”。且很多人认为比特币只有一种,只有一种币可以称为比特币。我们从研究的角度,可以建立一个“比特币社会实验”的概念,把各种相关的币种都纳入到这个研究范围。但是,市场认可的是事实上的比特币只有一种,这也是客观情况。
这些堪称朴素的想法简单推导出来,形成一种思潮,即认为比特币本身不作死,不要硬分叉,甚至不做改动,什么都不用做,也是一条路线,稳坐先发优势,它自然会慢慢地前进,接近这个目标。随着比特币多次减半,在10几年后如其手续费收入和区块奖励持平,网络仍然可以正常运行,则其千年大计的帷幕缓缓拉开。而任何对它的攻击,都定性为是要“窃取”比特币的价值。这种思潮就是这么自然形成的。“永远软分叉”与这种思潮是高度吻合的,反过来说,“永远软分叉的技术开发路线”是这种政治核心诉求在技术层面的外在表现。因为有这种诉求,才会有这种路线。
在更宏大的视角来看待比特币实验,不同的路线各有优劣,择路而行,任何一种实践摸索都是有用的。不要去主观及贸然地下定论,保守未必是真保守,演进未必是真演进,再次用进化论的视角,有些激进的进化分支反倒最后返祖变弱了。进化具有随机性。有一条路线比如打出探索创新的口号,一开始肯定能吸引眼球,这种激进的创新如果迅速找到爆点,产生了杀手级的应用,或者极大地丰富了生态,当然会得到大量的认可,但是,如果一年过去了,两年过去了,没什么突破性的进展,折腾不出啥东西,喊口号的一方反倒会丧失信用,以至凉凉,被人指责如同儿戏,很多项目前面喊下的口号都是负债,迟早要还。
永远软分叉路线的思想、实现方式、政治实践是完整的,它让比特币作为一种“币”长期存在,用远至千年的眼光,朝着一个明确的目标和方向,逐步前进,可以说是保守,也可以说是稳妥。即使是同一个人,在做一个决定,也会留一条后路,保留一种可能性,总而言之,这条路线目前稳步前进,没有看到任何路线可以替代这条路线。在客观形势面前,攻击这条路线不妥,并且另立路线者,也不得不承认这一点。
2.6. 结论
比特币渡过了早期底层基础架构期,随着社区政治的成熟,永远软分叉开发路线逐渐得到确立,并且经过一系列的政治实践,论证了这条路线行得通,而市场的认可使这条路线得到进一步强化。经过批判和反思,我认为此路线已经确立起来,且在相当长的一段时间内,没有被撼动的可能性。
三、永远软分叉路线与硬分叉路线的差异
1、回退弹性空间的差异
技术上的结论,一旦出现极端情况(虽然概率极低),软分叉是随时可以回退的,而硬分叉的回退必然引发新的硬分叉。对于安全性的辩论,甚至可以一直上升到哲学层面,有很多时候,不改变现有的状况,被视为是安全的,这符合人的常识思维,而有些时候,认为随机应变才是安全的。做研究的时候,我们经常发现两种截然不同的观点和论据,努力从中间找到其统一点,举出一个双方都无法反驳的结论,是为共识。
比特币在实施隔离验证之后,Craig(俗称:奥本聪)认为隔离验证会增强51%攻击的动机,他举了一个例子,矿工集团发起51%攻击,然后发出信号,回滚到不使用隔离验证的版本,进而窃取隔离验证交易的资金。他的这种想法,基于比特币安全的核心壁垒51%攻击的安全门槛没有变,其实相当于有人已经占领了银行的金库(51%攻击),可以直接把钱运走,有钥匙开门不用,还要上演一出密码破解。不过这个例子,告诉我们一点是明确的,就是软分叉是向下兼容,随时可以回滚。老版本还能用,新版本万一不安全,还可以用回老版本,用户随时可以选择。而硬分叉则不是这样的,新版本不能用,则必然要升级更新的版本。在查资料的时候,发现网上有人用一些主观色彩很浓的说法,区块污染之类的,都是不符合这种客观情况的。这是两者之间的回退弹性空间的差异。
2、“币”与“软件”的差异
“永远软分叉的比特币”更像一种“币”,而“硬分叉的比特币”更像一种“软件”。如第二部分所述,大部分参与比特币的人群,基于经济利益动机,来源非常广泛,并非软件开源社区人员。所有版本的钱包只装一种币,而不是所有版本的软件,每种软件的币都不一样,是多种币。这是一种很简单的理解,而且随着非技术人群的扩大,怎么去向普罗大众说明软件分叉的技术,负担是越来越重。而所有版本的钱包都可以收发一种币,即比特币,就没有这种负担。
比特币作为人类社会的一种实验,它的竞争对手是黄金及其它货币,需要在一个千年的时间内去对比,持久性(durable)和持续的历史,需要具有某种永久的特征,以在人类社会建立“币”的信用。软件功能是服务于“币”,如果基于这个目的去发展它,让它成为“币”,它不能只是作为软件,随意地硬分叉,币是要求稳定的,人民币上不能天天增加二维码、全息图像等功能,增加可以播放视频地功能。
3、技术实现的难度的差异
假设要实现相同的功能,软分叉的技术实现难度普遍高于硬分叉。硬分叉可以随便改随便编,而软分叉必须基于能够向下兼容,这个大前提。这其实攻击软分叉的一个理由,即软分叉导致开发的门槛很高,只有高手才能玩。相当于科学只有科学家才能玩,其他人玩不了。本质上,软分叉再难,属于党指挥枪,技术必须服务于“币”的这个目的,而不是技术人员说实现不了,必须硬分叉,否则编不下去,然后枪反过来指挥党。
最近的一些软分叉方案(草案),包括Schnorr签名的采用声称给予了网络具有显着的可扩展性和隐私增强功能,因为它们将允许更简单的方法来签署交易。Bitmex Research估计,如果完全实施,使用Schnorr签名可以仅基于UTXO计数节省13.1%的空间。Taproot解决了原始Merkle树的低效率和隐私问题。去年的更新包括改进输出脚本的描述符,以及提供一种新的计算机编程语言PSBT。目前看到的,bitcore core的更新沿着软分叉的路线在进行。
4、对生态的影响的差异
包含矿工、基础设施、研发及应用开发、交易所,现在全球大概有1万个比特币全数据节点(不是钱包),另外有8千多个闪电网络节点(第二层)。如果用硬分叉升级的话,每一次升级,都会引发巨大的网络振荡,即旧节点需要升级,然后收敛同步新的区块数据。到目前为止,网络上有87种不同版本的节点客户端,其中升级到最新版本0.18.0的只有1/3,但是其他版本都还在发挥作用。
对于去中心化的社区而言,没有一个统一的公司组织整体升级,硬分叉升级会使一些节点脱离网络(没法同步数据),对于一个公司组织的统一的升级,则没有这个问题,但不利于社区生态的扩大。
5、理性主义和演进主义的差异
现在有一种分析总结,将永远软分叉的路线归结为理性主义,而硬分叉的路线归结为演进主义。是有一定道理的,即软分叉符合一部分理性主义的特征,而硬分叉符合一部分演进主义的特征。理性主义不仅提供了确定的目标,还提供了简单清晰、易于理解的,很有确定性的实现路线,容易激人奋进,获得大众认同;与理性主义相比,演进主义认为人的理性是有限的,甚至不认同普遍普适真理的存在,认为人类是在一次次短期判断、试错和经验中积累起暂时有效的知识和制度,需要不断通过变革适应外部环境、解决内部问题。重要的不是制定长远的规划,而是充分利用历史积累的知识和制度,不断地优化每一次近期决策。但也不完全是这样,软分叉的升级并非没有演进,而硬分叉也不见得没有确定性。
总而言之,两者的目标其实是一致的,这一点我们要承认。
四、永远软分叉路线的发展情况
1、社区对永远软分叉路线的认知
整个比特币社区经过多年的实践和经验积累,包括理论上的研究深化,对永远软分叉路线的认知其实也在扩大和加深。甚至已经影响到了硬分叉路线的支持者。主要有以下两点体现:
其一,BCH社区出现了回归经典路线的呼声,这个呼声的代表就是Craig博士(CSW,俗称奥本聪),他说
- 比特币要想成为世界货币,必须有坚固稳定的基础。
- 城堡应当建立在石头上,而不是沙子上,如果BCH的底层协议不稳定,没有大企业敢把自己的商业引入BCH。
- 比特币系统不应该成为开发者的“玩具”,如同儿戏,想改就改,有什么功能就加,硬分叉不停歇。
- 他是要将系统恢复到中本聪最早的0.1版本,然后“锁定(lock)”。
- 创造BSV,即“比特币之中本聪原教旨”,来实践这条路线。
我们不知道BSV会不会彻底倒向永远软分叉路线,而且其本人从未主导过比特币的开发,很多技术见解流于表面信口开河,但稳定底层的声音是在加强的。
其二,分层实现的可能性正在落地,比特币的闪电网络进展良好,容量扩大数十倍计。而吴忌寒也在推特中强调基于底层协议,推进无需许可的二层创新。底层的稳定是扩大生态的重要一环。
对于硬分叉而言,每次升级都如临大敌,匿名算力投入开挖原链,始终是一种威胁,主导技术升级的人还需要耗费巨额算力成本进行保卫,而且不得不将区块重组描述为”挽救丢失的区块”等。这让我们意识到稳定底层更多的现实意义。
2、永远软分叉路线的细分
犹如政治上划分的左派和右派,会细分不同的流派,左派里面一样可以细分出左派里面左派、左派里面中间派、左派里面靠右派;所谓极左和右倾,反之在右派里面,也一样。在软分叉的路线上,在技术上其实也有激进和保守之分,有一些非常激进的软分叉方法,比如创建辅助块进行扩容,将区块奖励放入辅助块。包括Craig博士的主张,要把几十上百项更新全部回退回去,取消BCH的全部更新,无疑属于永远软分叉的极左路线,这条路线倒是很像现在炒币人群的理念,只要是个币就行了,其他的一切都是白费力气。
应该说涉及到比特币的共识版本的变动,特别是底层规则的修订,整个社区都会非常谨慎,在终目睽睽之下,任何能够上线更新,总结来说具有以下特征:
- 没有技术逻辑的硬伤
- 不伤害现有生态
- 经过全面公开的技术验证、审计、测试
- 没有一面倒的反对声音
- 形成可操作的BIP详细方案
- 形成可操作的激活方案
- 得到绝大多数比率的算力和节点支持
- 投票通过,成功激活
这些特征不是某个人具体规定出来的,而是经过实践及多方博弈,形成的事实上的一种状况。其他的用论坛投票,召集公司开会签约,都是没有用的。这些特征,决定了某些激进一些的软分叉技术,要在比特币进行上线,也是困难重重。因此,不排除,一些差异化的开发路线的建立、研发、尝试,会有不同社区或项目逐步细分出来。