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

作者:何岩,由 recreating.org发行。

0.前言 #

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

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

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

竞争的表象就是分叉。

1.分叉 #

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

Bitcoin系统日志

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被两笔交易引用,就是双花

一笔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(BSV)。

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

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

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

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

7.后记 #

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

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

到此为止,本书全部完成。

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

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

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

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

本书写的是Bitcoin的生存(内环转动),下一本书将要写Bitcoin的发展(外环涌现),包括:Metanet、SPV、Token、Application等,书名为:重新创造元网(Recreating Metanet)敬请期待。

相关链接 #

重新创造比特币:前言

Part One : 交易
重新创造比特币1:从一个简单的web交易系统开始
重新创造比特币2:第一个版本上线啦
重新创造比特币3:舍弃账户模型
重新创造比特币4:数字签名
重新创造比特币5:公钥和私钥
重新创造比特币6:第二个版本上线啦
重新创造比特币7:UTXO
重新创造比特币8:基于UTXO的系统重构
重新创造比特币9:万物皆交易
重新创造比特币10:交易脚本

Part Two : 群系统
重新创造比特币11:群系统(上)
重新创造比特币12:群系统(下)
重新创造比特币13:P2P网络
重新创造比特币14:交易的同步
重新创造比特币15:账本的同步
重新创造比特币16:Block Chain
重新创造比特币17:网络的弹性
重新创造比特币18:工作量证明(上)
重新创造比特币19:工作量证明(下)
重新创造比特币20:分叉之重组与分裂

书面设计矢量图_36.png

英文版Amazon.com在售 : Recreating Bitcoin

BSV打赏:
1Djc4TdVBi8urzmSXKHwg8cpEAYKcRQxgY

©2019 - Recreating.org all rights reserved

 
3
Kudos
 
3
Kudos

Now read this

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

作者:何岩,由 recreating.org发行。 0.前言: # 对于伟大的造物,重新创造就是一种膜拜 欢迎来到Bitcoin的世界!!! 1.缘起 # 1999年,中途镇,咖啡馆,上午10点,中本聪准时出现在靠窗子的位置。 中本聪喜欢这个位置,不是因为窗外的风景,而是因为窗边的电源插口。 中本聪是个程序员,最近休假,每天都来写代码,对于他来说,完美的日子不过如此。 coding at cafe 世界新生伊始,许多事物还没有名字,提到的时候尚需用手指指点点。... Continue →