比特币现金 BCH 算力战,谁在进攻,谁在防守?

aaron67 · 2018年11月13日 · 57 次阅读
本帖已被设为精华帖!

本文转自知乎用户太阳谷写的文章 | 原文链接


这篇文章继续上次的讨论。如果您还没看过上一篇,请看《聊聊 11月15号的 BCH 算力战》

最近社交媒体主流声音基本上是批评csw挑起算力战,攻击abc版本的BCH。这里面一定是有什么地方搞错了。csw派明确表态,不会推出带重放保护或不同挖矿算法的链,也就是是绝对不会搞一个新币。目前大陆派并未做类似表态。先简单说结论,csw派在防守比特币的阵地,是abc派以为自己畅行无阻随便瞎改比特币底层协议,csw派为拦截这种更改而宣战。

目前,sv(csw派)和abc(大陆派)两边的新版本都要升级做一些改动,而对于升级以后哪个才是BCH的新版本的问题,

  • csw派:“尽量接近白皮书和Bitcoin v0.1的协议,要做peer to peer cash”
  • 大陆派:“http://bitcoincash.org 网站说了算.”

大陆派荒谬如此,无力吐槽。今天这篇文章,希望能回顾点扩容纷争“新历史”,再看一个具体的技术问题,从这两个角度来更多理解目前的分歧。

一场没打起来的算力战

2017年5月底,大陆派带领着中国矿工在纽约签订了“丧权辱国”的纽约共识,计划在比特币上实行segwit2x方案,妥协segwit和2M扩容。这计划后来毫无意外地只执行了前一半,相信大家都熟悉这些,不啰嗦了。

NYA签订以后,csw在荷兰Arnhem会议上跳出来,本来没有安排他演讲,他代替了nchain的同事来演讲,提出要筹措算力,建立一个nonSegwit来抵抗隔离见证的使用。现在流出了更多的记录,我们知道在这之前,5月底他就在中国矿工的qq群里说过很多,希望能够有一些合作,在不妥协使用segwit的情况下扩容。然而csw没有得到中国矿工们的正面回应。

这事之后,六月底七月初,大陆派推出了abc版的代码,带着重放保护和自降难度的机制,在8月1号分叉出来一条和BTC相互独立的链,就是现在的BCH。因为这事,大陆派也被批评没有遵守纽约共识,BCH被骂是比特大陆的公司币。

更早以前,比特大陆曾明确表示,不喜欢segwit,只是为了扩容比特币才妥协。可去年8月这原本可以一拼的算力战,矿工不战而退,可以说是故意另分出一条无法进行算力战的BCH。因为有重放保护,BCH相当于一种新币。csw无奈,也只好接受了BCH,毕竟这是目前唯一没有被segwit污染的链,BCH也得到了一些算力的支持,形势不理想也不能再做什么了。同时他也指出,BCH的第一目标是干掉BTC,自降难度的机制要在干掉btc后取消。而大陆派的吴忌寒和江卓尔先生一直是说,BCH和btc是美国和英国的关系,BCH应当专心自己发展。现在想想大陆派是前后一致的,他们从来就没有一个世界级加密币的梦想,百币争鸣的局面是最符合他们的短期利益的。

Coingeek的兴起

csw派的coingeek从今年第一季度开始,大量采购矿机,在全世界各地建矿场,还搞到了一个真正的矿场squire矿业 真金白银开始投入矿业。coingeek的老板calvin ayre是csw的挚友,深知一个世界级加密币的意义。他又是大名鼎鼎的博狗的老板,家底深不可测。短短数月,coingeek就从零开始,成为了一个集矿机生产,矿场,矿池与一身的矿业公司。如今,他们准备好了,大陆派也开始瞎改底层协议了(其实还远没有segwit的修改那么过分),此时不来算力战更待何时!

其中一个分歧点DSV

目前算力战的其中一个分歧点是dsv,一个叫做op_datasigverify的操作码,是abc新开发加进去的,打算在11月15号以后可用。之前的文章简单介绍过,操作码是比特币的脚本语言的组成部分,无论是普通转账还是其他的复杂功能(比如合约,token)都是靠操作码完成的。比特币基础的操作码中有很多都被Core禁用掉了,所以bch分叉出来以后,在分批解禁这些操作码,我们也开始知道比特币上原来是可以做许多转账以外复杂的东西的。操作码是中本聪照着forth语言设计的,本身是非常成熟完备的设计。

大陆派加入这个新的操作码简称dsv,主要目的是能够让BCH的脚本能对链外的一些内容进行验证,比如BCH自己的价格,足球比赛结果之类。这样能带来一些新的用法,比如赌球。

而这个并不是一个新功能。比特币的脚本原本就能做到,只是需要脚本足够长。用通俗易懂的例子来说,如果你有加法器,你就能做乘法,反复加就行了。如果你缺一个大数加法器,完全可以自己做一个,用普通的加法器和乘法器分别处理高低位就行。比特币脚本系统的一个特点是没有循环,我要把一段代码循环3遍,我还是可以做,只要把代码复制粘贴3遍就行。如果我不知道这个代码应该循环几次,要变迭代边判断,就把判断加入这个代码段,搞定了就提前出结果,复制粘贴1000遍,如果1000遍,还没出结果也就自动结束了。所以你看,如果比特币不设限,我可以用比特币系统编写相当复杂的运算,就是代码有点长,恐怕需要一个“比特币代码自动生成器”也就是一个高级语言。而且你不用担心这个程序会陷入死循环,卡死了整个系统的运作。

那么,用这样的基础脚本能不能实现dsv的效果呢,能,也不能,其实只是需要大约1m的代码量,而不是一个dsv操作码。但是,目前版本对一个tx里的操作码的数量有限制。要去掉这个限制才行。sv这次的升级就会去掉这个现在,abc一边继续保持这个限制。

那么,那种好呢?是用基础操作码写1m,还是用新操作码写几个字节?两者对于矿池,解析这个脚本的计算机来说,是一样的,消耗一样多的时间和运算资源。但是,前者手续费会明显更多。比特币的操作码里,只有验证签名是特别高消耗的,其他的基础操作消耗的计算资源都差不多。如果用sv的思路,写很长的基础操作码,矿池的判断就很简单,只需要看一个tx的长度,来判断手续费值不值得赚。就是现在的样子,交易就是1sat/byte按体积付费。最多是把验签名的数量单拎出来计费,这就足够了。验证签名是非常基础的操作每个交易一定都有,所以不去拆解成很多基础操作码的组合。我相信以后也会发展出专用的硬件加速卡,来优化这个签名验证的操作。

abc的新操作码直接破坏了规则,同样的运算量,只付了很少的手续费,因为他短。这样,如果我要写一个功能,和dsv差不多复杂,我要写1m,我要付的矿工费很多,这对应用的开发者不公平,等于是底层协议开发者abc在策划引导应用的开发者,整个生态发展都要看abc的脸色,他给谁上打折操作码,谁就能发展。另一方面,如果照着这个势头发展,有很多这样的新操作码,各自消耗不同的运算资源,那么BCH就不能再现在这样按体积收费,而要像ETH一样加入gas的设计来调控。

所以,sv的做法更逻辑,先放开限制,让生态发展。像做链上赌球的,用1m的代码量来实现,对矿池的手续费也公平。如果将来dsv的使用非常频繁,矿池也都乐意用一个新的短的操作码来代替这个1m的冗长代码,再加不迟。现在abc的做法,不放开单个tx里操作码数量的限制,让别人开发复杂功能没地方写,然后计划经济地供给新操作码来实现新功能,这观调控生态的做法,是非常非常愚蠢的。

用算力战的方式防守

原始设计的比特币,这是csw的阵地,现在他要用算力来防守。目前公布的信息来看,csw派的矿池会直接将dsv操作码判定为无效。比特币系统里,无效交易的钱会自动变成手续费,给挖出这个块的矿工。如果有人执意使用,自己的币在abc这边正常交易了,在sv那边是自动捐了。再加上17号有压力测试,sv一边是128m上限,能挖出比abc更多的手续费。支持sv的算力赢了能赢更多,比支持abc赢了拿更多币。sv的解禁给生态更多自由,在将来生态发展起来以后也给矿工更多手续费。比特币的设计,就是这么偏袒扩容,偏袒减少限制,偏袒不改变底层协议。

最后再次提醒,算力战期间拿好私钥,专心观战,不要收发币。

共收到 0 条回复
aaron67 将本帖设为了精华贴 11月13日 15:14
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册