代码编织梦想

我看很多朋友经常混淆各种「分叉」,以及 ETH PoW 为什么从分叉角度是不太正统的。今天想科普个小概念。

区块链,顾名思义,就是很多个区块串成的链条。新的区块,永不停歇地接到老的区块之后。如果说,咱们现实世界以秒为单位计算时间,区块链上的世界,就以区块为最小单位计算时间。

世界上的分叉有两种:

1、因网络不同步而产生的分叉。

2、因版本有分歧而产生的分叉。

先说第一种,因为网络问题而产生的分叉。这是一个很常见的现象,每天都在发生。举个例子,当两个矿工几乎同时解开难题,打包出新的区块,那到底谁的块,是有资格接到老区块之后呢?分叉就自然而然产生了。

通常来说,矿工们会认为第一个算出来的是合法区块。但是,就怕两个矿工几乎同时算出来,比如相差几毫秒,再算上网络中广播的延迟。那么自然而然,就变成了两个集团。有人先收到了 A 区块,有人先收到了 B 区块。

交易所要求充值代币时,要等到若干个区块才给上账的原因。

那么,如图所示,最长的链就变成了主链,网络分叉的风波也就过去了。

赢家变成了正统主链

那么再说说第二种,什么是因版本有分歧而产生的分叉。

理论上,ETH 分叉过很多很多很多很多次,大多数都是因为系统的版本升级。凡是因为版本升级而产生的分叉,最长链原则都【不】适用。最长链原则只适用于解决网络同步问题。

这里会进一步分为硬分叉和软分叉。

由于升级而产生的硬分叉,如果全网都同意的话,不会诞生出新的分叉链。它其实是新链对旧链的完全取代。代表案例是以太坊的「伦敦升级」,美其名曰升级,其实是伦敦分叉。伦敦升级带来了 EIP-1559(手续费燃烧),没有产生新的链。这就好比,清基本继承明的版图,民国又继承了清的版图。

ETC 分叉,ETC 和 ETH 两条链彻底分家。前者是没有因黑客而回滚的版本,后者则是有的版本。两者版本有分歧,互不认可。这类似于朝鲜和韩国,过去曾是一个国家,但如今已经完全变成两个国家,互不认可。

安全性。如图所示,如果你认可隔离见证,那么你可以升级,如果你不认可,也可以不升级。不同版本客户端虽有分歧,但仍能一起挖矿。

开发者的智慧。

做软件开发的朋友可能深有体会,想上新特性,又想让老版本继续用,是一件多么困难的事。这是带着脚镣跳舞,想要设计两全其美方案非常困难。但是比特币做到了,用了很多政治权衡和开发智慧,每一次软分叉设计都很精妙,让人赞叹。

原因是,比特币是一个「财政政策」绝对稳定的公链。这种感觉是给人非常安心的,比特币在稳定方面追求极致。再过 10 年甚至 100 年,比特币和今天不会有什么大区别,就像真正的黄金。未来 100 年,美元可能会消失,但黄金不会。

而以太坊这边,V 神还活着,并且以太坊不追求极致的安全,而追求突破不可能三角,因此每次都在冒着风险做硬分叉升级。要知道,硬分叉容易造成社区的分裂。昔日的 ETC,今日的 ETH PoW。

按照以前的经验,如图所示,PoS Merge 本应该是一次和之前类似的硬分叉升级,本不会诞生新的链,直接继承原来的版本。同时,之前也从来没人问过 USDT 和 USDC 的归属。

真实的状况,一个向左,一个向右,没人直行

所以,实际情况是:ETH PoS 和 ETH PoW 其实都是硬分叉产生的新链,只不过恰好在同一高度罢了,而真正的 ETH PoW 原链则会因为难度炸弹而消亡。

所以 ETH PoW 在正统性方面也是较弱的。换句话说,如果它今天就分叉,不和 PoS Merge 选择同一高度,也是完全可以的。那它为什么非要选择和 PoS ETH 同一高度分叉呢?答案司马昭之心,路人皆知。

有人可能会问,Todd 你把这些东西厘这么清干什么呢?我是觉得其实每一条链都是一个国家。你生活一个国家,务必要搞清它的正统性和制度。既然忝用 0x 开头,作为 ETH 世界的公民,自然是要刨根问底的。

共识,决定一个链的天花板高低,失去了正统性,也就失去了很多的共识。