有暴跌也有进展,8大突破回顾比特币的2018

对比特币来说,今年是两极分化的一年:尽管价格下跌了83%,但其依然在2018年取得了重大的进展。当投机者看到价格不断下跌的时候,他们就看不到比特币网络取得的成就了——但无论价格如何,比特币的发展仍在继续。

在过去的1年时间里,比特币的普及率更广了,机构投资者开始参与进来,代码改进也在继续,这些都证明了其美好的未来。

2019年即将到来,本文列出了比特币在2018年的“光辉岁月”。

1. 隔离见证普及率

隔离见证(SegWit)是比特币协议升级,在去年夏天正式激活。这次升级让比特币区块处理的交易数量得到了提升。

隔离见证通过让交易变得更“轻”来减少其所需要的容量,因为其不再需要包含见证信息,同时还支持闪电网络等二层技术方案。

隔离见证普及的主要障碍在于钱包和交易所必须从传统的比特币地址向与隔离见证兼容的地址转型。今年,几乎所有大型交易所和钱包商都开始接受隔离见证地址,包括Coinbase、Bitfinex、Ledger和Trezor等。隔离见证的普及率也从10%增加到了40%。

这对比特币来说是一大进展,尤其是当初隔离见证的激活还经历了很多波折。

2. 机构投资者的参与

今年,比特币ETF没有通过被认为是一大缺憾,但我们的确看到了越来越多的机构投资者开始接受比特币。富达投资、耶鲁大学、纽约证交所和Square Inc.都对这一领域有着浓厚的兴趣。

富达投资专门面向机构投资者推出了比特币和以太坊等资产的服务平台,该投资公司目前管理的资产已经达到了7.2万亿。

耶鲁成立了一支3000万美元的捐赠基金,在加密资产领域进行了战略投资(据悉,比特币占到了最大的投资比重)。

纽约证券交易所的母公司洲际交易所宣布成立一家专注数字资产的公司Bakkt。Bakkt将于2019年1月推出一款可单日进行实物交割的比特币期货产品。该公司还表示其将和星巴克、Boston Consulting Group和微软一起,为这一行业的发展提供支持。

Square Inc.研发的移动支付服务The Cash App从今年开始允许美国地区用户买卖比特币。Square的CEO Jack Dorsey同时也是推特的CEO。目前The Cash App已经登上了iOS和安卓设备下载量排行榜的第一名——这是非常重大的进展,因为投资者买卖比特币变得更加方便了。

3. 闪电网络普及率

对于大多数比特币支持者来说,闪电网络是他们首选的二层扩容方案。目前质押在该网络上的比特币价值已经超过200万美元,其节点数量也实现了从0到4400的飞跃。

4. 算力增长

今年,比特币网络算力增长了近60%,这就意味着在重要基础设施方面的投资力度越来越大,比特币网络的安全性和可预测性就会越来越高。

算力的提升意味着网络越来越健康,发动51%攻击也会越来越难。比特币网络算力的增长可能是因为挖矿巨头的入场带来了更多设备引起的。今年我们同时见证了算力和挖矿难度的新高。

5. 代码进展

Schnorr Signatures的进展以及一些重大漏洞的修复是今年比特币发展的重点。短期内Schnorr Signatures可能不会被整合到Bitcoin Core中,但这一代码进展为比特币扩容问题提供了隐私方面的解决方案,预示着数字账本隐私技术迈出了重要的一步。

这一代码进展让比特币隐私交易成为了可能,隐私是目前比特币缺失的一环。bitcoin Core开发者正在不断寻求改进该网络的方案,从未停止“折腾”。

除此之外,Core开发者还成功修复了一个遗留在bitcoin Core长达两年的代码问题,并且进行了信息公示。他们还帮助bitcoin Cash修复了漏洞。

6. 更多独立用户

地址数量通常都会用于衡量比特币的普及率,这一数字在今年增长了50%。

不过,需要注意的是,这不是衡量普及率的准确方法,因为一个用户可以持有多个地址;但这依然是目前最有效的统计方法。

即使市场处于寒冬,比特币的普及依然没有停止。“什么是比特币”在某些国家登上了2018年比特币热搜榜。

7. 激烈的竞争

2017年,我们见证了比特币历史上最具争议性的硬分叉——bitcoin Cash(BCH)分叉。分叉之后,很多人都认为BCH在价格上能够超越比特币。

而到了2018年,BCH的价格大幅下跌,网络出现了分裂。虽然人人都会有不同的看法,但许多社区参与者认为,这些分歧对网络未来的发展是正面的。

BCH并非比特币唯一的“挑战者”——而2017年ICO狂热过后,比特币的市值占比已经增加了16%,创下了新高。

8. 手续费更低

今年,比特币平均手续费从28美元减少到了0.3美元,这在很大程度上是比特币价格下跌引起的。以比特币来计算,该网络的平均交易费用下降了约97%,这对新入场的用户来说显然更加友好。

手续费降低对比特币来说是好事?或许吧。一方面,手续费对保护网络安全来说十分重要——是除区块奖励以外驱动矿工行动的因素。比特币总量达到上限之后,区块奖励就不存在了,手续费激励将成为矿工的唯一收入……保护网络安全的方式只有两种:手续费或通胀。

另一方面,去年比特币手续费暴涨到了50美元,而且交易确认需要等上好几个小时的时间,因此,比特币的速度和交易成本成为了人们诟病的对象。

为了优化用户体验和安全性,网络费用基准无疑是至关重要的一点,我们在2018年或许已经达到了一个合理的范围。

总结:前路漫漫,Hodl住

比特币的这8个进展预示着其将有一个更加光明的前路。一年后,或许我们会回忆起比特币在2018年熊市期间取得的最大“成就”之一,就是其价格低到足以让我们囤积更多。

2019年我们可以看到Bakkt实物交割的比特币期货产品;或许比特币ETF可以通过;闪电网络也将面临更迅速的增长。

抱紧手中的比特币,明年或许又是大幅波动的一年。

为什么分叉对区块链发展至关重要?

分叉是区块链体验的核心,类似于系统升级。“分叉”一条链,本质上就是要对运行区块链的软件做出改变。根据不同的情况,分叉所引发的问题也非常多,有的很快能够达成共识,有的则极具争议。

一个区块链核心开发人员团队如果有长期发展规划,则可以使用分叉来推动区块链网络升级,但有时候,有些“叛徒团队”也会在正常的发展路线之外提出并尝试分叉。但从另一方面来看,分叉也能够展示这些区块链网络的去中心化特质,毕竟如果你是一个真正的去中心化区块链,又有什么理由不让别人去分叉呢。总之,如果你想对区块链问题发表意见,并且还要在社区里形成共鸣,就需要充分了解区块链分叉的重要性。

区块链分叉的重要性

区块链分叉其实分为“硬分叉“和”软分叉“,软分叉很少会引起争议,因为它们是向后兼容区块链的前叉实现(pre-fork implementation),而且在区块链中没有新的分支创建。

当系统升级与旧版本区块链软件不兼容时,就会发生硬分叉,这意味着任何不升级到新版本的人都会被“遗忘”在陈旧的、可能毫无价值的老区块链上。不仅如此,一旦绝大多数开发人员和挖矿节点都支持对区块链进行升级,那么这个“硬分叉”过程就会发生,而且当区块链社区的多个派系相互交战并尝试强行硬分叉的时候,可能还会发生一些不寻常的事件。

区块链分叉的经典案例

由于社区内出现的各种争论,导致世界上最受欢迎的两个区块链——比特币(BTC)和以太坊(ETH)都经历了硬分叉。

在此,我们先拿以太坊举例,以太坊之所以会出现硬分叉主要是因为“The DAO”事件所致,2015 年 7 月 30 日,”V神”和以太坊基金会创建了第一个智能合约平台,并设计了 TheDAO 以太坊合约。2016 年 4 月 30 日正式部署了 The DAO 智能合约,并完成了当年世界上最大规模的众筹,达到了惊人的 1.5 亿美元!2016 年 6 月 17 日,The DAO 被黑客攻击,黑客共盗取了约 5500 万美元的以太币,导致其价格也从 20 美元暴跌到 15 美元,对以太坊社区造成了巨大的伤害。为了挽回投资人的损失,社区一部分人想要使用硬分叉将被盗窃的资金还给原来的代币持有人,但也有一部分人反对这一行动,认为作为一种货币形式,硬分叉会使以太坊代币的完整性失效,而且一旦开了硬分叉的头,后续可能会导致出现其他不良硬分叉。当然,以太坊社区最后还是决定实施硬分叉,但是在实施升级时许多不同意见的人拒绝升级它们的软件,这也让此前的以太坊区块链上留下了大量用户,而原来的那个区块链现在被称为以太坊经典(ETC)。

以太坊经典是以太坊平台分叉而成的加密货币。在分叉前,以太坊经典被直接称为以太坊。分叉以后,旧分叉被叫做以太坊经典,而新分叉则保留了原名。

好消息是,以太坊和以太坊经典在 2018 年共存的相对平和,而且这种共存似乎对社区而言也是一件好事,因为随着时间的推移,两种治理方案可以相互测试,继而可以不断优化、改进整个区块链网络。

类似的事情也出现在了 EOS 区块链上,WORBLI 是从 EOS 分叉出来的“姊妹链”,作为一个新的金融服务网络来提升整个 EOS 生态系统,其首席执行官多米尼克·托马斯(Domenic Thomas)表示:

“一些去看了项目使用了完全相同的底层区块链软件和协议,但却没有共享历史记录,也没有推出任何满足不同隐含需求、解决任何争议的产品,相反这些区块链受益于区块链的开源特性。”

由于区块链本身是开源的,也让市场上很容易出现了一些“伪分叉”区块链,他们直接拿走了其他区块链的底层协议和软件来推动自己的区块链项目。当然,并不是所有的“伪分叉“都是不好的,有些”姊妹链“可以通过”借用“别人的区块链协议提供额外创新,以 WORBLI 为例,他们声称通过启用新的姊妹链网络,可以使用 EOSIO 软件构建更好的企业级金融服务网络。

区块链分叉之间的竞争

相比于“和谐“的以太坊硬分叉,比特币的硬分叉似乎没有获得令人满意的解决。但另一方面,比特币硬分叉也为区块链治理提供了一个重要案例分析。

由于对区块大小限制的激烈争论,比特币区块链在 2017 年 8 月 1 日经历了一次重大的硬分叉。大部分开发人员和矿工把他们的节点升级到了新的且不兼容的比特币软件版本,本次分叉将比特币分成了两个分支:一个是主分支,另一个则是全新的、可行的二级分支,现在被称为比特币现金(BCH)。

与以太坊和以太坊经典分叉不同,比特币和比特币现金分叉引发的争论十分激励。一些此前非常有影响力的、并且大力推动比特币现金分叉运动的社区成员坚持认为比特币现金才是真正的比特币。到目前为止,比特币现金的市值大约占到原始比特币总市值的 8% 左右。

如今,比特币和比特币现金两个加密社区各自独立,而且也都十分活跃(在Reddit论坛上也已经分成了独立的子论坛),而从2017年中旬开始的比特币硬分叉争论——什么是真正的比特币——也一直持续到了今天。

区块链分叉的未来

无论是硬分叉还是软分叉,分叉都是区块链体验中不可分割的一部分。有时候,区块链进行分叉时社区很快就能达成共识,而且基本没有任何争论发生,也让开发过程变得轻松简单;但有时,区块链分叉会导致社区内部产生分歧。

从历史发展来看,区块链分叉的未来趋势可能会像以太坊的例子那样,通过社区讨论研究逐渐走向和谐,而不是像比特币那样充满了争议,否则很可能会引发 Bitcon Cash ABC 和 Bitcoin SV 这样的“矿战“,导致加密货币市场崩盘。随着区块链网络变得越来越有价值,好的分叉也会越来越重要。

如何进行健康的区块链分叉?

今后,如果你想让区块链分叉拥有好的结果,那么就需要社区展开真诚的讨论,并且尽可能地在组织层面处理各种分歧。

除非分歧真的到了无可调节的地步,否则由于缺乏妥协而创建两个独立的区块链应被视为最后的解决方案。 然而,当双方真的无法达成协议时,分叉这种情况就会变得不可避免,此使应该尽可能多地相互尊重和协调执行区块链分叉。在这种情况下,加密货币交易所、钱包和矿工应该在整个分叉过程中保证用户的安全,而且随着时间的推移,还要允许人们能够对他们的网络活动进行投票。如果真的能以这种方式执行区块链分叉,那么社区就不会产生较大冲突,开发人员也能以更高效的生产效率来继续推动区块链发展。

刘昌用:BCH战争中的十大误解

鉴于目前形势已经明朗,ABC版本在各方面已经明显占优,除BSV以外的开发版本都选择了兼容ABC版本。因此,文中的BCH指ABC及其兼容版本运行的那条链,而将BSV版本区块链称为BSV。

一.所有分叉都会分出两个币?错!只有共识分歧导致的分叉才有新币

“分叉”这个词有三层意思:

1)区块链产生孤块。密码货币正常记账因网络延迟等技术原因,同一高度出现了两个不同内容区块,当其中一个后面跟的区块更多时,另一个区块及跟随的短链就会被抛弃变成“孤块”,这也就是所谓“追随最长链原则”。

2)硬分叉升级。在软件升级时,如果新旧版本记的区块能够相互兼容,称为软分叉升级,不能相互兼容就称为硬分叉,就像有一次word升级后不识别word97版本一样。硬分叉升级时要求大家都更换到新版本,如果有人还用老版本,就会产生两个相互不承认的分叉链,这时“最长链原则”无效了。但老版本出的块往往没有交易所支持,区块奖励一文不值,所以用老版本的人发现没人跟随他出块,就会找原因,发现新版本就会立刻更新版本,老版本的链就消失了。

3)链、币和社区的分裂。如果两个不兼容的版本不是因为意外而并存,而是因为各有一些人支持不同版本的特征,坚决反对另一个版本的特征。那么,两个版本就一直有人支持同时运行,互相不接受包含了对方版本特征的链,所以记出来的区块链就永久分成了两个链,链上记载的币就分成了两种,社区也分裂成两个社区。

这里的第1、2种情况不会分出新币,只有第3种情况才会分出两种币。这次11月15号的分叉,本来是一个计划中的硬分叉升级,由于CSW突然要求社区放弃一直沿用的ABC版本,改用他的BSV版本,遭到一些人的拒绝和另一些人的支持,导致了共识的分裂,才演变成情况3的分裂。

简单说,只有共识发生分歧,各自支持互不兼容的版本,导致链的永久分叉,才会分裂出新币。

二.比特大陆和ABC反对扩容?错,扩容是双方共同的发展手段

最普遍的误解是说ABC和比特大陆拒绝扩容,而CSW的BSV版本主张扩容。实际上ABC和比特大陆一直主张根据市场需求不断扩大区块容量,BCH就是因为这个诞生的。ABC和比特大陆反对的是在11月15日的升级中就将区块扩大的128M,原因是:

1)目前BCH每块实际容量在200k以内,现有32M区块上限是实际容量的160倍以上,市场也处于熊市,根本没有扩容的市场需求。

2)BSV的128M扩容并不成熟,缺乏测试数据。在曼谷会议上,技术人员对nChain提问BSV版本是否对128M容量进行了测试,有没有测试数据,回答还没有。

3)近期BCH系统进行了多次压力测试,即制造巨量微小交易测试能否正常出块与传播。测试中打出了21M和32M的区块,但也造成许多节点掉线,生态中的一些小矿工为此放弃了BCH挖矿。

因此,在缺乏市场需求、未经充分测试的情况下,贸然在11月15日的升级中扩容到128M既不必要,也有很大风险。

经过曼谷会议的讨论,ABC、吴忌寒和Roger等人均表示,同意在15日升级之后开始测试128M扩容,如果测试通过可在2019年5月的升级中部署。但CSW坚持在15日上线128M的BSV,并在宣传中攻击ABC和比特大陆拒绝扩容,这很具有误导性,但的确奏效了,以至于这场内战开始时被称为新的扩容之争。

实际上,ABC和比特大陆非常看重扩容,ABC的路线图的主线就是通过扩容实现世界货币目标,此次0.18.2升级中的CTOR交易排序功能就是通过对内存池交易进行排序,提高区块在网络中的同步效率,为未来的超大区块做准备。

简单说,双方都主张扩容,ABC和比特大陆主张充分测试,保障安全的前提下扩容,CSW要求立即扩容。

三.BSV要世界货币而ABC要基础链?错,双方目标都是“世界货币+基础公链”

对于这次BCH内战的原因,普遍流行的观点认为CSW的BSV想要把BCH发展成世界货币,而ABC和比特大陆则想把它做成跑各种Dapp的基础公链。实际上,双方都想把BCH做成世界货币加基础公链。只是实现的方式不同而已。

CSW曾发表文章论证比特币在0.1版所提供的脚本就是“图灵完备”的,只是后来禁用了许多操作码,限制了脚本的功能,所以他要逐渐恢复这些操作码。这次的BSV版本就恢复了4个早期禁用的操作码,并且删除对每个脚本201个操作码的限制。

早年,比特币社区普遍认为比特币脚本不是图灵完备的,并且认为这是必要的。因为图灵完备的脚本意味着像各种计算机语言一样,可以编写各种复杂的程序,能实现更多功能,代价是容易出现诸如死循环之类的漏洞。比特币要想实现货币功能,安全稳定是第一位的。一个非图灵完备的脚本系统限制了脚本的复杂性,从而更安全。每个脚本201个操作码的限制也是这个目的。正是由于这个原因,早期开发者阻止了Vitalik在比特币上开发智能合约,才有了图灵完备的智能合约平台——以太坊。

也就是说,CSW论证比特币原本就是图灵完备的,并在BSV中恢复四个禁用操作码(OP_MUL、OP_LSHIFT、OP_RSHIFT、OP_INVERT),解除每个脚本201个操作码的限制,就是要让BCH的交易可以编写更大更复杂的脚本,从而在BCH的主链上实现智能合约。CSW也宣称他的BSV会超越以太坊。token发行是智能合约最流行的实例,nChain也曾经给出基于BCH的token发行方案,并且资助了其他两个基于BCH的token方案。这些都是在积极实现“世界货币+基础公链”的目标。

相比之下,ABC和比特大陆为BCH发展智能合约功能的方案略保守一些。本次升级的ABC 0.18.2版本增加了两个新的操作码OP_CheckDataSig和OP_CheckDataSigVerify,用于数据签名和验证,这两个操作码的功能用原有脚本中也能实现,只是新操作码实现起来更简洁。

比特大陆为BCH增加智能合约功能的方案是二层协议解决方案,它借助OP_Return操作码能够在每个交易中将少量信息写入主链的功能,搭载智能合约信息,在BCH节点之上搭载虫洞节点来读写运行智能合约。这种二层协议解决方案的好处是,一旦该协议失败,可以很容易停止或抛弃,不影响主链的安全。而CSW的智能合约则是直接在BCH主网上,通过“图灵完备”的交易脚本来实现的。

所以说,双方都想把BCH发展成世界货币,并成为能够运行智能合约的基础公链。相比之下,CSW的方案更加激进,给主链带来的风险更大。

四.虫洞会毁灭BCH:错,虫洞增加BCH价值但被CSW用来智造谣言

虫洞是双方冲突的一个焦点,这有点出乎意料,因为虫洞在8月1日的香港会议上发布时CSW在场,席间各方相处融洽,并未对虫洞提出异议。但8月中旬,在CSW发动对ABC和比特大陆的攻击之后,虫洞成了CSW及其支持者攻击的主要目标,主要逻辑有三个:

烧币会毁灭BCH。虫洞的运行代币WHC通过燃烧BCH按照1:100的比例产生。CSW认为虫洞的发展会将BCH烧光,最后只剩下了WHC,即比特大陆要以虫洞吞噬BCH。

虫洞地址上烧掉的BCH可以被取出。CSW发文声称虫洞团队用来燃烧BCH的地址1111111111111111115KMYP7R278,上面的BCH是可以被转出的。意指虫洞团队会盗取这些币。

虫洞表明比特大陆走的是基础公链路线。这不是CSW本人的论证,而是CSW的支持者的延伸,用来支持和传播上一个误解:BSV的方向是世界货币,ABC的方向是基础公链。

这个观点被CSW的支持者和很多反感比特大陆的人广泛传播,用以攻击比特大陆和ABC。这也是个重大的误解,主要原因如下:

虫洞能增加BCH内在价值。虫洞如果成功,有大量交易量,会因为燃烧生成BCH和代币流通支付BCH手续费而增加BCH的需求,从而提高BCH的内在价值。

燃烧BCH不会毁灭整个BCH系统。燃烧BCH跟丢失私钥的影响是相同的,即这些币永远找不回来了。中本聪回答过这类质疑,这导致总量减少,剩下的BCH价值会增加。不存在烧完的危险,不等烧完WHC就已经昂贵到无法使用了。

虫洞作为开放开源的二层协议对主链无危害。无论虫洞可能产生什么样的危害,作为二层协议,有共识支持就可以丢弃。作为开放开源系统,觉得燃烧有问题,完全可以修改虫洞代码部署一个不烧币的协议。

如果虫洞可以毁灭BCH,中本聪的整个设计就失败了。虫洞源于比特币上的Omni协议,usdt就是用Omni在BTC之上发行的。如果虫洞这样的二层协议可以毁掉BCH,而虫洞和密码货币都是开源开放的,那么部署大量的类虫洞协议就可以杀死比特币和各种其他币了。

虫洞地址无人能支配。虫洞地址按BCH的新地址格式是qqqqqqqqqqqqqqqqqqqqqqqqqqqqqu08dsyxz98whc。没有选择非校验位全部为q,是因为那个地址已经被其他用途占用了,虫洞团队找了一个能够使校验位的后三位为“whc”的黑洞地址。这样的地址耗尽太阳的能量也难以碰撞出私钥。CSW宣称他能证明该地址上的BCH可以被转出,但至今已经燃烧的2700多个BCH仍在那里,这也是CSW著名的嘴炮之一。

比特大陆BCH大量持仓足以回应谣言。目前,比特大陆公开的BCH持仓量在100万以上,足以促使他们维护BCH安全,而不是毁灭BCH。而CSW的BCH持仓量一直不明。WHC并非比特大陆发行的token,而是任何人都可以通过燃烧BCH产生的,用WHC吞噬BCH对比特大陆没有什么好处。

攻击虫洞是CSW攻击比特大陆和ABC的借口。CSW很早就宣扬BCH的token方案,为什么虫洞方案出来以后会大肆攻击呢?翻阅CSW和投资人Calvin在8月之后的微博就知道了:他们把BCH生态中想要攻击的人都借助虫洞描绘成比特大陆的帮凶,比如说ABC的技术升级是为了虫洞设计的,Coinex支持虫洞发行的token是想跟比特大陆一起用WHC取代BCH,等等,并且把虫洞的地位类比2017年扩容时的隔离见证(SW)和闪电网络,从而把BSV类比去年为拒绝SW而诞生的BCH。这都是误导舆论的手段。

简单说,虫洞是BCH上的二层智能合约方案,有利于BCH发展,因为战争,CSW把虫洞当做制造谣言的材料。

五.BCH是比特大陆的公司币?错,BCH的去中心化程度远高于BTC和BSV

这个误解是BCH生态之外,尤其是BTC生态对BCH的核心攻击点。主要原因是2017年扩容之争后期,比特大陆发现比特币核心开发团队core不可能再扩大区块了,就率先寻求支持core之外的团队(比如Bitcoin Unlimited)开发扩容版本。BU失败而ABC团队开发出扩容版本后,比特大陆参与投资的Viabtc交易所和矿池率先支持了BCH交易和挖矿,与吴忌寒关系紧密的江卓尔则在BCH诞生初期用算力稳定BCH出块时间,直到BCH修改难度调整规则(DAA),实现市场化平稳运行。因此,在BCH诞生初期,吴忌寒、杨海坡和江卓尔起到了关键作用。

然而,即使BCH的诞生也离不开算力之外的坚定主张扩容的比特币社区成员的支持和努力。我本人从2016年就支持扩容,并主张分叉,对BCH分叉和修改难度规则(DAA)做了实际的推动。在这之前并不认识吴忌寒、江卓尔和杨海坡,是因为有共同的目标,做共识的事情才逐渐产生联系。

BCH的绝大多数支持者都跟我一样,相互素不相识,因为主张“比特币要成为世界货币,必须满足市场需求扩大容量”这个共识才走到一起。有了这个共识才有了BCH最初的市场需求,才有了后来不断增长的宣传者、开发者、商业企业和用户。没有这种去中心化的社区共识,只有算力和开发者,BCH跟随后产生的各种分叉币就没什么区别了。

不可否认,BCH诞生发展早期,比特大陆和吴忌寒的贡献和影响是最大的。但在随后的一年中,比特大陆和吴忌寒的影响力在迅速下降。Roger、Gavin、CSW等人相继支持BCH,不但扩大了BCH社区,也分散了影响力。比特大陆和吴忌寒本人非常低调,避免宣传,在社区中的影响力不断减弱,这是有意识的去中心化。吴忌寒在社区中所提出的缩短区块时间、抽矿工税激励开发者等建议都被社区否决。这次CSW以如此大的声势制造出分裂,正是BCH去中心化的直接结果。ABC支持者鼓励CSW分叉出去,而不对其进行攻击,也是接受这种去中心化的后果,延续去中心化的进程。

从内在机制上看,BCH主要将区块容量从1M扩大到8M,而没有改变比特币的原有技术构架和利益博弈格局。在技术特征上其去中心化程度跟BTC是一致的。比特币在扩容之争中表现出来的开发去中心化在BCH中依然存在,但比现在的BTC弱得多。有7个开发团队参与开发,ABC的节点数并不占压倒性优势,BU的节点占比也很高。

在曼谷会议上ABC团队的主要诉求就是,希望矿工们能够委派懂技术的人参与开发讨论,强化开发与矿工的沟通,从而让他们从繁杂的政治纷争中解脱出来,专心开发。对于CSW和nChain的责难,ABC团队努力向各方说明每个细节,并最终获得了除BSV以外的所有主要开发团队的认同和支持。这与去年Core拒绝参加矿工大会是鲜明的对比。很难想象现在BTC的社区的哪个个人或企业能够像CSW和nChain这样,在两个月的时间里,对Core开发团队制造如此严重的威胁。

目前,支持ABC版本的一方并不是一个整体,而是多方力量,不只是比特大陆和Roger,还有生态中77%-98%的企业(来自coin.dance),以及BU、Bitprim、Bitcoin XT、Parity、Bcash、bchd、哥白尼项目等至少6个开发团队。这些开发团队的版本都兼容升级后的ABC版本,但都是独立开发,有可能竞争成为主要开发团队,尤其是BU团队。

在曼谷会议上和这次战争中,这些力量都表现出独立立场。吴忌寒和我是较早意识到不能向CSW妥协的。在前期各方力量大多希望弥合分歧,包括Roger。但随着战争爆发,多数人做出了自己的判断,并且绝大多数支持了ABC,构成现在的BCH社区。这个社区的去中心化程度明显高于现在的多数公链,包括BTC。而BSV社区则紧紧围绕在CSW和Calvin、nChain、CoinGeek这个利益共同体周围,对CSW的个人崇拜尤其严重,因而是高度中心化的。

简单说,BCH从诞生到现在经历了快速的去中心化过程,现在的去中心化程度领先于BTC和高度中心化的BSV。

六.战前70%算力支持CSW?错,支持ABC的算力是CSW的10倍

这个误解也是CSW、CoinGeek和nChain有意制造的。因为绝大多数人不太了解挖矿的细节,以为BCH浏览器上显示的算力占比跟支持BCH的算力占比是一回事,实际上差异非常大。

由于BTC和BCH都是用SHA256哈希算法挖矿,所以两种币的算力是相通的。正常情况下,BTC和BCH的相对价格变化会导致挖BTC和BCH的相对收益变化,矿池可以在BTC和BCH之间切换,以获得最大收益。

基本规则是价格决定算力占比。比如BTC价格4万,BCH价格4千,那么BTC和BCH两网总算力的90%就会挖BTC,10%挖BCH。如果有20%挖BCH,那么BCH难度就会增大,收益就会下降,切换到BTC上挖矿就更有利可图。

由于支持BCH的企业或个人掌控的算力规模相当大,包括比特大陆的antipool和btc.com、Roger的bitcoin.com、江卓尔的btc.top、杨海坡的Viabtc,以及CSW这边的CoinGeek、svpool、bmgpool等等。他们所掌握的算力占到两网总算力的60%以上,而BCH每日产出价值只有BTC的7%左右。如果都挖BCH,大家都会破产。所以,多数情况下,只有7%左右的两网算力挖BCH。

实际上,由于机枪池的存在,多数矿池不需要频繁切换。江卓尔的BTC.TOP就是著名的“机枪池”,能够快速在BTC和BCH之间切换,不仅自己获得利润,也能平抑BTC和BCH的挖矿收益,帮助其他算力能够获得平稳的收益,而不必频繁切换。

正常情况下,矿工矿池以挖矿收益为直接目标,所以不需要计较挖BTC和BCH。即使是BCH的坚定支持者,也可以挖了BTC兑换成BCH。只有到了算力战的时候,发动算力攻击或用算力防守保障安全的时候,才需要不顾眼前利益,而坚持在某个链上挖矿。

但是,由于多数人不懂这些,只看区块链浏览器上的算力占比。CSW就利用了这种信息不对称夸大自己的声势。他的支持矿池只挖BCH,使BCH挖矿收益比BTC持续低5%以上,其他算力大多切换到BTC挖矿,其支持算力的占比不断上涨,最高达到大战前的70%。在这个过程中,CSW不断以BCH大多数算力的名义发布各种消息(参见CoinGeek官网和CSW与Calvin推文),制造其能够用算力决定BCH未来的假象。

实际上CSW的支持算力仅占两网算力的6%以下。直到大战爆发,公众才明白真相。Bitcoin.com、BTC.com、antipool、viabtc和btc.top等矿池仅切换了少部分算力保护BCH主链,就远超BSV的算力,目前的累积算力超出了40%左右(来自coin.dance)。并且,仍有大量算力在BTC中,随时可以用来保护BCH。

令我疑惑的是,我以为CSW不会真正打这场算力大战,因为一开战他的这个舆论战小把戏就戳穿了。但意料不到的是,即使这个把戏被戳穿,以为CSW算力占优的支持者还那么相信他,他们说,走着瞧,CSW有很多钱,很多算力在路上,我们会取得最后胜利。

CSW支持者唯一的希望在于,CSW准备了很多钱来打消耗战。由于算力大战,BTC挖矿收益超出了BCH的2倍左右,挖BCH会有很大亏损,持久战比拼的是谁烧的钱多。然而,目前两链已经分离,BCH的价格是BSV的4倍左右(11月23日),双方算力相同的情况下,BSV的亏损是BCH的四倍。并且,目前BCH维持高算力主要是为了防范CSW的重组攻击,而ABC 0.18.5版本增加了重组保护,能够排除超过10个块的重组,从而在10个确认后确保交易安全。这样,BCH支持者就可以逐渐撤出保护算力,回到正常挖矿利润了。而CSW维护BSV的算力如果不下降到BCH算力的四分之一,CSW一方将会持续大额亏损(每日百万计),这就不是战争,而是自残了。

11月23日,CSW的投资人Calvin宣布可以接受BSV,而不在于ABC支持者争夺BCH,条件是ABC版本加入重放保护。随后,CSW也表示理解和支持Calvin。他们强调BSV的目标是证明自己是真正的比特币(BTC),而不是比特币现金(BCH)。随后,BCH与BSV的算力开始同步下降。烧钱的算力大战即将结束。

简单说,算力战争比的是双方在BTC和BCH掌控的总算力,而不只是BCH的算力,CSW支持者号称70%算力,只是操控舆论的小把戏。

七.不做重放保护就不会分裂?错,共识分歧的两个链包含不兼容内容就分裂了

“重放保护”是针对“重放攻击”做的防护措施。重放攻击曾经使老牌交易所云币网遭受重大损失。

当时,以太币分叉成现在的eth和etc,云币网率先开放etc的充提交易。有用户就从云币提取etc,云币用私钥对一笔etc进行签名解锁,并将签名在etc网络上广播,完成提现。用户收到etc后,又把广播的经过私钥解锁的签名信息在eth网络上再广播一次,这样云币的eth也到了该用户的地址上。这使得云币损失惨重。因此,在2017年8月1日的BCH分叉时,ABC在程序中加入了重放保护,让BCH的交易与BTC的交易有不同特征,各自的交易签名在对方网络中不被接受,从而防止了重放攻击,这对BTC和BCH都是有利的。

在这次的BCH战争中,正如CSW所警告的,BSV没有加入重放保护。CSW及其支持者宣称,BSV只要不加重放保护,BCH就不会分裂,两个版本区块链只是暂时分开,仍是同一条链内的竞争,终会有一个链死亡,回到唯一的链。

在解释“分叉”时,我们说了,两个版本如果各自有对方不兼容的特征,当这个特征在交易或区块中实现,就形成了两个不兼容的区块,不会按照“最长链原则”抛弃短链,而是形成了两个链。只要两个链都有坚定支持者,有人运行坚持挖矿记账,那么两个链就长期存在,两个币也就永远分裂。实际上在BCH的第556767区块就出现了不兼容的交易信息,ABC和BSV挖出了两个不同的块,形成了两个链。

由于有交易所开了ABC和BSV两种币的期货,分叉后各交易所又陆续开通了现货交易,有了bch和bsv的交易转账,两个账本记录的交易和余额已经不同了,这已经没有办法合并。也就是说两个链和两种币已经永久地、不可逆的分离了。

回到一条链的唯一可能是,这种币已经没有价值,并且没有人在挖矿记账了。只要有一定的共识存在,有人挖矿,这个链就能活下去。像早期的很多山寨币,虽然没多少人知道,但也还延续着。

分裂之后,如果一个币影响较大,生态各方面更原因接受这个币,混乱的状况就会结束,影响大的币一般会延续原来的名称,而影响小的币则被看做是新币。由于新币是原有账户一比一分出来的,所以也被称为免费发放的“糖果”。目前,BCH延续之前使用的ABC版本,新的BSV版本的BSV币可以被看做“糖果”。

没有重放保护带来的问题是这两种币容易受到重放攻击。针对这个问题的系统解决方案是至少一方做重放保护,区分两种交易。个人的解决办法是对自己的币做一次污染,即发送一笔具有ABC版本独有特征的交易到自己的旧地址上,再把旧地址上的币发送到自己新地址上。这样新地址的币就出现在BCH链上,而在BSV链上币留在了旧地址上。有钱包或网站陆续提供为用户分离币的应用或软件,交易所也会成为分离币的重要枢纽。

总之,重放攻击的问题可以防范和解决,没有重放保护不能阻止两个链的分裂。

八.ABC支持者想要杀死BSV链?错,ABC支持者希望BSV实践其路线

一般情况下,战争的目的是消灭对方或征服对方。在这次BCH战争中,CSW的支持者坚定地提出要杀死ABC版本的链,要让比特大陆破产。因此,很多人也认为战争的另一方,ABC和比特大陆也是希望杀死BSV链。实际上,ABC链的支持者多数人希望BSV链能够活下去,让支持CSW理念的人坚定地实践这种理念。

我在《BCH的战争与进化》中分析了这种不对称性,它来自双方的理念分歧。ABC支持者主要是演进主义者,赞同在激烈竞争的密码货币环境下,BCH应当根据形势的变化不断调整和演进。当遇到重大分歧的时候,都没有绝对的把握哪条道路是正确的,因此应该分叉去探索。所以,能够容忍并鼓励BSV在不同道路上的探索。

但是,CSW的理念是理性主义的,认为中本聪和白皮书给出了确定的方向和实现路径,只需要回到中本聪,去掉区块限制,服务50亿人的目标就能实现。他的追随者大多是因为这个清晰简洁的理念而支持他。这种理念就决不允许他人按照市场的发展做出修正和演进。所以,杀死ABC链是理性主义理念的必然。

回顾分叉之路,从BTC分叉出BCH,再从BCH分叉出BSV,现在有了BTC、BCH和BSV三条道路。其中,BTC走的是限制区块容量,保证主链抗审查能力的道路;BCH走的是扩大区块容量,不断演进的道路;BSV走的是取消区块容量限制,回归中本聪早期版本的道路。现在比特币实际上有了三条前进的方向,成功的可能性远比一条道路要大,还有可能三条道路适应于不同领域,都取得成功。生物的进化不就是这样的过程吗?

目前,CSW一方对BCH的攻击威胁一直没有停止。为此,BCH更新了ABC 0.18.5版本,增加了重组攻击,即节点接到按最长链规则需替换掉自己10个以上区块的更长链时,将放弃这个更长链,沿用自己的链。这就是为了防止51%攻击重组区块链。因为,正常情况下的孤块长度不超过2个,超过10个的必然是51%攻击。这个更新能够让BCH交易10个确认做的近乎绝对安全。从而保证了自身的正常使用。大幅降低了CSW攻击的意义,有助于BSV一方恢复理性。

相反,ABC支持者攻击BSV实际上更容易,因为:1)BSV一方坚称自己为正宗,不愿意改变协议,包括防范攻击的改变;2)BSV的支持算力更小,发动51%攻击更容易成功;3)BSV支持128M大区块,容易受到巨块攻击,比如制作一个含有BSV特有交易,包含大量微额交易的128M大区块,这个块会被BSV网络接受,并造成网络拥塞,这个攻击成本很小。

从几天来的战争情况看,ABC支持者只做了战争防御,尽管算力优势很大,但并没有对BSV发起51%算力的重组攻击,也没有发动成本更小的巨块攻击。反而是CSW一方为了制造扩容的舆论优势,自己打包了一个64M的区块,在30多分钟的时间里,仍有很多BSV节点未能同步。相当于自己对自己制造了一次巨块攻击,对外却宣称取得了扩容到64M的伟大成就。颇有点大跃进、放卫星的意思。

所以,尽管BSV和BTC的多数支持者都希望现在ABC版本的链死掉,但ABC版本的支持者大多希望BSV和BTC活下去,继续探索。

九.最长链或最大积累难度一方胜利?错,胜负看双方的战争目标是否实现

战争爆发后,各界普遍关注究竟谁胜利了。很多人根据所谓“最长链原则”,认为哪个链长,哪一方就胜利了。包括火币也发布公告说将认定最长链为BCH。

两链分裂后ABC版本长度持续超过BSV版本,为此,火币认定ABC版本为最长链,命名为BCH。但19日BSV版本链的长度又超过了ABC版本,但BSV的积累难度仍落后近40%。于是BSV的一些支持者坚称最长链决定胜利方,更多熟悉密码货币的人则强调最大积累难度决定胜利方。

实际上,这两种判断标准都是错误的。最长链原则和最大积累难度规则是一条链上自动裁决的客观代码,而不是评价两条链胜负优劣的主观标准。只适用于一条链,不适用于两条链。

在解释分叉时已经说过,最长链原则是在相同版本的一条链上,因网络延迟等技术原因导致分叉的时候,每个节点一旦发现同一高度出现不同的区块,就会保留更长的链,丢弃短链。这是写入代码的,节点会自动运行,不需要人来评判和干预。

由于比特币约两周调整一次难度,所以一般情况下短暂分叉的两个链都有相同的难度,所以某个链越长,这个链的积累难度也就越大。“最长链原则”和“最大积累难度原则”是等价的。

但是,BCH诞生之后,两周调整难度导致BTC和BCH的挖矿难度不能随着相对收益的变化而及时调整。当BCH更赚钱时,全部算力涌向BCH,难度不变情况下,出块时间大幅缩短。当BTC更赚钱时,全部算力涌向BTC,BCH出块时间大幅拉长。这种情况造成BTC和BCH的出块时间都偏离了10分钟,忽快忽慢。BCH价格低,波动尤其大。

为此,2017年11月1日的BCH硬分叉升级中修改了难度调整规则,改成每个区块都根据之前一天的平均出块时间调整难度(即逐块调整难度,简称DAA)。相对收益造成算力流动引起的出块时间偏离很快就能调整回来。有了这个修改之后,BCH和BTC的出块时间都稳定了,切换挖矿获利的行为导致两个链的算力之比跟价格之比基本一致。

然而,在逐块调整难度的情况下,“最长链”和“最大积累难度链”就不一致了。因为,算力较少的链虽然一开始出块慢一些,链更短,但它的难度能很快降下来,出块时间就加快了。因为这个原因,BCH已经比BTC超出了6500多个块了。但是,由于BCH难度低,因此积累难度远远小于BTC。

所以,在难度逐块调整(DAA)的情况下,如果仍然在同一条链上,最大积累难度原则才是代码执行的分叉选择原则。当发现跟一条不同的链的时候,不是判断哪个链更长,而是比较哪个链积累的难度最大,就接受哪个链,放弃另外一条,这是程序自动完成的。

最大积累难度原则也只适用于一条链。ABC版本和BSV版本在第556767区块中因为存在不兼容的交易信息,已经分裂成两条链。即使都没有做重放保护,两个版本接收到对方版本发来的区块会自动判别为不合法,从而拒绝对方的链。也就是说无论长短,无论积累难度高低,两个版本都不会理会对方的链。所以,最长链原则和最大积累难度原则就没了实际意义。BCH比BTC更长也不能说明BCH赢了。

跟区块链领域的很多误解一样,最长链和最大积累难度原则被广泛视为两链胜负的标准,不是因为它自身有这种功能,而是因为人们普遍接受这种误解。

实际上,最长链、最大积累难度、价格、社区人数、市值规模、日交易量、开发人员规模、活跃地址数,等等,都只能从一个侧面反映一个链的数据状态、健康程度、市场接受程度或可能发展前景。并不能判断出不同链的胜负。一个链的发展要多学习其他链的优势,修正自己的劣势。唯我独尊,天天贬低他人,不是一个新生事物迈向成功的道路。

对一场战争而言,胜负的评判标准在于,双方战前想通过战争实现的目标是否实现?

CSW发动战争的目标很明确,就是:1)阻止ABC版本升级到0.18.2;2)ABC团队不再主导BCH开发;3)BSV版本成为BCH的主导版本;4)BCH不分裂为两条链,如果分裂,ABC版本中止挖矿。

ABC和比特大陆一方的目标是:1)BCH升级到ABC 0.18.2版本;2)如果BSV不兼容新版本,欢迎分叉发展;3)BCH继续指代ABC及其兼容版本运行的区块链和币。

现在看来,CSW的4个目标全部落空了。BCH分裂了,除了BSV以外的版本都兼容ABC版本,而不兼容BSV版本,生态中多数商业沿用并升级到ABC的0.18.2兼容版本或更高版本,交易所和钱包部分已经接受ABC版本为BCH,部分中立,但没有将BSV接受为BCH的,ABC团队仍然是主要开发力量。

ABC和比特大陆一方的目标基本都实现了。“基本”的意思是,理论上仍有可能CSW的支持者说服其他开发团队、交易所、钱包将BSV版本作为BCH,并且斥巨资不断攻击破坏ABC版本的链,从而消灭ABC版本。但这种可能性已经极小了。

CSW的一些支持者也回避发动战争时的胜负标准,提出最长链、最大积累算力、放弃挖矿、主动添加重放保护、改挖矿算法等等新的胜负标准,试图延续这场战争,夺取BCH之名。实际上,BSV一开始没能成功夺得BCH之名,整个生态大部分接受ABC及兼容版本作为BCH主链之后,名称就拿不回来了。因为重新命名给商业企业和个人造成巨大混淆,人们不愿意这么做,去中心化的社区也做不到这一点。

所以说,从这场战争的目标来看,CSW一方已经失败了,理性的做法是专心做好BSV,让用户超过BCH和BTC,这比夺取BCH或BTC之名更有意义,也更有可能实现。

十.BCH内战让BTC坐收渔利?错CSW攻击的是整个去中心化的密码生态

原本以为BCH战争只是一场内战,没想到会引起整个区块链社区,甚至央视CCTV2的关注。最早的社区外关注来自BTC社区。一些Core支持者对BCH爆发内战非常欢迎,有些不惜放下对“假中本聪”CSW的成见,为他呐喊助威。他们的逻辑是“分叉就是攻击”、“分叉者将被分叉”、敌人的敌人就是朋友,所以他们支持CSW发动战争。从利益上看,BCH与BTC的相对价格一直是双方关注的焦点,BCH战争导致BCH相对价格下跌,BTC似乎坐收了渔翁之利。

令人始料不及的是,BCH战争爆发带来以BTC为首的整个密码资产的新一轮暴跌。这场暴跌的根源是去年牛市积累的巨大泡沫仍在破灭,BCH战争虽不是根源,却是压死骆驼的一根稻草。BCH战争导致密码资产市场下挫的一个原因是,在资金稀缺的情况下,BCH战争各方都需要烧钱,使资金更加稀缺,价格下跌,比如CSW推特说他售出了BTC以支付挖矿电费。

BCH战争导致密码资产整体下跌的另一个重要原因是,CSW的这次攻击挑战了中本聪建立的去中心化密码货币经济模型和整个去中心化密码生态。正是由于这个原因,在开战后BTC带领的暴跌中,偏中心化的瑞波币(XRP)和恒星币(XLM)不仅坚挺,甚至一度上涨,XRP市值一举超过ETH,稳居市值第二位。

为什么BCH战争会危及去中心化密码资产呢?原因是CSW虽然宣称忠于中本聪初衷,但其理念、行为和战争的方式与后果都是高度中心化的。

1)CSW发动战争的理念是中心化的

CSW发动战争的主要理由是,认为ABC和比特大陆适应市场变化的演进路线是错误的,中本聪在白皮书中已经确定了能够顺利实现50亿人使用的世界货币的框架,只需要恢复0.1版本,扩大容量就能实现,并且攻击所有与他意见相左的人。按此理性主义理念,社区成员只需听从CSW对中本聪和白皮书的解释,甚至坚信CSW是中本聪,跟随其指引就能够实现世界货币目标了。这是高度中心化的理念,很受不善反思和独立思考的普通人,尤其是急于求成的激进者的喜爱,能够快速获得信众。但它对去中心化社区的危害极大,其效果类似于文革。历史上看,几乎所有的革新性的理念都不是毁于竞争,而是毁于内部将理念的僵化甚至神化,CSW正在对中本聪的理念这么做。

2)CSW发动战争的行为是中心化的

CSW一方组织和发动此次战争的过程高度中心化,其决策核心是CSW及其投资人Calvin,主要力量是Calvin投资的nChain、CoinGeek、BMG和SVPOOL等几家企业和矿池。这次攻击至少从5月份就秘密筹划,在ABC八月初发布11月15日硬分叉升级进度之后,突然发起对ABC、比特大陆等的攻击。攻击策略高度一致,紧密配合,先提高bch算力,然后宣传算力占比,召开BCH矿工大会,高频参与中国社群讨论,向有影响的社群成员私下展示“证据”,不断制造对比特大陆的假新闻,展开专利威胁和法律诉讼威胁等等。前述误解(第2-7,9个误解)主要是有CSW一方制造或强化宣传的。这场攻击在力量组织、舆论宣传、政治策略上都是高度中心化的。

此次攻击最令人意外的是,CSW一方不仅在战前以低于BTC收益5%的亏损挖矿,开战后仍坚持以超过ABC一方2-3倍的亏损坚持烧钱挖矿。目前,ABC一方已经加入重组保护,大幅降低被攻击风险后,BSV一方仍然坚持巨亏挖矿。这种行为不符合POW机制对矿工驱利的基本假设,如果攻击者可以以相对较少成本发起算力攻击,并从其他途径获得更多利益,那么对POW经济模型是一个挑战。

3)CSW发动战争的后果是中心化的

CSW发动战争攻击的是正在快速去中心化的BCH社区,战争大幅削弱了社区规模和共识。跟任何战争一样,战争也导致双方更中心化。ABC支持者方面比特大陆、ABC和Roger影响力有所加强,但总体去中心化格局和方向没有改变。而CSW一方则形成了高度中心化的社区,挖矿算力主要来自Calvin的投资,理念主要来自CSW,其他支持者显示出对CSW的高度认同甚至崇拜,中本聪本人隐退前都没有达到这样的崇拜,因为比特币的精神核心就是去中心化。

去中心化和中心化是人类社会组织的不同模式,没有先验的优劣之分。但中本聪通过比特币开创的,借助密码技术和分布式共识实现的密码共识机制的核心功能,就是去中心化地组织大规模经济活动。抛开了去中心化,这一系列技术组合就失去了存在的价值。

由CSW发动的这次战争,表面看是宣扬中本聪和白皮书的理念,实际上是以高度组织的中心化方式对一个去中心化的密码社区进行的攻击,挑战了白皮书POW的去中心化激励模型,建立了一个高度中心化的密码货币社区,并号称这才是真正的比特币。由此带来的混乱在熊市中时对去中心化密码生态的沉重打击。

我从2016年就主张,分叉是去中心化社区自然演进的必由之路,在《扩容之争与比特币的政治经济前景》一文中强调扩容争论双方应该各自探索自己的道路。但我在《BCH的战争与进化》分析过,这次分叉不是一次必要的演进分叉。现在看来,这实际上是中心化力量对去中心化社区攻击的一次攻击。

BCH的诞生是一次典型的演进分叉。BCH社区虽然自认比BTC更加符合中本聪点对点现金,或世界货币的目标。但总体上尊重了BTC社区的选择,采取措施避免相互伤害:1)分叉时加入了重放保护,防止用户损失;2)修改了地址格式,避免了用户与BTC地址混淆;3)调整难度规则,减少算力潮涌对BCH和BTC双方的损害;4)BCH支持者拥有50%以上两网算力,但从未进行过算力攻击。这些措施即是正义的,又是符合双方共同利益的。相比之下,此次战争中的CSW一方明确拒绝重放保护,威胁对ABC发动算力攻击则是对去中心化理念的疯狂挑衅。

所幸,BCH战争已经结束,CSW一方组建了紧密的BSV生态,放弃了BCH。但保卫去中心化生态的战争并未结束,他们现在的目标是BTC。希望更多人能消除误解,理解真相,共同保卫去中心化生态的十年发展成果,这才是真正的信仰。

 

干货 | 探究以太坊 2.0 的分叉选择规则

导读:从 PoS 无法应用最长链规则,到以太坊 2.0 中 Beacon Chain 的分叉选择规则。

编者注:文章原题为“Detailed overview of Ethereum 2.0 shard chains: Committees, Proposers and Attesters(关于以太坊 2.0 分片链细节概述:委员会、提案者和证明者)”,但我认为,文章内容的实质是信标链的分叉选择规则(尽管还说不上完善),因此改名。读完这篇文章就更能理解:为什么权益证明无法使用最长链规则而必须采用其他规则,而这些规则又会有怎样的局限性。文章非常长,但不读你就错过了。有兴趣的读者可以结合文末超链接研究一下。

时至今日,许多关于以太坊 2.0 的工作细节已经公诸于众,同时还有许多团队在着手实现。但是 以太坊 2.0 还有一大块空白的部分还未规范,也没有披露什么讯息,那就是分片链技术。基本上所有关于规范的部分都展示在这里,而这篇博客会着重提供一些细节概述。

脚注:这篇文章的初版所述的方法,称作即时消息驱动(IMF, immediate message driven),现在已经被抛弃了。相关内容可以在这里找到。

委员会及其构造

只要将 32 个 ETH 放入现有主链(PoW chain)上指定的智能合约,任何以太坊网络中的参与者都能成为验证者节点。

-Image by Hsiao-Wei Wang-

参与者进入验证者池之后,就可以被分配给某个分片。分配过程是是完全随机的,可以通过可验证延时函数(VDFs,Verifiable Delay Functions)保证随机的无偏性。

如果有参与者质押的权益超过 32 ETH(假设是 320 ETH),他们就会获得相应比例的验证者席次。这些席次彼此之间无关,会被独立地分配给分片网络;所以对于投入 320 ETH 的参与者来说,最不理想的情况是在单个出块时段,成为十个不同分片网络的验证者。但如果不这么设计的话,就会增加竞争敌手接管某一个分片的可能性;一般来说,我们都预期那些拥有更多权益的人可以调用更多的资源以及算力(因此要防范这一点)。

在 Proof-of-stake 系统中产出区块

以太坊 2.0 是 PoS 系统。在本章节,我们先回顾一下现有的且被推崇的 PoS 区块链中,是如何产生区块的:

在这样的框架中,生成区块的时间间隔是固定的。例如每五秒生成一个区块,并由一群验证者来进行创建和验证区块。在每五秒的出块时段内,会有一个验证者被指定来生产该时段(time slot)的区块。如果验证者彼此之间的权益数量不同,则有较多权益的验证者会有较高的概率成为区块生产者。

当分叉发生时,诚实的验证者会选择具有最多区块的那条链。只要诚实的验证者占全部验证者总数的一半以上,想要伪造一条最长链是非常困难的。假设所有少数恶意节点试图联合起来,私下创建一条分叉链,并且故意在诚实链的出块时段内不产出区块;即使如此,他们的恶意分叉仍然会比诚实链要来的短;这个论点类似 PoW 系统,只要超过一半以上的算力由诚实节点控制,要反转最长链的可能性极低。

然而如果直接实施这种架构,会存在许多问题。首先,短程分叉还是很有可能发生;只要少数节点控制了全部验证者中的 10% ,最后的几个区块,比如说六个,的回滚概率还是高的令人无法接受;第二,会出现各式各样的审查问题。举例来说,如果恶意节点碰巧在一条队列中获得连续两个出块时段的出块权力,他们就能审查前一个出块时段产生的区块:

上图中恶意验证者控制了第 3 和 第 4 个出块时段;它们能够紧接在 1 号块(即第 1 个出块时段所出的块)之后生成区块,实质上造成对 2 号块的审查。而诚实的验证者在第 5 个出块时段生产区块时,会选择被操控的包含第 3 和 第 4 区块的链,因为它们是较长链。

即便是单个恶意验证者也能试着去审查前一个时段的区块。如下图所示,X 轴表示时间轴,出块时段标记在底部,区块中的数字表示人们预期的该块的出块时段(标号1 即表示人们预期这个块会在第 1 个出块时段出块)。假设诚实的验证者被指派为第 0 和 2 时段生产区块;该诚实验证者将区块 0 广播出去之后,被指派为第 1 个时段出块的恶意验证者可以扣住区块不去广播,等到区块 2 被广播出去后再广播区块 1(由于负责出区块 2 的验证者没有收到区块 1 ,他们会紧接着区块 0 构建他们的区块;因此,区块 1 和区块 2 就变成了两条同样长的分叉链)。

等到第 3 个出块时段,诚实的验证者应该接着哪个块创建新的区块呢?我们考虑以下四种可能的情况:

  • 总是跟在较早创建的区块后面。这么一来,处在较早出块时段的恶意验证者就会延迟广播区块,直到下一个出块时段的区块被创建后再广播,导致后者就被忽略(如上图情景所述)。
  • 总是跟在较晚创建的区块后面建块。这种情况下,在时段 X 出块的恶意验证者可以选择无视时段 X-1 创建的区块,并且能确保负责时段 X+1 的验证者一定会选择他的区块,而时段 X-1 创建的块就会被忽略。
  • 总是跟在自己先接收到的区块后面建块。这种情况下,只要恶意验证者比下一个验证者的网速更快更稳,上述两种情形都有可能发生。
  • 、随机选择区块。这样恶意验证者就无法确定自己创建的区块会不会被接受(除非它们在一条网络中控制了多个出块时段);但是如果审查区块能获得高于出块的奖励,恶意验证者仍会尝试作恶,同时有 50% 的成功几率。

上面的四种情况都是我们不愿意见到的。

拜占庭方法

针对上述问题,人们提出了一系列的提案,这些提案的想法是在验证者创建区块时,使用一种拜占庭共识算法。最早设想这个方法的论文是 ByzCoin ,而后又有许多基于它的协议被提出。它们的核心思想是:一旦区块经过委员会最终确定,只要恶意节点数量不超过 1/3,这个区块就是不可逆的,换句话说分叉和篡改无法成功。

这个方法有两个主要的缺点, a) 大多数拜占庭算法很慢,无法应对大量参与者要达成共识的场景; b) 掉线的节点会被视为恶意行为,因为如果少于 2/3 节点在线,区块共识就无法达成,进而导致系统总会在某些时候停滞不前。

检查证明(Attestations)数量的方案

以太坊 2.0 延续使用之前的方法,也就是在每个出块时段,会有一个验证者(又称作提案者,proposer)被指派产生区块。而且以太坊 2.0 还进行了拓展:委员会的其他验证者被激励去“证实(attest)”这个区块,也就是给它签名。这种签名使用了 BLS 群签名方法,可以避免随着签名增加而使得区块大小暴增。而且对于给定的出块时段,如果验证者没有看到新创建的区块,或是区块不在当前应该在的链上,验证者被鼓励去证明存在这个情况,又称作证明“跳过该区块”的操作。这样一来,诚实的验证者会证明每个出块时段都正好有一个区块产生;这可能是由提案者创建的真实区块,或是一个被跳过的区块(“跳过该区块”)。

借由证明者机制和分叉选择规则,以太坊 2.0 分片链避免了一般 PoS 方法和拜占庭共识算法的问题。

分叉选择规则

即时消息驱动(IMD)

从创世区块开始,每当我们面临分叉时,只要某个分支上具有的验证者(即为该分支的当前和以往区块做证实的验证者)比其它分支都要更多样,我们就认为它是应该被选择的分支(预告,后面会提到最新消息驱动 Latest Message Driven)。

我们分析一下上图所示的情形。每个区块中的字母表示该区块获得的证明,虚线的区块表示“跳过该区块”操作。现在发生分叉,Alice (A)、Bob (B)、Carol (C)、Dave (D) 和 Elaine (E) 已经证明过下分支的部分区块;而 Victor (V)、Xavier (X)、Yasmine (Y) 和 Zach (Z) 证明过上分支的区块。为了找出正确的那条链,我们得从创世区块开始往右推演。参与者必须在第 2 个出块时段对上下两条分支进行选择;而分叉选择规则告诉我们,要选择在其上有较多不重复的证明者的分支。我们可以看到,下分支有五个证明者(Alice, Bob, Carol, Dave and Elaine),上分支只有四个(Victor, Xavier, Yasmine and Zach),所以我们选择下分支。注意,其实在下分支里,并没有某个块是得到五个验证者证明的,甚至连得到四个证明的块都没有(在第 7 个出块时段之前的链,只有来自 Alice, Bob 和 Carol 的证明;如果链在第 8 个出块时段结束的话,也只有来自 Alice, Dave 和 Elaine 的证明)。但是下分支的累计证明数比上分支多,因此选择前者作为链。

相似的,在第 6 个出块时段也要进行一次分叉选择;上面分支有三个证明者( Alice, Bob 和 Carol ),下面的只有两个( Dave 和 Elaine ),所以最终结果会选择包含出块时段 1 、2、4、6、7 所创块的链。

最新消息驱动 Latest Message Driven

在(最新消息驱动)这种分叉选择规则中,(在确认哪条分支有多少验证者时)我们只考虑这些验证者在最新的出块时段提交的证明。举例来说,在下图中的第 3 个出块时段(也就是最新的出块时段), Alice 提交了对上分支区块的证明,因此我们认定 TA 选择了上分支。换言之,Alice 在第 2 个出块时段的证明将被忽略掉,因此我们在第 0 个出块时段进行分叉选择的时候,上分支有三个证明者( Alice, Bob 和 Elaine ),下分支只有两个( Carol 和 Dave),我们选择上面的分支:

要注意的是,此种分叉选择规则只看 Alice 在最新的出块时段(出块时段 3)的选择,这和 Alice 最先提交哪个证明或是特定观察者最先接收到哪个证明无关。

证明的条件

只有在区块满足某些条件时,诚实的证明者才会对区块进行证明:

区块属于证明者认定的当前被选择的链上;

证明者在同一个出块时段内,没有对其他区块进行过证明。

注意:我们相信诚实的提案者不会在同一个出块时段内创建两个区块;因此,这种分叉选择规则只要配合罚没规则便可使用:当出现恶意提案者试图在同个出块时段创建多个块,以此分叉区块链的时候,它的权益会被立即罚没掉。

如果证明者没有收到特定出块时段的区块,则证明者会采取证明“跳过该区块”的操作。由证明者自行选择等待时间,直到他们决定停止等待并证明“跳过该区块”操作。Danny Ryan 建议诚实的证明者应该等到出块时段过了一半之后,再进行最终他们认为正确的证明(不论是对实际区块或是跳过的区块进行证明)——因为大多数证明者都会这么做。

进一步分析
活跃性

不同于其他拜占庭共识算法,在上述方法中,即使超过 1/3 占比的节点掉线,出块过程也能继续正常运行。网络中的参与者会仔细检查只得到少于 2/3 证明的区块,并对这些区块更加小心,直到有其他附加的安全条件被满足(比如,等到这些区块被交叉关联(cross-link)到信标链(The Beacon Chain),并且由 Casper FFG 进行过确认……这些就超出本文讨论范围了)。不过最重要的是,系统会持续出块,而不会延宕。

抗审查性

回顾一下上面提到的两种审查场景,在第一种情形中,拥有连续两个时段出块权的验证者想审查前一个区块就不可能成功了,因为分叉选择与链长度不再有任何关系。

如果没有限制验证者只能在相应的出块时段内做证明,那么第二种场景(提案者延迟出块,直到下个出块时段的区块被创建出来)仍然可能发生:出块时段 X 中的恶意验证者可以延到 X+1 块被创建后,再广播他们的区块。对于证明者来说,他们无法区分恶意攻击或仅仅是网络延时的区别,而且一旦证明没有限定的时间窗口,人们就可以在后来证实 X,有效地审查 X+1。

要求在特定时间窗口进行证明可以解决上述问题,只要所有参与者的时钟都是同步的。如果无法保持同步(但仍然在数秒钟的时间范围内),基于时间差的攻击就有可能发生;当然发生的可能性极低。

抗分叉性

在两种可能的累计证明数的方法中(最新消息驱动 LMD,只有在最新的出块时段中的证明会被采纳;及时消息驱动 IMD ,采纳所有的证明),后者提供较好的抗分叉性保证(详见此文关于分叉性的章节),但相比于其他拜占庭共识算法仍然不够好。

本文描述了以太坊 2.0 中的 LMD 方法,虽然这种方法对分叉性的抵抗较弱。 为了更好了解这一点,假设某条分支中有 60 个证明者,其中有部分恶意节点;另外一条分支有 40 个证明者。在 IMD 场景下,需要在那 60 个证明者中出现 21 个恶意证明者为具有 40 个证明者的分支做证明,才能改变原有主链选择的结果(最终为 61 个证明数 vs 60个证明数,原来被选择的主链上只有 60 个证明);在 LMD 场景下,只要出现 11 个恶意节点就能达到分叉目的(最终为 51 个证明数 vs 49 个证明数,原来被选择的主链上只有 49 个证明)。尽管 LMD 能够减少分叉发生,加上主链有超过 2/3 占比的证明数且恶意节点占比不到 1/3 ,我们仍无法完全避免分叉发生。我们考虑下面的例子:

假设有七个验证者,其中 Alice (A)、Bob (B)、Carol (C)、Dave (D) 和 Elaine (E) 是诚实节点,而 Xavier (X) 和 Yasmine (Y) 是恶意节点。

(i) 现在出现了分叉,第 2 和 3 出块时段都接着第 1 个出块时段的区块出块,而 Alice 和 Bob 看到第 2 个出块时段生成的区块,并为它提供证明;

(ii) Carol 没有看到第 2 个出块时段的区块和证明,而只看到第 3 个出块时段创建的区块。于是 Carol 和恶意节点 Xavier、Yasmine 替区块 3 提供证明;

(iii) 现在区块 3 拥有三个证明,所以 Alice 和 Bob 就会认为包含第 3 个出块时段的分支才是主链,因此他俩也对区块 3 进行证明(假设证明时间窗口还没结束)。现在区块 3 具有超过 2/3 占比的证明数,理应不可逆;

(iv) 但其实 Dave 和 Elaine 在有效期间也对区块 2 进行证明,却因为网络延迟问题没有及时被看到(Alice 和 Bob 也没看到);

(v) 这时候,恶意节点 Xavier 和 Yasmine 选择在第 4 个出块时段创建块,并接续在原本应该被抛弃的区块 2 上。一时之间,上分支证明数(Dave, Elaine, Xavier 和 Yasmine)反超下分支的证明数(Carol, Alice 和 Bob),前者成为主链(即使下分支一度存在超过 2/3 占比的证明数);

(vi) 现在所有诚实的证明者都会对区块 4 进行证明。

注意,上述的攻击很难成立(比如 Dave 和 Elaine 出现延迟的情况;在有数百验证者的网络中很难发生,除非攻击者控制了整个网络通信),这对作恶手段也有很高的要求(Xavier 和 Yasmine attesting 要先知道他们证明的区块不会被选为主链,但这仍表示 LMD 方法不如拜占庭共识算法来的强健)。

和 TxFlow 比较

TxFlow 是 Near 用于其分片链的共识算法,关于 TxFlow 的细则可以在这里找到。

以太坊采取的方法的两个缺点是:即便积累大量证明,理论上分叉仍然可能发生,而且非常依赖验证者之间的时间同步。目前协议中,出块速度为 8 秒,所以要求时间同步精度在数秒以内。以太坊基金会进行过的测试表明,若时间差在 10 秒以内,链仍然会继续增长。大多数证明会变成“跳过该区块”操作,但仍然能指向正常的区块,使得链稳定增长。

TxFlow 继承了大多数以太坊方法中的特点,但是不依赖时间同步;只要求恶意节点少于 1/3 则正常区块就是不可逆的。然而,在目前的设计中,只要超过 1/3 的验证者掉线,整个链就会丧失活跃性。

注脚:请注意,当分片数量很多,且恶意身份能灵活切换时,假设恶意节点少于 1/3 占比是不合理的。所以包含 TxFlow方法在内的其它拜占庭协议,最终仍有可能发生分叉。

值得一提的是,EthResearch 在 TxFlow 上测试时,Vitalik 指出 TxFlow 方法中决定什么时候出块的设计(“网速多快,就出多快”)有其他缺点:这会促使节点们抱团,以减少延时。对此指控的反驳是, TxFlow 方法的瓶颈来自“速度最慢的 1/3 节点里,其中最快的验证者的延时”。也就是说,除非超过 2/3 占比的验证者联合起来,不然无法有效提高出块速度(也无法增加出块奖励)。所以 TxFlow 的验证者发生抱团或中心化,需要大多数验证者共同为之,这在验证者基数足够大的情况下很难发生。

下表将 TxFlow 方法和 证明( Attestations)框架进行简化对比: