http://www.la10duh.com

狗狗币小明学习笔记 看不懂BCH算力大战?点这里

  编者按:区块链涉及到的技术很多,从互联网底层到不明觉厉的密码学,可是往往关注币价者多而研究技术的人少。牛市的时候,大家为了炒币也会努力学习,熊市的时候,反正也没啥事,我觉得可以更加努力学习。作为一个文科生,我当然会有很多理科生看起来觉得很白痴的问题。作为一个记者,我不难找到业内懂的人用人话给我解释,▓而且他们往往不会当面嫌弃我

  这是小明学习笔记第五期,变成科普别人。之后想学习随机算法、开源历史和文化等。如果有其他有趣问题,欢迎投稿和提问

  这两天币圈最火的莫过于 BCH 算力大战。▓可是在各个群里,依然有一堆不明真相的群众在大战讨论间隙蹦出这种疑问:“所以他们到底在争什么”、“不管胜负,最后各自都会持有大量的 ABC 和 SV 吧”。在跟身边的小伙伴和各个群里科普了几次基本概念之后,我发现不行,口头科普工作量太大,决定写一篇文章。本文是基于我在采访报道 BTC 和 BCH 分叉中,跟采访对象请教的,我本身并不是学技术的,▓如果文本有任何问题欢迎大家指正

  分叉这个词主要适用于以太坊和比特币等公链网络,也可以理解成基于原来的软件版本做一些修改。说白了挖矿也得下载客户端软件,比特币矿工们挖矿其实都是用客户端在挖,用互联网的方式说有点像这个客户端在做“软件升级”

  比如,分叉有点像在谷歌创建了安卓系统之后,允许开发者对安卓系统进行一些修改,▓但不允许特别巨大的改动,比如小米和魅族都在安卓的基础上创建了自己版本系统,各自不兼容,用户只能选择运行一个系统

  (不要问我为什么用安卓举例而不用微信,因为微信根本不是开源的,不是谁都能 copy 它代码的,跟比特币的情况完全不一样。安卓已经是我能想到最多人在用的开源软件了。有朋友表示看不懂安卓的例子,接下来我会用王位的例子——更容易理解但是会更不准确。)

  比特币、以太坊和 BCH,都“官方升级”了很多次。其实以太坊曾经的 TheDAO 攻击事件,最后就是全社区公投,决定分叉,舍弃原来被黑客攻击的版本,拿回自己的钱

  比如莱特币、狗狗币等早期的很多币种,都是复制比特币代码,做了一些修改,自己发了一条链。所以这些币客观来说叫“分叉币”或者“竞争币”,比特神教教徒通常称他们为“山寨币”——言下之意就是“山寨”比特币的币

  本质上 BCH 的诞生也属于这种,但是 BCH 当初“玩得比较大”,毕竟是经历了曾经的扩容共识之后在众人意外之时诞生的:Bitcoin ABC 团队单方面分叉出 Bitcoin Cash,即 BCH,被社区称为“政变”

  由于后来吴忌寒以及比特大陆投资的矿池 ViaBTC 最先公布支持 BCH,有人认为 BCH 的诞生是吴忌寒的阴谋。但这种说法遭到 BCH 和吴忌寒的否定,而且后来比特币耶稣也公开支持 BCH,BCH 逐渐成为市值最大的分叉币

  3、社区里其他开发者不太爽,自己做一条链(夺嫡大戏):这种,其实就是第二种。区别在于,这种通常戏比较多,往往会涉及到“争名分”的夺嫡大戏——太子登基在即,二皇子跑出来说我才是下一代的王——谁赢就取决于谁获得的支持多。比如当初 BTC 分叉之前,本来社区都以为即将展开一场算力投票

  结果在投票前夕,有一个叫 Bitcoin ABC 的团队冒出来喊了一句“大楚兴,陈胜王”,自立为王,宣布独立——所以其实 BCH 不能算夺嫡,吴忌寒也一直坚称 BCH 走的一条跟 BTC 不一样的路

  (为了避免歧义,我就不解释硬分叉和软分叉了,上面说的属于硬分叉,想了解的朋友们可以看这篇文章。声明一下,这部分跟我们平时说挖矿偶尔会出现分叉有点不一样,这个分叉是临时性的,最终会归一。)

  这场算力算大战究竟是上面哪种情况。因为上述情况其实都是按版本/软件发布者的身份来分,所以算第三种。但是 CSW 的做法跟当时比特币分叉出来的 BCH 不同,这次双方都没有开“重放保护”,意味着他们现在还是一条链,只能活一边

  一般来说,当区块链主链网络进行硬分叉之后,区块链发生永久性分歧并产生两条历史交易、地址、私钥以及余额等完全对应的链。这两条链的地址和私钥生产的算法相同,交易格式也完全相同,理论上在两条链上都可被确认以及识别,所以你在其中一条链上发起的交易,就可以到另一条链上去重新广播,可能也会得到确认

  比如以太坊之前从 ETC 硬分叉到 ETH 之后,有黑客不断在交易所进行充币(ETH)、提币(ETH)操作,从而导致交易所莫名其妙流失大量 ETC,这就是“重放攻击”。(其实是没有交易所想到还有矿工在 ETC 上挖矿。)

  如果加入重放保护,就能避免这种情况,具体方式就是改一下代码,添加随机数、时间戳,或者流水号等方法都可以,在两条链间形成隔离,让一条链上的事务在另一条链上无效被识别,▓以确保两条数据共享链保持独立运行状态

  所以如果双方都不改代码,就不会分叉,那就只能按照“最长链原则”展开算力大战。“最长链原则”是比特币定下的规则,因为比特币本身就出现一些“临时性的分叉”,节点们要选择在哪条链上接着挖下去就是根据“最长链原则”——这个翻译其实有点问题,“最长链” 准确地说是 “算力最大、累计难度大的链”。江卓尔的他的文章里就写道,例如节点会接受2个难度10的块,而抛弃掉3个难度5的块,因为10+10=2015=5+5+5。不过一般算力越大,出块也会更快,因为难度调整需要一定时间

  这就是现在算力大战的方式:ABC 和 BSV 利用已有算力,各自选择不同的客户端挖矿,挖一条更长链

  理论上中立/理性的节点按规则,将接受更长的链,因为这条链按规则会存活下来——问题就是现在这两边已经不太按规则或者理性在玩了

  目前,即便 BSV 算力暂时落后,只要有算力在某条链上一直挖,这条链就会一直存在。直到任何一方放弃,不再投入任何算力,这条链就不存在,他原来挖出来的币就相当于全部归零——这叫投降。当然,他也有另一种选择,就是开启重放保护或者修改算法——相当于宣布独立,最后分裂成两种币

  大战起于 ABC 在发布了 11 月的硬分叉方案之后,▓CSW 在 8 月的时候说要出一个新版本,而且他的意思是“我不想要原来的版本,但是也分裂,不想独立,就是想取 ABC 而代之”。最后结果究竟会不会有两种币,就看双方怎么想了

  当然,其实算力大战还有一种更“粗暴”的方式,就是利用自己的算力优势,直接用算力堵死对方的链,让无法交易。其实就是 51% 算力攻击,具体能达成的效果江卓尔也说了

  1、在Tx1(交易1)确认后,撤销掉Tx1,让另一个冲突的Tx2(交易2)生效。2、用自己挖的块(红色的块),孤立掉其它矿工挖的块(蓝色的块),让其它矿工损失挖矿产出

  在51%算力攻击的基础上,可以进行 “51%空块攻击”:攻击者只挖空块(不包括任何交易的块),并不接受(孤立掉)任何其它矿工挖的,正常打包交易的块,让这条链瘫痪掉,任何人都无法正常交易。并且,由于矿工在这条链上挖到的块都被孤立掉,没有挖矿收入,因此也会逐渐停止挖矿,最后这条链就死了

  不过双方都没有用这种方式,也许是因为经济原因也许是觉得这个事情“不正义”,但真实原因只有双方知道了

  如果没有人投降或者单方面独立,理论上来说交易所会一直停止提币或者充值。现在是一个中间状态,不知道哪条链会赢,还没有新的币产生。交易所没法上现货的交易对,最多能上期货

  可是,一旦真的分裂成两个币,分裂出来这个币的命运如何,交易所的选择就非常重要了。假设 BSV 这个币诞生出来一个币种,但是没有交易所上这种币,没法交易也没有场内价格,没有人会愿意挖这种币,因为挖也没有意义。说白了,矿工愿意挖 BCH 本质上是因为赚钱,所以价格往往跟算力是成比例的

  可是,只支持单方面的交易所可能很少见的。为了用户利益,大概率交易所都是中立的,如果有两个币,我会同步支持发放给用户,然后慢慢上交易对。比如币安的公告就是典型中立

  方案1:BCH硬分叉并未有新的分叉币产生,币安将恢复交易,具体恢复交易时间另行公告

  方案2:BCH硬分叉并产生新的分叉币,币安将根据快照1:1分发 BCHABC和BCHSV,分发完成后交易时间另行公告

  我是Odaily星球日报编辑卢晓明,探索真实区块链,爆料、交流请加lohiuming,烦请备注姓名、单位、职务和事由

  之前第一期学习的是虚拟机(《小明学习笔记 一文看懂区块链跨链机制》),第二期是跨链(《小明学习笔记 一文看懂区块链虚拟机》),第三期《小明学习笔记 一文看懂互联网TCP/IP协议》,第四期是《小明学习笔记 一文看懂可验证随机函数VRF》



相关推荐:



郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。