0.前言
迄今为止,Bitcoin系统的所有技术概念都已经出场。
本篇我们来看看系统运行过程中的一个现象,即分叉。
Bitcoin系统的核心精神就是竞争。
竞争的表象就是分叉。
1.分叉
咖啡馆,中本聪和Gilfoyle围坐在显示屏前,一行行的文字快速滚动着,就像黑客帝国里的场景。
Bitcoin系统日志
天书一般的日志,在中本聪和Gilfoyle看来却犹如一部大片,Bitcoin网络好似一个原始的动物战场,矿工之间进行着力量角逐,微观的混乱中蕴含着整体的秩序。
最原始的力量竞争
算力就是蛮力,谁的算力大,谁就获得区块奖励。
这样的竞争毫无门槛,规则公开,任何人都可以参与,只要你愿意付出成本(电费)。
大多数时间里,节点之间都在各自挖矿,大家相安无事。
可是一旦网络中同时出现两个区块广播,这就会上演短兵相接的较量。系统中的所有节点都会被卷入,每个节点都要表态,选择跟随哪个区块,选择错了,自己的利益就会受损,记账网络分成两派,这就是所谓的分叉。
好戏就这么开始了:
目前,网络中的最新区块为五角星,这是三爷(节点3)在上一轮挖出的区块。(见下图)
记账网络的和平时期
新的一轮挖矿开始,小男孩和牛头人几乎同时得出随机数。
小男挖出的新区块为三角形(绿色),牛头人挖出的新区块为菱形(蓝色)。(见下图)
短兵相接
这时候其它节点的难题来了,要在这俩个新区块中做出选择。
选择的方式就是“跟随”,即,基于此区块来挖掘自己的下一轮新区块。
网络暂时形成了两个阵营,这种状态就称之为:分叉(forks)。(见下图)
天下大势,分久必合,合久必分。
2.重组
此时,系统虽然分叉,但是不影响用户使用。
无论客户端连接到哪派,业务处理都一样。
交易写入,两派节点都会写入到交易内存池。
交易查询,两派节点都会返回同样的结果。(内存池+区块,两派相同)
系统是否分叉,用户是感知不到的。
这就好比,美国的总统竞选期间,国会依旧照常办公。
两派的竞争的结果取决于谁呢?
答案是取决于下一轮挖出新区块的节点。
小红帽率先挖矿出新一轮区块:红桃。(见下图)
小红帽广播最新区块红桃
所有节点都同步红桃。
由于小红帽在上一轮“跟随”了小男孩的绿色三角,其它节点接受了红桃,也就意味着同时接受了绿色三角。
这样一来,上一轮的胜者便是小男孩。
此时,系统由分叉恢复为合一,我们将这一过程称之为:重组(Reorg)(见下图)
重组:由分叉回归合一
之前牛头人的蓝色菱形区块成了一个被遗弃的区块,即,孤块。
Gilfoyle问到:“孤块的存在是否是一个缺陷?”
中本聪反问:“你为什么会这么想?”
Gilfoyle答:“因为这会让牛头人有一种挫败感,打击了挖矿积极性。更重要的是系统时不时就呈现出分叉状态,给人一种系统不是很稳定的感觉。”
中本聪说:“我理解了,你是在表达,一个完美的系统不应该存在冗余。孤块就是冗余,孤块代表着竞争的失败。在我看来,你的这种理解是源自典型的精确系统世界观,即一切运行都要最高效,没有意外,没有多余损耗,一切都要可计划,可控制,可设计。”
Gilfoyle说:“的确是这样。”
中本聪说:“而站在复杂系统的世界观来看,孤块的存在不仅不是缺陷,反而是精髓之处。有成功有失败,这才符合大自然的进化机制。失败意味着什么?失败意味着你还不够好:You are not good。只有失败才能让节点们反思,反思才能改变,改变就是进化。在我看来,孤块不是缺陷,而是像炼钢时,铁中故意加入的杂质,无杂质不成钢。”
“比特币本身不是一个纯粹的系统;它自带着很多绝大多数数学家和计算机科学家看做是缺陷的性质。而这些“缺陷”正是比特币强大的内因。” - Craig Wright
铁与钢
牛头人经过反思,发现不只是算力不够,其它方面也在影响着挖矿:
1.区块的验证速度要加快:新一轮挖矿的开始,开始于同步区块验证的完毕。
2.构建区块的容量要加大:大区块等于更多手续费,强者都会构建大区块,跟随强者,构建大区块。
3.网络传输速度要加快:挖矿的意义不是发掘区块;而是让你发掘的区块能够传递到所有其他的挖矿者那里去。所以网络的传输速度也很重要。
经过权衡,牛头人发现,均衡的提升基础设施的建设更加划算。
改善完区块验证和区块构建的代码,又升级了自己和邻居节点的网络。
经过验证,牛头人惊喜的发现做对了,后面再与小男孩的短兵相接,都赢了。
小男孩失败之后,也走上同样的道路,升级基础设施。
能够主动改变的节点都是强者,强者和强者链接会越来越紧密,组成了Bitcoin的神经中枢,我们称之为:小世界网络。
小世界模型
小世界让Bitcoin系统更加高效健壮。
小世界网络不是垄断,而是开放。
“到底一个市场是竞争的还是垄断的,不能简单地数那些市场上已经出现的正在经营者的竞争者的数量,而应该去看那些潜在的竞争者,看他们进入市场到底会不会遇到人为设置的行政障碍。只要存在这个障碍,那么不论市场上现有的竞争者有多少,这都是一个封闭的市场,一个垄断的市场,一个缺乏竞争的市场;如果没有这样的限制,人们可以随意进出,那不管看得见的竞争者数目是多少,它都是一个充分竞争的市场” — 薛兆丰
3.双花攻击与算力守护
黄鼠狼想要喝咖啡,便构建了一笔交易,将自己的一条30Bitcoin的UTXO指向了老板Bob的公钥,老板Bob通过客户端查到30Bitcoin已经到账,将咖啡给了黄鼠狼。(见下图)
黄鼠狼构建的第一笔交易数据
黄鼠狼拿到咖啡后就开始使坏,想要白喝。
于是又构建了一笔交易,将上一笔中已经花掉的那30Bitcoin的UTXO又一次的指向了自己的公钥地址。
一笔UTXO被重复引用两次,这就是所谓的双花。(见下图)
一笔UTXO被两笔交易引用,就是双花
正常情况下,记账网络会根据先见为真原则,采用第一笔交易,抛弃第二笔交易。
但是,黄鼠狼临时加大算力,挖出了一个与众不同的新区块:采用第二笔交易,抛弃第一笔交易。
广播区块,记账网络同步完毕,双花成功!黄鼠狼一脸幸灾乐祸。
老板Bob一看黄鼠狼的表情,觉得不对劲,再一查客户端,之前的30Bitcoin消失了。
当前网络区块链如下(见下图)
最新区块为黄鼠狼挖出的
我们可以看到,黄鼠狼挖出的是最新的区块,高度为2001。
难道Bitcoin系统如此脆弱吗?一次算力攻击,就可以双花作恶。
当然不会,黄鼠狼还没高兴超过2分钟,记账网络忽然出现了一个高度同样为2001的竞争区块。
此时,记账网络进入分叉状态。(见下图)
忽然出现竞争区块
原来这个竞争区块是小男孩挖出来的,小男孩验证黄鼠狼的区块发现里面存在双花数据,认定黄鼠狼在作恶,拒绝同步黄鼠狼的区块,而继续挖掘自己的区块,1分钟之后将挖出的区块广播到网络中。
这时候网络中同时存在两个区块,其它节点如何选择呢?
大多数节点,都会选择小男孩的区块,因为在区块验证环节,大家都会发现黄鼠狼的区块中有双花交易。
少数刚刚加入的节点,会选择黄鼠狼的区块,因为新加入的节点,没有历史交易数据,无法判断黄鼠狼和小男孩谁的区块中是双花交易,所以只能依照先见即真原则,选择跟随黄鼠狼。
黄鼠狼这时候很着急,眼看着自己的战果就要作废,立即投入更多的算力,在区块高度2002挖出了新区块。黄鼠狼心想,这下我的双花区块该站稳了吧(见下图)
黄鼠狼挖出了最新区块
对于新节点来说,因为无法分辨谁作恶,的确会选择同步黄鼠狼的这支作恶链。
但是对于大多数诚实节点,大家依旧抛弃了黄鼠狼的新区块,选择继续在上面的诚实链上继续“跟随”。
经过几轮较量,大多数诚实节点的算力之和大于黄鼠狼的算力,所以上面那条诚实链会最终超出下面那条作恶链。(见下图)
算力大者获胜
这时候,之前不明真相的新节点,会根据“跟随”最长链的原则,改为“跟随”上面的诚实链。
只要黄鼠狼的算力没有超过整体的51%,作恶链就迟早会被重组,曾经挖出的区块都会变成孤块。
黄鼠狼心想:“为了一杯咖啡,损失这么多算力,我难道是个2B吗?”
双花攻击,只能针对攻击者自己的UTXO,对其它用户的交易记录没有影响,因为攻击者无法构建出其它用户UTXO的解锁脚本。
即便系统由于双花攻击,暂时分叉,也不影响其它用户的正常使用。
只会对被双花攻击老板Bob有短暂的影响。
等到系统重组之后,诚实链战胜作恶链,老板Bob的余额又会恢复正常。
诚实的节点们,一直在用自己的算力,守护着系统的公正。
所以说,Bitcoin系统不担心短暂的算力攻击,哪怕邪恶算力超过51%,只要邪恶算力一撤,邪恶链还是会被诚实链重组。
这就好比,独裁者一倒,国家还是会恢复民主自治。
4.分裂
黄鼠狼死性不改,买了很多节点,算力超过了整体的51%。
新挖出的区块中,将区块奖励改成了5000Bitcoin。黄鼠狼心想,做一把大恶,赚个5000Bitcoin,交易卖掉,赚一笔就跑。
系统再次分叉,这一次黄鼠狼的邪恶链持续成为最长链。
可是,和预期不同,系统没有发生重组,系统分裂了。(见下图)
分叉不在重组即为分裂
这是为什么?
因为,改变区块奖励本质上是改变了游戏规则,改变了游戏规则,就不在是公平竞争,而是将一个游戏,分裂成了两个不同游戏。
这就好比,足球游戏分裂成了美式足球(football)和英式足球(soccer)。
分叉可以合一则为重组,分叉不再合一则为分裂。
所以,黄鼠狼等于是自己又发明了一个新系统:Shitcoin。
交易所只能兑换原始的Bitcoin系统,并不认可这个Shitcoin。(但是,真实世界中的交易所确装满了Shitcoin。真是一个不完美的世界。)
黄鼠狼又失算了:“Bitcoin系统这么强悍吗?”
5.白皮书
中本聪说:“这下我可以安心的将Bitcoin交给全世界了”
随后,中本聪以Bitcoin的0.1版本作为协议基础,写成了Bitcoin的白皮书《比特币:一个点对点的电子现金系统》(Bitcoin a peer-to-peer electronic cash system)
并强调协议不变(set in stone):“一旦0.1版本发布,核心设计在其整个生命周期中都是一成不变的。”
6.更改域名bitcoinsv.com
很多年以后,黄鼠狼竟然丧心病狂的黑掉了中本聪的电脑,偷到了www.bitcoin.org域名的控制权。
并将www.bitcoin.org指向了自己分裂出来的Shitcoin。
中本聪只好注册新域名:www.bitcoinsv.com,并指向真正的Bitcoin。
“唉!将会有多少无明众生被表面的虚名所蒙蔽啊!”中本聪自言自语道。
光明与黑暗的争战将会一直持续下去。
一代过去,一代又来,大地却永远长存。
日光之下,根本没有新事。
7.后记
重组即公平竞争,规则之内的博弈。
分裂即非公平竞争,规则之间的争斗。
一个人要懂得多少复杂,才可以创造出简单。
到此为止,本书全部完成。
前10篇为上半部,主要讨论系统的业务:交易
后10篇为下半部,主要讨论如何支撑业务:P2P网络、工作量证明等
本系列的核心价值在于,定位,即给技术概念以定位。
很多技术概念做了简化描述,目的是让读者更容易理解其定位。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。