Metaon

Posted on Mar 20, 2022Read on Mirror.xyz

比特币的分叉币逻辑

1.“分叉”是什么

1.1. 分叉的一般定义 分叉(fork)是在软件开发的过程中,复制了一份代码并进行了修改,都称为分叉,即改出来的代码视为原来代码的一个分支。这是一种非常普遍的行为,在开源社区,任何开源代码都是公开的,任何人可以拷贝一份回来自己改,改出来一个不同的分支版本。把分支版本上传后,在你的分支版本基础上,其他人还可以继续分叉。

随着分叉的增多,一个软件的分叉呈现树形结构,有些软件因为参与开发的人很多,呈现出枝繁叶茂的分叉树形态。

1.2. 分叉的一般意义 1.2.1 版本管理的意义 在一个版本里面有很多修改,这个版本的差异跟上一个版本就会很大,一个版本有10个修改,跟有10个分叉,每个分叉有一个修改,从软件工程的角度,可以精确测试每个修改的变动,便于定位错误、测试、修订。因为开源社区,对同一份代码进行修改的人不同,而且互相不认识,所以不需要征得原作者同意,直接分叉出来,即可获得一份自己具有修改权限的分叉版本,等开发出来好用的功能代码,再提交给原作者审核合并到他的发行版本里面,或者自己独立发行。

1.2.2 迭代改进开发的意义 我们人类对未知的探索需要有大量的摸索、试错、实验,我们无法预设一条完美路径,然后去走,在科学创造、技术研发领域,真实情况是万箭齐发,全面探索,然后最后撞到“大运”,发现(发明)了有用的东西。分叉允许不同的思路和方法并行探索,任何人都可以去探索一条路子,扩大我们未知的知识图谱,因为人类认知的天然缺陷,我们无法完美预见未来,所谓伟大的发明,都是一将功成万骨枯。在技术史上,我们看到很多大企业及其利益联盟展开的史诗级的技术研发,投入了巨量的资源,经过充分的技术和市场论证,结局仍然是遭遇史诗级的彻底失败,这是开源运动得以兴起的原因之一。

1.2.3 开源社区社会化协作的意义 开源软件社区的协作是一种共产主义式的社会化生产,如果没有版本管理和分叉,是进行不下去的。以github为代表的开源代码托管平台,提供了完整的代码库版本和分叉权限管理功能,让全社会所有人,都可以从上面获得代码,并进行开发劳动、上传代码。不同的分叉独立探索,也可以合作,探索的成果还可以共享,探索的过程以子分叉的形式进行,而好的成果被合并形成主干分叉版本。

1.2.4 多样化的版本满足差异化的需求 以Linux为例,有Ubuntu、Debian、Centos、redhat、fedoro等大的分类版本,还有桌面版、服务器版、嵌入式版、精简版、稳定版、测试版、不稳定版、预览版等等的子分类版本。这些不同的linux满足了不同场景的差异化需求。这类版本介绍在网上的信息很多,这里就不详细展开阐述。

1.3 比特币分叉的特点 比特币是由软件实现的,而且也是开源的。比特币的代码一样是枝繁叶茂的各种分叉。任何人都可以修改代码,形成自己的分叉。这些比特币的代码分叉,有一些功能会被纳入”共识版本”,被所有比特币的使用者所使用,而有些代码无法进入“共识版本”,只用于少数范围内的测试调试。

决定哪些代码纳入共识版本的因素有:

技术社区的代码严格审计和论证 算力投票 节点投票 这些因素决定了绝大部分使用者同意的代码,才是共识版本。每一次共识版本的升级,都通过以上因素决定,到目前为止,比特币已经发布过几十次共识版本,相对于最初的版本,里面包含了至少几百项的改动和改进。

我们知道,比特币不仅仅是一种软件,我们更多的是把比特币当成一种“币”,如果每一种版本里面的“币”都不同,那么哪个是比特币,这个问题就产生了,而这对于比特币的“货币属性”是有极大的影响的,“币”的基础属性要求就是稳定和一致,随便印的币,会造成流通混乱,最后无法被信任使用。比特币通过“共识版本”解决这个问题,我们认为共识版本的比特币就是比特币。

代码不断迭代,共识版本有多个,如果不同的共识版本都是互相兼容的,老版本和新版本可以同时使用,所有的版本都保存同一种币,即比特币。而如果共识版本前后不兼容,麻烦就来了,老版本和新版本不能同时使用,新老版本保存两种不同的币。面对这种麻烦,可以争论到天昏地暗,上升到哲学层面去展开,包括什么忒修斯之船之类的哲学理论,都未必能够解决。

因为技术、哲学没法为这个问题提供确定性的标准,所以,基于现实(政治)考虑,目前比特币的共识版本升级已经确立了“永远软分叉”的技术升级路线,即每一个新版本必兼容老版本的共识版本。这不是某个人或组织主观的标准定义,而是多方政治博弈形成的事实上的形势。即一个新版本的(候选)共识版本如果不兼容老版本,导致老版本和新版本会形成2种币,那么这个共识版本基本上无法通过成为共识版本。详细的阐释见【论比特币“永远软分叉的开发路线”】

不用上升到哲学层面去解释,任何版本的比特币钱包,均只保存一种币,即比特币。是比特币获得“币”属性增强的有效手段,包含“存续时间信用”、“稳定形态表现信用”、“不可造伪信用”,这些属性对于货币都是极其重要的。

否则的话,比特币就很可能会成为“一种点对点的在线支付记账软件”,而不是“一种币”。理解这两者之间的差异,对理解比特币的分叉有至关重要的意义。“币”是什么,大部分人也许不能精确解释,但是绝大部分人都能感觉到“币”是什么。本文无意陷入经济学、哲学议题,只是对现状的关注和分析。

比特币的代码上的分叉是随意进行的,但能够被选择进入“共识版本”的代码,必须经过强有力的“共识决策”过程,不兼容的版本会产生两种币,乃至多种币,比特币的分叉已经超越了代码分叉、软件分岔的涵义,我们在谈论比特币分叉币逻辑和历史,不是讲比特币代码分叉的逻辑和历史,而是讲绕开共识版本制造“分叉币”、伪装共识版本、共识版本争议等分叉币的逻辑和历史。

  1. 比特币的分叉币历史 2.1 分叉币的种类 任何复制了比特币代码,在做了修改之后发布的币种,均可称为分叉币。比特币的分叉币有以下三类:

第一类:Block 0分叉 复制比特币的代码并修改进行分叉,但从Block 0重新开始挖矿,“新币”和比特币没有交集,早期的莱特币、狗狗币、域名币、点点币,都属于这一类。

第二类:Block x分叉 复制比特币的代码并修改,同时复制比特币的区块数据,在某个区块高度继续开挖新币,“新币”在block x之前的币属于旧币的持有者,而新币由矿工新挖。

比特币现金(Bitcoin Cash)、比特币糖果(Bitcoin Candy)、比特币披萨(Bitcoin Pizza)、比特币上帝(Bitcoin God)、比特币信仰(Bitcoin Faith)、比特币钻石(Bitcoin Diamond)、比特币黄金(Bitcoin Gold)、比特币原子(Bitcoin Atom),都属于这一类。

第三类:原链分叉币 原链分叉币其实不是分叉币,它是“被分叉币”,是非常特殊的一种存在。目前为止,比特币并不存在原链分叉币,其它币种出现原链分叉币有ETC(ETH的原链)和BCC(BCH的原链),因为ETC已经硬分叉升级了,原链也不存在了,而BCC是目前唯一存在的原链分叉币,是我们研究的一个对象。A币分叉出B币,然后B币使用了A币的名字,这时候好像产生了一种新币X,其实它就是原来的A。

第四类:不存在的分叉币 针对比特币可能发生的分叉,交易所会上线“期货”分叉币,充值1个BTC到交易所,可以兑换为1个BT1、1个BT2,然后两个币分别可以交易,这种分叉币其实并不存在,只是交易符号,bitfinex在2017年开过2次这样的盘子,其中Segwit 2X的分叉最后没有发生,所交易的B2X直接注销,也就说买了B2X这个交易符号的分叉币,在截止之日,如果没有事实上发生分叉,这种分叉币期货直接归零。BCH和BSV分叉的时候也有类似的期货,如果到期之后BSV取消了,没有创造出来,也是类似这种情况。

2.2 第一类分叉币的历史 比特币在2009年产生,而在2011~2013年期间,已经有了数千种币,这些币大部分只是复制比特币的代码,并作了一小部分的修改,甚至只是改一个名字,就发布出来了。所以这些币,都可以视为比特币的分叉币。这类分叉币主要是复制比特币的代码,修订算法,发行总量等参数,各自的主链独立,但都没有复制比特币的区块数据,而是重新从block 0开始挖矿。这类分叉币均各自独立命名,各自规划各自的开发路线,被市场视为全新的币种,在2015年之后,随着用以太坊发行Token的兴起,有一些币种放弃主链条成为了以太坊上面的Token存在。

这一时期创造的币,在市值前100百名以内的,只有莱特币、狗狗币等寥寥无几的品种,其他大部分因为找不到存在的意义,已经走向消亡或式微。

2.3 第二类分叉币的历史 2017年,以大矿工为主导的BCH分叉,是第二类分叉币的第一个品种,之后在一年内这一类分叉币冒出来45个品种甚至更多。这类分叉,因为将block x之前的“新币”空投给了比特币持有者,也因此获得了一些比特币的用户。

这两年创造的这批分叉币,大部分同样因为找不到存在的意义,已经走向消亡和式微。

2.4 “比特币”夺名分叉的历史 所有的分叉币都有独立的名字,但是有一些分叉币展现出了宏大的理想,期望领先实现比特币的目标,并取代比特币的名号。在2017年BCH出现之后,它的名字是bitcoin cash,接着出现了BCH才是真正的比特币这个呼声,类似的呼声现在还有BSV才是真正的比特币。因此,展开了比特币夺名分叉的历史,这里面包含了一系列轰轰烈烈,甚至可歌可泣的奋斗历程。

我们知道,软件的分叉可以枝繁叶茂,Linux分为Ubuntu、Debian、Centos、Redhat等几大分支,每个分支还有很多细小的分支,但是这些分支都没有夺名的动机,都可以和平共处,共用Linux的内核,这种开源软件的名字,应该没有商标所有权的问题,没有任何一个公司、个人、组织拥有Linux、比特币的法律商标专利权。在软件分叉里面没有发生的问题,在币圈发生了,也证明了,币圈的分叉跟软件的分叉是有显著的差异的,在夺名的背后,是因为“币”的属性更要强于其软件的属性。

“名”本质上是虚无的,但对于“币”而言,“名”有现实上的意义,因为有了意义,便产生了争夺。从软件的角度,Ubuntu、Debian、Centos、Redhat都可以称自己为linux,没有毛病,同理,一千种分叉币,其实也可以称自己为比特币,也没有毛病。差别在于比特币是要花钱去买的,而linux是可以无偿使用的,所以比特币之“名”必然只能属于一种币,而不能属于多种币,用软件的思维套在“币”上,矛盾出现了。

2.4.1 夺名动机的来源 比特币夺名的动机其实来源于比特币自身,比特币类似一个魔戒,它采用数学系统实现自身属于胜者的定义,算力最强者获得出块奖励。这种奖励系统背后的意图是制造一个博弈论上的囚徒困境,矿工拼死争夺比特币,但产出恒定,迄今为止,比特币的算力已经上涨千亿倍(12位数),但是10分钟一个块(统计学上的意义)没有变,矿工投入更多,所得没有增加,而且不增加还会吃亏,这类始于各国的军事竞赛,增加军备不会扩大领土面积,但是不增加也不行。比特币有一个解决“拜占庭将军的难题”的理论,使矿工可以合作团结出块,但却设置囚徒困境,使矿工无法达成同步减低算力的共识(现实中同步裁军也很难进行)。

深陷囚徒困境的大矿工联合部分利益群体开启了一项冒险事业,即重造一个比特币,以及发起夺名运动,这群比特币的囚徒发起了进攻。这第,是夺名动机的来源,不过矿工很快发现,重造一个比特币,消灭一个比特币,等于重现了原来的囚徒困境,两币齐挖、多币齐挖貌似更好。

归根结底,这是由于利益格局造成的动机,其他的各种理由和说法,都是服务于这个动机的。当有人发现夺名有好处的时候,就会夺名,当发现夺名没有实质好处的时候,就会取消夺名,今天夺名的动机已经从大矿工转移到了交易市场的投机者身上。在未来,一旦有人发现,树立比特币的唯一性正宗地位,具有潜在的利益,原来主张夺名的人,也完全可能转变为支持全力消灭分叉币。总而言之,随着形势风向多变,追求利益最大化的本质动机没有变。币圈的极端主义很多都是伪极端主义,根本靠不住,形势一变,完全可能来个180度大转弯。

在2016-2017年的时候,有一群人找各种理由让比特币硬分叉,表面上看起来是主张某种技术路线,产生了大量的争论,这些争论表面上看也是技术争论,但是我们知道,从来不会有人带领1000个不懂技术的人去linux社区争论内核的CPU线程优化机制,应该采取何种方式为佳。出现这种情况,解释来解释去的,归根结底是有深刻的改变利益格局的考虑,假如有人想好了,就是要制造两个比特币,一边一个,那么硬分叉原链算力高,他就会去挖新链,反过来新链算力高,他就会去挖原链。对于意图突破囚徒困境的大矿工而言,用什么版本不重要,分叉成两个比特币很重要。

2.4.2 夺名的最佳时机 比特币的产生是空前的,而后要再造一个比特币,显然很难,通过分裂然后进行夺名,则相对可行。夺名的最佳时机点,在于比特币有一个共识版本要进行升级,且这个共识版本里面包含了两种可能性(由算力或节点投票选择),选择的结果互相不兼容,也就是硬分叉的升级。在升级的时刻,算力兵分两路,分别选择两种可能性,最终产生了两种币,而且用的是同一版本的节点客户端,一个共识版本的客户端对应两条链条,谁是真正的比特币?可能彻底混乱了,谁是原链?谁是新链?开始吵翻天,在这种混乱之中,产生了一个极佳的操纵时间窗口,包括舆论、算力、节点都可能被引导,利用这个机会,营造出决斗的场面感,某一方利益群体可以一举夺下比特币名号。

所以说,强制性的客户端升级、同时存在不兼容的多种升级选项,都是风险,有人把这种观点称为硬分叉恐惧论,不管怎么表述,这种担忧是客观存在的。共识版本不能包含不兼容的选项,包含不兼容的选项,则无法形成共识版本,所以在一个共识版本里面,要写入两种区块大小的标准,且互不兼容,在社区有基本的理性的前提下,看不到通过的希望。

2.4.3 比特币夺名的发展 比特币在2017年最终确立了软分叉的升级路线,分裂无望,于是BCH直接出现了。BCH出现一段时间,开始有人把BTC定义为BCE,然后也没把BCH称呼为BTC,更多的是称呼为BCH,这种思路脑洞是有点大的,但也挺新奇,让人看到感觉眼前一亮,我有时也在网上搜集BCE的信息。还有人把BTC称为Bitcoin Core,后来真有人做了一个币称为Bitcoin Core。

到了2019年,分叉自BCH的BSV出现了,BSV并没有主张自己是正宗的BCH,而是主张自己是正宗的BTC,在很多关于BSV的文章的前面,一般可见这么一句话:下文的BTC指的是BSV的BTC,不是那个你懂的BTC的BTC。这个逻辑浅显易懂,比BCE有了很大的进步。

2.4.4 比特币之名的标准是什么? 没有谁能够规定哪种币应该叫做比特币,这其实是一种约定成俗,所有人都同意某种币称为比特币,其实也没有人反对,一小部分主要另外一种币是比特币,就要经过奋斗乃至战斗,去争取其他人的支持,让他主张的那种币被绝大部分人认为是比特币,比特币对此没有意见,而这类人除了有发财的想法之外,其实也没有其他的想法来实现他的目标。

哪种币应该持有比特币之名没有一个硬性的标准,比特币的创立者(早就跑路了)也没有制定这个标准。在比特币圈子里面,主要有以下各种说法:

最强算力的链条是比特币 累积最长工作量的链条是比特币 存在时间最长的链条是比特币 挖矿难度最高的链条是比特币 最多节点支持的链条是比特币 交易量最多的链条是比特币 市值最高的链条是比特币 其实这些说法,也没有绝对的共识,后来又有了支持大区块才是比特币的说法,BCH的区块大小为8MB,后来逐步扩容为32MB,而BSV一步到位扩大到了128MB,大有以区块大小论比特币的感觉。这些逻辑,总归是有一部分人相信的,所以只要有人信了,就有市场,所以在夺名运动中,只要有一个逻辑有人认可,就会有人想办法迎合这个逻辑,BCH直接延用BTC的难度系数,这样看起来它就很像是比特币的一次共识版本硬分叉,但它改了难度调整方式,迅速下降了难度,又有点不像了。BCH因为宣传了大区块的好处,逐步扩容到32MB,但实际区块利用率只有0.3MB。

这些关于比特币的标准,我们不知道哪种靠得住,夺名者也很难自圆其说,有些说法如同儿戏。

从常识角度,凡是“币”在稳定性和一致性方面有很刚性的需求,这是其信用价值的基础,比如白金,各方面指标比黄金好,但是黄金毕竟流行千年,在货币信用这方面,黄金是强于白金的。比特币因为有先发优势,且逐步确立了永远软分叉的技术路线,大体上来说,其各项指标优势,只要没有被全方位超越,其积累的时间信用极有可能成为事实上的标准。

  1. 关于原链分叉币的探讨 3.1 原链分叉币的特殊性 在币圈原链分叉币的出现是非常麻烦的事情,如【论比特币的永远软分叉开发路线】所言,永远软分叉从技术上可以规避原链分叉币的出现,而硬分叉的升级,每一次都可能会导致原链分叉币的产生。

我们今天看到,其实产生的原链分叉币也不多,是因为原链分叉币的产生有几个前提条件:

原链分叉只能发生在共识版本升级期间 比特币任何一个共识版本的升级经过广泛的社区化讨论和论证,在没有新的共识版本推出之前,或者推出的共识版本里面没有需要决定激活的修订选项,所有矿工只能挖原链一种选择。比特币具有去中心化的形态,不能随便推出一个版本就成为比特币共识版本,上一次扩容升级,争论了整整2-3年,最后软件发布了,还耗费了整整一年多完成了算力投票、激活,而且这还是软分叉升级,共识版本里面并没有存在不兼容的选项。在比特币领域,共识版本的硬分叉升级,已经有6年没有发生了,且可以预见接下来相当长时间也不会发生。而在BCH和BSV阵营,也在对硬分叉的升级路线进行反思,不排除也会转变升级方式,所以原链分叉的产生机会其实不多。

共识产生了分歧或分裂 算力投票都是有成本的,一般来说矿工倾向于抱团作战,投入相同的成本分别获得两种币,差价数十倍,显然,都会扎堆去挖高价的币。挖矿都是真金白银的投入,因此除非有非常显著的分歧,否则分叉币很难诞生出来。有很多时候,分歧本身并不重要,而是有人期望有分歧,这跟现实一样,挑起战争的一方都会宣称自己是正义的,而结束战争的手段也必然是战争,利益格局的变动,哈希战争目前还看不到完全消停的时刻。

需要有足够大的算力支撑 比特币的算力难度是13位数,有50E的算力投入,才能够10分钟挖出来一个块,BCH的算力难度是12位数,有2.5E的算力投入,才能够10分钟挖出来一个块。要知道1E=1000P,1P=1000T,而现在顶级的矿机算力为50T/台,这样的矿机有100万台在挖比特币,5万台在挖BCH。而比特币的算法是2016个块调整一次难度(约14天),一条分叉链条,难度系数没有调整,要出块需要很大的算力支撑。新链条(硬分叉)可以修改降低难度,或者自动调节难度的机制,而原链条是老版本代码,总得用原来的难度继续往下挖。如果只有10%的难度投入,那么需要140天~280天时间才能够恢复正常出块,技术10%成本是巨大的,算力获得的产出奖励也变小了。如果是1%,那么难度调整的周期长达1400天~2800天。

BCH对于比特币而言是新链条(硬分叉),难度系数不变,但采用了EDA机制,进行难度调节,这是其能较快恢复出块的原因(在算力低的情况下)。而后该链条在下一次硬分叉升级的时候,继续出块,也是依赖了这个机制,目前使它成为了一条原链。

3.2 原链分叉币的开发价值 比特币的分叉历史上,“币思维”是完全占据主导位置的,而“开发思维”、“技术思维”是其次的,如上所述,更多的分叉、更多的开发路线,对于比特币的研发而言,是百花齐放,多路探索,从进化论角度,这增加了获得成功的概率。

用“技术思维”和“开发思维”去看待每一条链条,都可以进行摸索,而且有其独特的开发价值。比特币的创新是突破性质的,但是我们知道人类的突破性创新,都是厚积薄发,哪来天天有革命性的成果,无数细微的迭代累积和生态化反,最终可能产生有价值的应用场景,即使没有找到有价值的应用场景,任何技术的探索都可以成为人类知识库的储备。中本聪正是在密码学领域寻找到了新的应用场景,并将之实现,在他没有实现之前,不能说这些数学的知识储备毫无意义。币圈的各种经验主义、教条主义,与这些朴素的发展观有矛盾,都是需要批判和反思的,以求进步。

随着我们对“币思维”的总结和反思,技术中立论、知识中立论有必要重新得到认真的看待。

3.3 原链分叉币的治理策略 分叉币之间的斗争是客观存在的,类似军阀混战时期,还没有一种强而有力的“主义”,可以实现求同存异,将各种势力统战到一个目标里面。比特币社区已经是一个大型“组织”,稳定的路线和激进的路线的并行探索本不矛盾,放大到整个社会,其实比特币仍然是很“弱小”的一个APP,绝大部分人并没有实际使用比特币,作为一种社会化的实验,比特币社区的实践范围应该是面向整个社会的大社区,而不应该着眼于所谓币圈的小社区。

分叉币的纷争,很多都是币圈小社区内的乱战,给社会造成的观感是混乱,对于面向社会的大社区这个概念而言,没有太多的增益。通过对分叉币的研究,我们认为很多币的产生是基于自私,但是自私也是一种力量的来源,而且这种来源稳定且充沛,使很多事务不会流于乌托邦式的空想。换个角度说,这也是比特币发展起来的主要力量来源。基于现实的考虑仍然是第一位的,新一阶段的社区治理策略在这个基础上,可以实践一些更包容,更符合个体利益、小社区利益、大社区利益、以及整个人类社会利益的治理模式,按需使用通证,面向技术,面向价值,面向未来,打破狭隘的单一币思维,所谓原链和新链、分叉,均可以包容并发,更加开放。当然回归现实,这不是靠批判的武器来实现,而是需要通过实打实的武器的批判,来推动这一转变的发生。