• 注册
    • 查看作者
    • 《重新创造比特币》第20章:分叉之重组与分裂

      0.前言

      迄今为止,Bitcoin系统的所有技术概念都已经出场。

      本篇我们来看看系统运行过程中的一个现象,即分叉。

      Bitcoin系统的核心精神就是竞争。

      竞争的表象就是分叉。

      1.分叉

      咖啡馆,中本聪和Gilfoyle围坐在显示屏前,一行行的文字快速滚动着,就像黑客帝国里的场景。

      Bitcoin系统日志

      天书一般的日志,在中本聪和Gilfoyle看来却犹如一部大片,Bitcoin网络好似一个原始的动物战场,矿工之间进行着力量角逐,微观的混乱中蕴含着整体的秩序。

      最原始的力量竞争

      算力就是蛮力,谁的算力大,谁就获得区块奖励。

      这样的竞争毫无门槛,规则公开,任何人都可以参与,只要你愿意付出成本(电费)。

      大多数时间里,节点之间都在各自挖矿,大家相安无事。

      可是一旦网络中同时出现两个区块广播,这就会上演短兵相接的较量。系统中的所有节点都会被卷入,每个节点都要表态,选择跟随哪个区块,选择错了,自己的利益就会受损,记账网络分成两派,这就是所谓的分叉。

      好戏就这么开始了:

      目前,网络中的最新区块为五角星,这是三爷(节点3)在上一轮挖出的区块。(见下图)

      记账网络的和平时期

      新的一轮挖矿开始,小男孩和牛头人几乎同时得出随机数。

      小男挖出的新区块为三角形(绿色),牛头人挖出的新区块为菱形(蓝色)。(见下图)

      短兵相接

      这时候其它节点的难题来了,要在这俩个新区块中做出选择。

      选择的方式就是“跟随”,即,基于此区块来挖掘自己的下一轮新区块。

      网络暂时形成了两个阵营,这种状态就称之为:分叉(forks)。(见下图)

      天下大势,分久必合,合久必分。

      2.重组

      此时,系统虽然分叉,但是不影响用户使用。

      无论客户端连接到哪派,业务处理都一样。

      交易写入,两派节点都会写入到交易内存池。

      交易查询,两派节点都会返回同样的结果。(内存池+区块,两派相同)

      系统是否分叉,用户是感知不到的。

      这就好比,美国的总统竞选期间,国会依旧照常办公。

      两派的竞争的结果取决于谁呢?

      答案是取决于下一轮挖出新区块的节点。

      小红帽率挖矿出新一轮区块:红桃。(见下图)

      小红帽广播最新区块红桃

      所有节点都同步红桃。

      由于小红帽在上一轮“跟随”了小男孩的绿色三角,其它节点接受了红桃,也就意味着同时接受了绿色三角。

      这样一来,上一轮的胜者便是小男孩。

      此时,系统由分叉恢复为合一,我们将这一过程称之为:重组(Reorg)(见下图)

      重组:由分叉回归合一

      之前牛头人的蓝色菱形区块成了一个被遗弃的区块,即,孤块。

      Gilfoyle问到:“孤块的存在是否是一个缺陷?”

      中本聪反问:“你为什么会这么想?”

      Gilfoyle答:“因为这会让牛头人有一种挫败感,打击了挖矿积极性。更重要的是系统时不时就呈现出分叉状态,给人一种系统不是很稳定的感觉。”

      中本聪说:“我理解了,你是在表达,一个完美的系统不应该存在冗余。孤块就是冗余,孤块代表着竞争的失败。在我看来,你的这种理解是源自典型的精确系统世界观,即一切运行都要最高效,没有意外,没有多余损耗,一切都要可计划,可控制,可设计。”

      Gilfoyle说:“的确是这样。”

      中本聪说:“而站在复杂系统的世界观来看,孤块的存在不仅不是缺陷,反而是精髓之处。有成功有失败,这才符合大自然的进化机制。失败意味着什么?失败意味着你还不够好:You are not good。只有失败才能让节点们反思,反思才能改变,改变就是进化。在我看来,孤块不是缺陷,而是像炼钢时,铁中故意加入的杂质,无杂质不成钢。”

      “比特币本身不是一个纯粹的系统;它自带着很多绝大多数数学家和计算机科学家看做是缺陷的性质。而这些“缺陷”正是比特币强大的内因。”--CSW

      铁与钢


      牛头人经过反思,发现不只是算力不够,其它方面也在影响着挖矿:

      1.区块的验证速度要加快:新一轮挖矿的开始,开始于同步区块验证的完毕。

      2.构建区块的容量要加大:大区块等于更多手续费,强者都会构建大区块,跟随强者,构建大区块。

      3.网络传输速度要加快:挖矿的意义不是发掘区块;而是让你发掘的区块能够传递到所有其他的挖矿者那里去。所以网络的传输速度也很重要。

      经过权衡,牛头人发现,均衡的提升基础设施的建设更加划算。

      改善完区块验证和区块构建的代码,又升级了自己和邻居节点的网络。

      经过验证,牛头人惊喜的发现做对了,后面再与小男孩的短兵相接,都赢了。

      小男孩失败之后,也走上同样的道路,升级基础设施。

      能够主动改变的节点都是强者,它们彼此合作,组成了Bitcoin的神经中枢,我们称之为:小世界网络。

      小世界模型

      小世界让Bitcoin系统更加高效健壮。

      小世界网络不是垄断,而是开放。

      “到底一个市场是竞争的还是垄断的,不能简单地数那些市场上已经出现的正在经营者的竞争者的数量,而应该去看那些潜在的竞争者,看他们进入市场到底会不会遇到人为设置的行政障碍。只要存在这个障碍,那么不论市场上现有的竞争者有多少,这都是一个封闭的市场,一个垄断的市场,一个缺乏竞争的市场;如果没有这样的限制,人们可以随意进出,那不管看得见的竞争者数目是多少,它都是一个充分竞争的市场"——薛兆丰

      3.双花攻击与算力守护

      黄鼠狼想要喝咖啡,便构建了一笔交易,将自己的一条30Bitcoin的UTXO指向了老板Bob的公钥,老板Bob通过客户端查到30Bitcoin已经到账,将咖啡给了黄鼠狼。(见下图)

      黄鼠狼构建的第一笔交易数据

      黄鼠狼拿到咖啡后就开始使坏,想要白喝。

      于是又构建了一笔交易,将上一笔中已经花掉的那30Bitcoin的UTXO又一次的指向了自己的公钥地址。

      一笔UTXO被引用两次,这就是所谓的双花。(见下图)

      一笔UTXO被两笔交易引用,就是双花

      正常情况下,记账网络会根据先见为真原则,采用第一笔交易,抛弃第二笔交易。

      但是,黄鼠狼临时加大算力,挖出了一个与众不同的新区块:采用第二笔交易,抛弃第一笔交易。

      广播区块,记账网络同步完毕,双花成功!黄鼠狼一脸幸灾乐祸。

      老板Bob一看黄鼠狼的表情,觉得不对劲,再一查客户端,之前的30Bitcoin消失了。

      当前网络区块链如下(见下图)

      最新区块为黄鼠狼挖出的

      我们可以看到,黄鼠狼挖出的是最新的区块,高度为2001。

      难道Bitcoin系统如此脆弱吗?一次算力攻击,就可以双花作恶。

      当然不会,黄鼠狼还没高兴超过5分钟,记账网络忽然出现了一个高度同样为2001的竞争区块。

      此时,记账网络进入分叉状态。(见下图)

      忽然出现竞争区块

      原来这个竞争区块是小男孩挖出来的,小男孩验证黄鼠狼的区块发现里面存在双花数据,认定黄鼠狼在作恶,拒绝同步黄鼠狼的区块,而继续挖掘自己的区块,1分钟之后将挖出的区块广播到网络中。

      这时候网络中同时存在两个区块,其它节点如何选择呢?

      大多数节点,都会选择小男孩的区块,因为在区块验证环节,大家都会发现黄鼠狼的区块中有双花交易。

      少数刚刚加入的节点,会选择黄鼠狼的区块,因为新加入的节点,没有历史交易数据,无法判断黄鼠狼和小男孩谁的区块中是双花交易,所以只能依照先见即真原则,选择跟随黄鼠狼。

      黄鼠狼这时候很着急,眼看着自己的战果就要作废,立即投入更多的算力,在区块高度2002挖出了新区块。黄鼠狼心想,这下我的双花区块该站稳了吧(见下图)

      黄鼠狼挖出了最新区块

      对于新节点来说,因为无法分辨谁作恶,的确会选择同步黄鼠狼的这支作恶链。

      但是对于大多数诚实节点,大家依旧抛弃了黄鼠狼的新区块,选择继续在上面的诚实链上继续“跟随”。

      经过几轮较量,大多数诚实节点的算力之和大于黄鼠狼的算力,所以上面那条诚实链会最终超出下面那条作恶链。(见下图)

      算力大者获胜

      这时候,之前不明真相的新节点,会根据“跟随”最长链的原则,改为“跟随”上面的诚实链。

      只要黄鼠狼的算力没有超过整体的51%,作恶链就迟早会被重组,曾经挖出的区块都会变成孤块。

      黄鼠狼心想:“为了一杯咖啡,损失这么多算力,我难道是个2B吗?”

      双花攻击,只能针对攻击者自己的UTXO,对其它用户的交易记录没有影响,因为攻击者无法构建出其它用户UTXO的解锁脚本。

      即便系统由于双花攻击,暂时分叉,也不影响其它用户的正常使用。

      只会对被双花攻击老板Bob有短暂的影响。

      等到系统重组之后,诚实链战胜作恶链,老板Bob的余额查询又回恢复正常。

      诚实的节点们,一直在用自己的算力,守护着系统的公正。

      所以说,Bitcoin系统不担心短暂的算力攻击,哪怕邪恶算力超过51%,只要邪恶算力一撤,邪恶链还是会被诚实链重组。

      这就好比,殖民者一撤,国家还是会恢复主权自治。

      4.分裂

      黄鼠狼死性不改,买了很多节点,算力超过了整体的51%。

      新挖出的区块中,将区块奖励改成了5000Bitcoin。黄鼠狼心想,做一把大恶,赚个5000Bitcoin,交易卖掉,赚一笔就跑。

      系统再次分叉,这一次黄鼠狼的邪恶链持续成为最长链。

      可是,和预期不同,系统没有发生重组,系统分裂了。(见下图)

      分叉不在重组即为分裂

      这是为什么?

      因为,改变区块奖励本质上是改变了游戏规则,改变了游戏规则,就不在是公平竞争,而是将一个游戏,分裂成了两个不同游戏。

      这就好比,足球游戏分裂成了美式足球(football)和英式足球(soccer)。

      分叉可以合一则为重组,分叉不再合一则为分裂。

      所以,黄鼠狼等于是自己又发明了一个新系统:Shitcoin。

      交易所只能兑换原始的Bitcoin系统,并不认可这个新系统(Shitcoin)。

      黄鼠狼又失算了:“Bitcoin系统这么强悍吗?”

      5.白皮书

      中本聪说:“这下我可以安心的将Bitcoin交给全世界了”

      随后,中本聪以Bitcoin的0.1版本作为协议基础,写成了Bitcoin的白皮书《比特币:一个点对点的电子现金系统》(Bitcoin a peer-to-peer electronic cash system)

      并强调协议不变(set in stone):“一旦0.1版本发布,核心设计在其整个生命周期中都是一成不变的。”

      6.更改域名bitcoinsv.io

      很多年以后,黄鼠狼竟然丧心病狂的黑掉了中本聪的电脑,偷到了www.bitcoin.org域名的控制权。

      并将www.bitcoin.org指向了自己分裂出来的Shitcoin。

      中本聪只好注册新域名:www.bitcoinsv.io,并指向真正的Bitcoin。

      “唉!将会有多少无明众生被表面的虚名所蒙蔽啊!”中本聪自言自语道。

      一代过去,一代又来,大地却永远长存。

      光明与黑暗的争战将会一直持续下去。

      日光之下,根本没有新事。

       

       

       

       

      7.后记

      重组即公平竞争,规则之内的博弈。

      分裂即非公平竞争,规则之间的争斗。

       

      到此为止,本系列全部完成。

      前10篇为上半部,主要讨论系统的业务:交易

      后10篇为下半部,主要讨论如何支撑业务:P2P网络、工作量证明等

      本系列的核心价值在于,定位,即给技术概念以定位。

      很多技术概念做了简化描述,目的是让读者更容易理解其定位。

      感谢好友:简美、张韦、船长,在我写作期间的阅读陪伴,你们给了我很大的信心和动力。

      感谢BSV社群(BSV骷髅群和BSV学习群),让我接触到了Bitcoin的真知灼见。

      比特币SV(Bitcoin satoshi vision,BSV)是目前唯一一个遵循中本聪原始白皮书,遵循中本聪原始协议和设计的比特币。BSV是唯一的公共区块链,维持比特币的原始愿景,并将大规模扩容成为企业级区块链和世界新货币。

    • 0
    • 0
    • 0
    • 110
    • 单栏布局 侧栏位置: