重新创造比特币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篇为下半部,主要讨论如何更好的支撑业务:群系统。

交易包涵的技术:非对称加密、公钥私钥、交易签名、UTXO、交易脚本等。

群系统包涵的技术:P2P网络、交易内存池、Block Chain、POW、分叉等。

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

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

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



BSV打赏地址

BSV打赏地址:1BudFu186jzdP9CBJTTPGsdbSJinbzzCyB


相关文章:

重新创造比特币1:从一个简单的web交易系统开始

重新创造比特币2:第一个版本上线啦

重新创造比特币3:舍弃账户模型,让交易更自由

重新创造比特币4:数字签名

重新创造比特币5:公钥和私钥

重新创造比特币6:第二个版本上线啦

重新创造比特币7:UTXO

重新创造比特币8:基于UTXO的系统重构

重新创造比特币9:万物皆交易

重新创造比特币10:交易脚本

重新创造比特币11:群系统(上)

重新创造比特币12:群系统(下)

重新创造比特币13:P2P网络

重新创造比特币14:交易的同步

重新创造比特币15:账本的同步

重新创造比特币16:Block Chain

重新创造比特币17:网络的弹性

重新创造比特币18:工作量证明(上)

重新创造比特币19:工作量证明(下)

重新创造比特币20:分叉之重组与分裂

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

推荐阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 5,921评论 0 4
  • 原文地址 https://mbinary.coding.me/introduction-to-bitcoin.ht...
    mbinary阅读 1,559评论 0 3
  • 这只让人绝望的狗名为辛巴,是一只全身长着长白毛的狗。要问为什么另狗绝望,我只能说十条老二都比不过这一只辛巴。 当辛...
    艾瑞的sisiter阅读 20评论 0 0
  • 在水浒传中,描述了很多不同的,类似于今天警察职业的公差。其中最著名的是董超,薛霸这两个小子。这两个小子,一共出现过...
    2ce89d4b6d65阅读 1,020评论 0 17
  • 信息随机性和不确定性充斥在决策环境当中,如何利用数据提高决策的成功概率,已经成为现代人的一个命题。 虽然,我们已经...
    豆泥A阅读 106评论 0 0