从ABC与BSV之争看,最长链法则失效了吗?

互联网 2019-01-18 10:03:22

最近这次ABC和BSV算力之战中,有很大的一个看点,就是看谁先出到更多的区块。

这背后的原理,其实是比特币共识机制里的最长链法则,通俗的理解就是:当出现分叉时,谁出的区块多,就以谁的链为准。

白皮书里的原话是这样的:

Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains.

工作量证明本质上是一CPU一票,判断谁胜出要看哪条链最长,哪条长就说明那条链上矿工的运算量大。如果诚实的计算节点控制多数的运算能力,那么诚实的区块链的增长就会是最快的,并超过其他的竞争者。

这就是著名的“一CPU一票”与“最长链法则”的原文,可以说“一CPU一票”与“最长链的法则”一起,构成了整个比特币共识的核心。

从比特币白皮书上可以看出,其实最长链法则在技术上更加准确的定义是:看哪条链上积累更多的工作量。

但是大部分吃瓜群众是不知道如何比较工作量的,所以最直观的比较方法就是看谁出的区块多,谁出的区块多谁就拥有最长链,而且两者的结果在一般情况下是相同的。

timg

但是,好像也有不相同的时候。比如,回到这场真实的战斗中,在ABC与BSV的算力大战中,在最重要的前几天,ABC方一度领先BSV方60多个区块。一般来说,领先几个区块后,落后方(尤其是在算力本身就落后的情况下),要反超的可能性微乎其微。

关于这一点,白皮书上也有描述:

假定一个赌徒拥有无限的透支信用,然后开始进行潜在次数为无穷的赌博,试图填补上自己的亏空。那么我们可以计算他填补上亏空的概率,也就是该攻击者赶上诚实链条,如下所示:

pq

假定p&q,那么攻击成功的概率就因为区块数的增长而呈现指数化下降。由于概率是攻击者的敌人,如果他不能幸运且快速地获得成功,那么他获得成功的机会随着时间的流逝就变得愈发渺茫。

学过等比数列都知道,一个小于1的数的几何次幂是会越来越小的,这也是为什么一般说比特币6个确认数就够了的原因,因为攻击链要反超成为最长链的概率已经极低了。

但是,前两天看新闻,突然发现BSV方出的区块数好像又反超了ABC方(虽然反超的并不多),并且最新的战况是双方基本保持同步状态,这又是怎么回事呢?不是说好落后6个区块就很难赶上了吗?怎么落后60多个还能绝地大反击呢?所有这些疑问着实让我们吃瓜群众有点摸不着头脑。

其实,如果安全按照比特币白皮书所界定的情况下,是很难出现这种长达几十个区块差异的大范围分叉的。因为它是有前提的,它的前提是默认所有竞争链处于相同的竞争规则下。

应该要这么理解:最长链法则是对同一条链而言,如果在同一条链上仅仅是因为出块速度或者网络传播速度的不同形成的分叉,这个时候才由最长链法则做决定。

如果大家在同一个规则之下,不管你出现多少条竞争链,最终系统只会认定最长的那条工作链,越往后,落后的一方想要追上的概率越小,最长链法则发挥作用,保证共识的推进,正如比特币白皮书中所说。

但是像ABC和BSV,两者已经形成了两条完全不同的两条链,那么在两条不同的链之间,出块数、区块高度的比较都是没有什么实际意义的。因为在DAA难度调整机制下,反正最终都会回到10分钟一个块。

你也可以这么理解,就好像现在BCH已经领先BTC将近7千个块了,但是也不能说BCH才是真正的BTC。

可是BSV一直叫嚷着要碾压ABC,一直说BSV才是真正的BCH啊,那要如何判断ABC和BSV是同一条链的两个不同分叉,还是已经分裂成两条不同的链了呢?有没有什么具体的标准?

我觉得很简单,就看你们还是不是处在完全相同的规则下。

如果两者的规则完全相同,那你们就是同一条链之间的竞争;

如果规则哪怕有一点点的不同,那你们就已经事实上分裂成为两条链了。

对于已经形成两条链的情况来说,出块数和区块高度就不再是最有效的判断标准,甚至就连算力和最大工作量也不是最关键的因素。

当然了,算力仍然决定着你会不会被51%攻击,仍然决定着你能不能存活下来。不过,如果你在算力上实在竞争不过,又想存活下来的时候,你也可以改规则改算法嘛,反正你已经是另外一条链了。

如果是对于这种分裂成两条不同的链而言,算力战就只能算是其中的一个影响因素了,而不是最终的决定因素。最终决定哪条链能存活下来,哪条链能活得更好,最终决定谁才是真正的BCH,要依靠更广泛社会意义上的共识判断。

所以最后我的结论是,最长的法则依然有效,但仅对规则完全相同的同一条链内部而言;对不同规则的链之间,不适用。

相关资讯Relevent