比特币近年开始出现大分叉,但很多朋友对于比特币分叉的起源及比特币历史不是很清楚。现在,我们来一起看看关于比特币历史,比特币历史正文:比特币的扩容史

目录

比特币历史正文:比特币的扩容史

比特币历史正文:比特币的扩容史

一,比特币扩容纷争

比特币的扩容历史由以下两个阶段构成:由Bitcoin分裂——Bitcoin core、Bitcoin cash(2015.5-2017.8),继而Bitcoin Cash继续分裂——Bitcoin Cash ABC、Bitcoin SV(2017.8-2018.11)。此文中作者对比特币扩容历史中的前半段: Bitcoin分裂——Bitcoin core、Bitcoin cash,这个过程有了详尽的讲述。

注:由于比特币扩容经历了的第二阶段:Bitcoin Cash继续分裂——Bitcoin Cash ABC、Bitcoin SV,此文中所标注的BCH均指目前的BitcoinSV/BSV,不指代Bitcoin cash/ABC。

作者:太阳谷 此文由作者于2017年12月17日首发于知乎

—下面开始是按时间顺序更新的内容—

摘要:
BitcoinCash是“激进扩容”一方势力,对纽约共识的回应。

扩容之争编年史:

2010年10月:
中本聪提出1MB区块上限以抵御粉尘攻击,此时1MB上限是平均区块大小的700倍,他表示此上限可以在将来某个设定的高度移出(https://bitcointalk.org/index.php?topic=1347.msg15366#msg15366)。

2015年5月:
Gavin Andreesen提出在2016年3月进行20MB扩容(Gavin Andresen : 提高块大小上限迫在眉睫)

2015年6月:
中国矿业开会,发布8MB扩容的声明(中国矿池建议将区块上限提高至8MB )
一系列扩容方案提出:
BIP100:Jeff Garzik提出, 矿池在区块链上投票,每个难度周期根据投票结果取75%算力同意的区块大小扩容或缩容,每次最多改5%)
BIP101:Gavin Andreesen 提出,先扩到2MB,然后每两年翻倍
BIP102:Jeff Garzik提出,直接扩容到2MB
BIP103:Pieter Wuille提出,每97天扩容4.4%

2015年8月:
Gavin Andreesen 和 Mike Hearn 创立基于BIP101 的BitcoinXT

2015年12月:
香港会议:Core提出隔离见证(Segwit)方案,牵扯到的BIP有:
BIP9: Version Bit 投票规则
BIP141:隔离见证,由Eric Lombrozo,Johnson Lau ,Pieter Wuille提出
BIP143,BIP144,BIP145,BIP147:隔离见证的一些其他功能
BitcoinUnlimited创立,Peter Rizun基于Jeff Garzik的BIP100提出了BUIP005(使用EB,AD,MG信号的动态区块上限)

2016年1月:
Gavin提出BIP109:75% 算力支持下扩容到2MB

2016年2月:
中国矿业达成“92共识”,在90%算力支持下进行2MB扩容(币圈聚会达成九二共识)
Gavin创立BitcoinClassic,基于BIP109(75% 算力支持下扩容到2MB)
Mike Hearn发文说比特币实验已经失败,社区被少部分人控制(Mike Hearn:比特幣實驗已經失敗)
Segwit上线测试网Segnet
中国矿业在香港与Core达成“香港共识”:计划4月发布Segwit,7月发布非见证部分扩容到2MB的硬分叉代码,见到硬分叉代码后矿业激活Segwit软分叉,并在2017年7月前激活2MB硬分叉。并约定只在生产环境内运行与共识协议系统兼容的软件(这个系统包含Segwit和2MB硬分叉)(比特币圆桌会议达成关于扩容的共识) 。

2016年4月:
区块堵塞问题开始显现。

2016年5月:

Craig Wright 露面并自称中本聪,Gavin称Craig曾在私下向他展示了创世区块的签名。最终Craig Wright没有向公众展示可信的签名。

2016年10月:
新矿池ViaBTC(10%算力)部署BitcoinUnlimited

2016年11月:
BitcoinCore发布Segwit代码,并在11月19日开始区块投票
http://Bitcoin.com部署BitcoinUnlimited
BTC.top部署BitcoinUnlimited
CANOE部署BitcoinUnlimited

2017年3月:
AntPool开始支持BitcoinUnlimited
匿名作者Shaolinfry提出UASF,基于的BIP148(8月1日后孤立不支持Segwit的区块)
Sergio Demian Lerner提出Segwit2mb(后改名为Segwit2x。主张合并激活Segwit软分叉和2MB硬分叉)

2017年4月:
AntPool的AsicBoost引发争论

2017年5月:
持有83%算力的矿池在纽约达成协议,开始准备Segwit2x

2017年6月:
Segwit2x按时发布alpha版 (项目由Jeff Garzik 主持)
AntPool发布UAHF方案(如果Segwit2x未能及时激活,AntPool在8月1日UASF时进行不公开的BU硬分叉)
85%以上的算力在链上写NYA表示支持纽约协议

2017年7月:

Craig Wright 再次高调露面,表示支持BU路线,反对Segwit技术。并称将筹措20%的算力做non-Segwit矿池,用于在主链干扰Segwit或硬分叉一条没有Segwit的链。

UAHF方案转化为bitcoinABC方案,在8月1日进行8M上限的硬分叉,分叉出来的新链币以BitcoinCash为名,简称BCC或BCH。

讨论一:
纽约共识对扩容来说并不理想。

第一,没有新的团队或软件或新方案被引入。Segwit2M基本就是在Core的现在的版本内,一改二。对于目前已经获得43%算力支持的BU来说,要加入Segwit的部分才能兼容,这事BU团队一直没干,并且把Gmaxwell提的issue给关了。新方案对BU客户端的改变是特别大的。同理还有classic和一些不知名的基于qt的软件,不过他们节点也比较少。Segwit的维护,目前并没有第二个团队在做,带Segwit的客户端也都是在跟Core的更新。从这个角度上来说, 虽然这次Segwit2M不是core提的,但说因此就把core选下台了也太夸张。2M硬分叉只是帮Core执行了他们答应过但没有执行的东西,并不是完全脱离了Core的指挥棒。80%算力支持等于是帮core擦了屁股,救了他们的脑残激活线。可想而知,在未来的一段时间里,Core依然对社区有很强的影响力,并依然占据着开发的核心,社区依然要和core的各种谎言反复扯皮。
扩容2M不足以支持很长时间。

第二,2M并不是大区块,虽然比1M大了,但许多较激进的估算认为现在16M都是没有问题的,Gavin近期向BU提议索性取消软件内置上限,让算力自己决定。2M即便是在香港共识期间,都已经是保守的决定了。我承认2M不失为一种紧急扩容救市的手段,但香港共识过去了这么久,比特币链上交易规模今非昔比了,还是只到2M,可以看出这83%的算力里面反对扩容的声音是很大的。在已经接受HF的情况下,依然不敢上更大的区块,这种动作将来会不会继续拖区块扩容的后腿?深表担忧。

第三, 共识没有达成继续扩容的机制。LTC的圆桌提出,在区块半满的时候开始讨论扩容方案。虽然这种共识不一定能执行了,但能写出来已经是成功了一点点。显然2M很快又会满,到时候还需要扩容。好的方面是,已经有了2M硬分叉的先例,社区不太害怕继续扩。往坏处想,如果到时候core说区块就是要尽量小,1-2M是小区块,3M就是大区块了,不支持。这种情况怎么办?现在是堵太久了,大家都要2M了。2M向4M的扩容,阻力可能更大,可能堵更久。这次新共识的达成,我们普通用户看不出来怎么能避免将来的拥堵。

讨论二:
纽约共识的第一阶段和第二阶段的阻力完全不一样

纽约共识的segwit2x方案,是先80%激活segwit,再硬分叉到2M。这里面的第一阶段,所有人都无异议。并且,不加任何修改的core节点,就和segwit2x的节点兼容。也就是说,在第一阶段,core节点可以完全兼容,并不需要重新部署segwit2x节点。segwit2x如此设计,也是为了维稳,怕节点占比最大的core节点因不兼容而掉线。

第二阶段,在Segwit激活3个月后,也就是2017年11月左右,就有了很大不同。Segwit2x节点内置了计时,一旦Segwit激活超过3个月,上限马上扩大到2M。core节点至今没有进行更改,到11月时会继续按1M规则,拒绝旧节点。近期,core方已经开始发布言论,倡议推迟2M的升级。这又给扩容增加了不确定性:如果到时大量core节点不升级,温和扩容派是不是还有勇气按计划进行2M?从之前流产的8M,2M,香港共识来看,温和扩容派继续妥协的可能性很大。

讨论三:
极端扩容派的进攻

简单说说扩容届的分派,

极端扩容派:主张直接扩容,反对Segwit方案。BU开发组,classic开发组,Viabtc矿池,Craig等

温和扩容派:一定要扩容,但可以接受segwit和闪电网络等方案并行。 bitcoin.com矿池 (Roger Ver),btc.top矿池(@江卓尔),Antpool矿池(吴忌寒)等。

保守派/中间派:态度模糊,言辞闪烁。Bcoin开发组,币信(吴刚),F2Pool(王纯),BW,Slush,Bitfury等

反扩容派:Core开发组,Blockstream, 莱特币开发组。主张不扩容,主张用隔离见证和闪电网络来解决交易容量问题。他们设计了Segwit,称将来基于Segwit的闪电网络系统才是比特币未来的样子。

从扩容争端历史上看,viabtc是第一个运行BU节点的矿池,也是第一个运行非core节点的矿池,属于极端扩容派。BitcoinCash由viabtc和BU开发组联手推出,直接8M,并且路线图包含了更大方案。由于是小算力分叉,为了存活再加入了降低难度的设计。难度过低会被恶意算力干扰,难度过高则无法运作。目前的情况证明这个设计非常棒。

8月1日以前,viabtc和http://bitcoin.com两个矿池明确表示会挖掘BitcoinCash链,大约一两百P,除此以外,没有其他大算力表示支持,节点也只有几十一百个。8月1日,未开挖以前,支持BitcoinCash的节点陡然多出来2400个,都部署在AWS云。开挖以后,又意外地出现来一个MCpool矿池,看起来算力至少有几百P甚至1E,连续挖出许多BitcoinCash块,让BitcoinCash分叉取得来初步的成功。在Coinbase Text里,这个MCpool还留下来一个香港的地址Genesis Block 269-273 Hennessy Road Wan Chai Hong Kong,google查询给指向一个青年旅社,网友戏称这是香港青旅矿池。经查证,在此地址的大楼里(就是这个楼里有个旅店),有一个还未开张的做比特币方面的公司叫Genesis Block,对方称挖掘BitcoinCash仅仅是挖着玩玩顺便宣传自己。这个说法很不可信,即便是只挖一天BitcoinCash,也是几十万美元的损失,他们也没有在其他渠道宣传自己,公司连主页都没有。这说的不可能是实话,这算力背后是谁依然是个谜。唯一能确定的,是有富裕的大户在支持BitcoinCash。

BitcoinCash链启动后,神秘算力开始匿名,不再继续留香港的地址。并且,出现算力反复撤出的情况。根据BitcoinCash链的设计,12小时出块数量不足6个即可下调难度。神秘算力通过反复撤出,重入,故意放空了几次12小时的区间,成功把算力降到原来的20%以下。这个动作让挖掘BitcoinCash的行为不再那么“烧钱”了(收入依然不如挖掘原链)。现在(8月8日),BitcoinCash链已经正常出块,每小时3~5个的样子,收益大约是原链的一半,其中四分之三是由匿名算力挖出的。

匿名的算力都有谁?起初最烧钱的时候,出来的MCpool是什么来头,2400个节点是哪来的?也许有一天能浮出水面。

Genesis Block公司

大多出块来自匿名的矿池,高调支持BitcoinCash的VIABTC仅占了11.3%

讨论四:
这个新的BitcoinCash

现在,BitcoinCash活下来了,获得了10%的价格。下面我们来讨论一下BitcoinCash相比于比特币的特点和优劣:

以一个山寨币的角度来说,BitcoinCash的筹码分配非常公平。从比特币链分叉出来,所有在8月1日以前持有比特币的人都一比一获得了BitcoinCash币。大量新山寨币都存在开发组和创始人手里拿了太多币的情况(如Zcash),目前唯有比特币已经充分分散到了市场里。
从开发路线来说,BitcoinCash的开发组基本就是Bitcoin Unlimited那拨人,XT和Classic也很支持。将来会走大区块快速确认低手续费的路线。自称中本聪的Craig也是强调这个路线。短时间内不会支持闪电网络之类的第二层的方案。个人认为BitcoinCash的路线在技术方面是更有前景的,闪电网络作为传统的第二层支付网络的改良版,基本是个死胡同。莱特币上线了Segwit,为闪电网络做准备,可是现在闪电网络没上线不说,连Segwit交易也完全没有人在使用,可以说是毫无效果。(唯一的效果是炒了一把知名度?)
从知名度来说,比特币从来就没有知名过。BitcoinCash作为大区块低手续费的币很有潜力成为支付货币,曾经支持比特币付款但因手续费过高而放弃了的企业,现在弄BitcoinCash技术难度几乎为零。一旦被市场接受,BitcoinCash的知名度会迅速超过比特币。
讨论五:

接下来的局面

Core开发组即将在节点中进行升级,其中一个更新是默认禁止连接btc1节点(Segwit2x方案的节点),这个动作会将跟随core版本的节点带离纽约共识,即不会跟随11月的2M升级。对于温和扩容派来说,这是个很头疼的问题。态度较软势力可能会更倾向于妥协而推迟2M升级。至少,温和扩容派的态度不会非常强硬。如果他们态度会强硬,当初就不会签Segwit2x这样的方案了。core节点毕竟是全网大部分的节点。11月BTC到底能不能扩容到2M,这是一个看点,我们看看接下来一段时间里,矿业对这个事情如何反应。

这一两天内(今天8月8号)还有几件事情要发生:

1,BTC主链难度调整,增加7%。

2,BitcoinCash币价格上涨,很快挖矿收益将超过BTC。

3,BTC主链Segwit锁定。这事已经是板上钉钉,segwit的激活已经没有悬念了。后面就看第二阶段的纽约共识如何运作了。

如果BitcoinCash价格上涨,出现算力流向BitcoinCash的情况,会不会对BTC的运行造成影响?BTC现在已经很堵了,如果在难度调整后又加上算力流失,会不会造成市场上的变化?算力流失会不会出现马太效应,以至于撼动了比特币的基础?这又是一个看点。

8月18号左右还有一个看点,就是BitcoinCash的常规难度周期调整,难度会再降,因为前面几天实在太慢了。

—–8月18日的更新——–

8月9号BTC难度调整之后,BitcoinCash没有动静,开始进入蛰伏状态。同时比特币一路引吭高歌,直冲过了4000美金。

如前文所说,预计下一个看点在8月18号左右,临近BitcoinCash难度调整的时候。昨天(8月17日),BitcoinCash突然发动,和BTC的价格比例一夜之间从0.065冲到0.13。在这个价位,挖矿BitcoinCash和BTC的收益基本是持平了。现在(8月18号)距离BitcoinCash的第一次常规难度调整还有200个块,应该是会发生在这个周末。BitcoinCash难度骤降以后,算力持有者如何反应,是个很有趣的看点。BTC上的SW功能还有5天可以使用,可能大家也会等一等。我是完全看不出来SW的激活能带来什么改变,BTC上仿佛是在试图重复LTC的SW激活行情。可是LTC的SW激活后几乎没有被使用过,急需改变的BTC链会不会能重复LTC的行情呢?短线市场真是谁也预测不了。

在BitcoinCash暴涨之际,Craig Wright 再次露面,提到这些:

重申了反对SW和LN技术(2017年8月16日 BrightTALK讨论的笔记整理 – 比特现金/BCC)
他将建立non-segwit矿池,一边在BTC链挖掘干扰SW的使用,一边在BitcoinCash链挖掘。
他要拿出3000万美金来买BitcoinCash。
他不看好Segwit2X,不看好BTC

今天就写到这吧,周末看看局面有没有变化,再来更新一点。

———-8月18日的更新结束—————-

———–8月20日的更新———–

BCH价格继续飞涨到0.2BTC后横盘调整,在难度调整前BCH挖矿就已经稍高于BTC了。今天,BCH迎来了第一次常规难度调整,由于前期出块较慢,这次调整将难度直接减半,调整后的难度只有BTC链的7%。这意味着, 同样的设备在BCH链上挖,得到的币是1/0.07,14.3倍于BTC链,而BCH价格有BTC的20%,以人民币计算的收益接近3倍于BTC链的挖矿。果不其然,几个小时内BCH大量出块,估计总算力估算也达到了1.6E。除了匿名的矿池之外,传统矿池目前只有Bitcoin.com, ViaBTC, BitClub,三家进来BCH挖矿,也许后面几天还会有更多的“正规军”入场抢钱。 机不可失,这个难度周期2016个块几天就要被挖完了。按照比特币的难度调整规则,难度提升一次最多4倍,过几天BCH的难度会被调整到BTC链的28%。简单推演一下这个难度周期结束时候的局面:

情况1,BCH价格远低于0.28BTC,这时挖矿BCH不如挖矿BTC划算,很多算力会撤回BTC,剩在BCH链算力不足的话,BCH链出块会减缓。极端情况下,会重新触及降难度规则(12小时不足6个块降难度,是BCH独有的规则)。

情况2,BCH价格继续狂飙,BTC链上涨触顶外加出块缓慢手续费飞涨(算力挪去BCH了),BCH对BTC价格高于0.28。这样的话,算力没有理由再折腾切回BTC,而是继续在BCH工作。这种情况对BTC伤害很大,对已经拥堵不堪的链是雪上加霜。

相比之下,读者可以看到,情况1对BCH危险并不大,毕竟难度降低也不是第一次了,出块缓慢目前也不会堵塞BCH链。相反,情况2对BTC伤害很大。之前我们已经谈到,BCH是有组织有计划的进攻方案,并且只有干掉BTC才能活下去。BCH背后的神秘力量必定要努力让情况2发生。Craig Wright 放话说一个月内要筹措2.15亿美金和3万BTC来挺BCH。这事有没有太吹,我们先不评判,至少从战术上能看出极端扩容派在朝着情况2推动。砸钱匿名挖矿,砸钱狂拉BCH价格,一夜之间把BCH交易量拉得超过了BTC和ETH。这BCH背后的人不论是谁,他挺舍得花钱的。

第一次回答的时候,我说BCH要看11月的Segwit2X的情况。现在我改变看法了。极端扩容派进攻的烈度远远超乎想象,仿佛不打算等11月的机会,而想在11月之前就强行占领高地。下面几天的看点:

周一(8月21号)矿池转向BCH的情况
周三左右,SW在BTC激活时的出块情况和市场反应
BCH难度再次调整时BCH的价格有没有超过0.28
下次更新就放在SW激活和BCC难度再次调整之后吧。

——–8月20日的更新结束————

———-8月25日的更新————-

算力拉锯战

从上次更新以后,BCH迎来了两次难度调整。

第一次的常规难度调整之前,BCH的价格已经飞涨至0.2BTC。常规难度调整又将BCH难度降到了BTC的7.x%,当时BCH的挖矿收益大约4倍于BTC的收益,大量算力短时间内涌入,BCH链算力一度达到3.5E算力,而BTC链上只剩下4.5E。几个大矿池都调拨了算力去BCH,包括btc.top, Antpool, F2pool, btc.com, batpool, viabtc 等。也有一些矿池比如bixin和BW,没有参与。BCH链大约六倍出块速度,每小时几十个块,同时BTC链减速了一些。BTC链立刻出现了巨大拥堵,一小时内确认需要的手续费徘徊在0.003到0.004,内存池一度堆积100M以上的未确认交易。

由于飞速出块,BCH的2016个块迅速完成,三天就遇到了下一个常规难度调整,难度被调到了BTC链的30%。在难度调整之时,BCH价格自由0.16BTC,难度提高后收益下降,算力也迅速撤回到BTC链,BCH链上几乎只剩下了神秘的匿名算力。匿名算力连续挖出几个块后也选择了撤退,连续几个小时BCH没有出块,昨天自动难度下降的机制再次介入,BCH难度降到BTC的10%。算力再次涌入,重复了上一轮的情况。之前分析过难度调整的情况,现在BCH价格没上来,所以发生了“情况1”,算力进进出出的拉锯。很难估计这样的情况还会持续多少个难度周期,如果一直这样持续下去,BCH甚至会提前进入“区块收益4年减半”的规则。

BTC 目前的情况

BTC一边,SW顺利激活,并且迅速有SW交易在链上出现。第一笔SW格式的交易发送了0.005个BTC,交了手续费0.001,成为笑谈。一些细心的朋友也注意到,SW格式的交易的体积比老格式的更大,也就是说想靠SW来一点点扩容的效果也是没希望了。当然,这也是意料之中。随着BCH带走了一部分大区块支持者,BTC一边目前分裂更加严重,基本分为两个阵营:

1,Core派。Core开发组已经正式声明不会支持11月底2M计划,将继续以1M区块上限为规则。据称闪电网络已经成型,并会尽快在莱特币上测试,并尽快一到BTC上来,解决拥堵问题。显然这是不可能实现的,具体请看 @辛大龙 的回答。

2,NYA派。强调纽约共识(NYA)应该被执行,并按照计划在11月底进行2M硬分叉。

舆论方面呼吁NYA的力量已经减弱了,主要支持者btc.top矿池也在提醒交易者1:1配比BCH作为保底,以免NYA失败后BTC崩盘。F2pool,BW,Bixin等继续态度模糊。

双方在是否要添加RP(replay-protection)的问题上又出争论。Core认为必须添加,更改交易格式,表示2M是另一种币(BCH就有RP)。NYA派认为自己是主链,名正言顺不需要这样做。但是最近NYA派开始有妥协,可能最后还是会由于“安全考虑”添加RP,这样市面上就有了三种相互无法交易的币:BCH,BTC-SW-1M,BTC-SW-2M从我看来,随着强硬扩容派自立山头到BCH,温和派开始hold不住局面,NYA能否按计划实现已经很难说了。

BTC的拥堵问题可能加速发酵

有人说Btc是堵不死的,我不认同。如果你看上文的扩容历史,自从2016年4月开始堵塞以后,以以太坊为首的山寨币已经占据的半壁江山。这还是在“我们马上扩容比特币,只是要商量一下方法”这样的承诺之下的。市场等待了将近一年半,现在SW(隔离见证)成功激活,市场的耐心可就不如从前了。特别是被core的宣传洗脑的人们,相信隔离见证后马上有闪电网络,闪电网络可以解决一切,比特币涨10倍。这些信念都会在接下来的几个星期被现实击垮:BTC依然堵,手续费一笔10美金比西联汇款还贵,除了交易没有任何使用BTC的地方。在股市里这叫利好出尽,局势不妙。

谁来破局

BCH价格低迷而不暴跌,BTC价格在非常悬乎的高位。局面仿佛暂时就这么僵住了。下面的走向如何呢?

BTC方面,11月底的2M如果能顺利执行,算是个大利好。2M虽然小,但效果也可以很明显了。隔离见证和闪电网络可以继续忽悠一阵子,可是闪电网络一旦上线就是利空,因为大家会马上发现没有用。隔离见证小概率可能也还有其他bug。虽然是在LTC上测试过了,但真有厉害的漏洞,发现的人是不会轻易公布的,而是会等到btc上再使用。

BCH方面,下面主要还是看背后的神秘力量打算怎么搞。BCH已经开始被商业方面接纳,其实是抢回了BTC丢掉的市场。由于BTC手续费过高,曾经支持BTC支付的商家都纷纷关闭了支持。这是很重要的一个被市场认同的渠道。另一方面就是价格战,这股神秘的力量有能力直接把BCH从0.065拉到0.25,现在还能稳住在0.14以上,这是不容小觑的。下一波大战什么时候会来,这也是一个看点。估计最猛烈的变化都会在11月底之前,要抢在BTC的2M利好以前搞事。

近期的一个看点是9月10号在北京的大会,BCH到底是不是比特币这个问题注定要成为焦点。挺有可能有重磅新闻要在会上宣布,毕竟这个时间点,太敏感了。

图:9月11号的会议预告,题目非常激进

——–8月25日的更新结束————

———–8月28日的更新———–

EDA争议

EDA即紧急难度调整规则,出块速度过慢即降低挖矿难度。

前两次的算力拉锯都是这个模式:

BCH难度下降到BTC的7%/10%
BCH价格保持在20%/16%,也就是说同样的算力现挖现卖的话BCH这边收益要高很多
BTC链上的算力切过来狂挖BCH,BCH出块速度6倍于常速,BTC出块速度减慢堵塞
2016个块两天就被挖完,BCH难度*4(常规难度调整最多只允许4倍),几乎所有算力都撤回BTC链
BCH触发难度下降规则,再来一轮
这样的局面有个问题,就是BCH出块太快了,2天顶两个星期,中间只停了一天又开始下一轮。照这个速度,个把月就能挖出原本计划1年挖出的币,加速了通胀,增加了矿工抛压(快进快出的算力往往是挖来了BCH就卖掉换BTC),甚至会让下一次区块奖励减半的时间点提前。这些状况在BCH社区内形成了很大的争议,以下简称EDA问题(EDA即紧急难度调整规则)。

EDA在设置之初,是因为BTC链难度过高,如果不下降难度BCH分叉出来后没有足够的算力来运作。但EDA的设置并没有加上时限,也就是一个会一直存在的功能,如果要拆除这部分代码的话会再次形成一个软分叉,所有挖BCH的矿工都要协调升级。这可能也会有阻力,因为不一定所有的矿工都能达成一致不降难度。EDA饱受争议的是“规则被矿工利用”。矿工通过联手停挖的方式,急速降低BCH,再收割2016个块的BCH“红包”。这样的行为被指为是“牺牲了BCH的前途来挣眼下的钱”。因此也有许多人提议拆除EDA。

其实拆除EDA并不解决任何问题。如果BCH难度高价格低,那么只有靠一两个大户不计成本地烧钱挖。一两个大户的算力不多,熬过一个难度周期后,价格不变,难度除4(常规难度调整下调最多是除4),一样会引发大量算力进来BCH链抢红包,然后两天挖完,难度乘4,算力撤出,再靠大户慢慢熬下一个周期。这样的大户谁当得起?

那么,如何优雅地利用EDA规则?要诀就是,把难度控制在高于BCH的价格,但又不高得离谱。BCH的难度略高于价格,现挖现卖就不划算了,追求短期收益的算力会继续挖BTC链。但又不要太高,免得让挖BCH链的大户承担过高成本。对于长期看好BCH的大户来说,慢慢地挖矿是一种很好的吸筹的方式。匿名的矿工的几个收币地址上已经挖到了上万BCH,一个都没挪出去,这吸筹的决心可见一斑。比如这两个:

https://blockchair.com/bitcoin-cash/address/17Wk4GPKw9nZ9PbspzaxN3fv1L2m9NA9dghttps://blockchair.com/bitcoin-cash/address/1BgatB78WrFLdCgnPnBqiDcNFFA46jkPZe预防EDA发生很简单,EDA的规则触发的条件是“倒数第六新的块的出块时间在12个小时或很多之前”。也就是平均每小时半个块的速度,1/12于常规的10min出块速度。只要维持当前难度的1/12也就是8.3%的算力,EDA规则就不会触发,就不会突然有许多撸短线的算力进来。以BTC链6.8E算力/BCH链难度是BTC链的15%为例,那只需要有85P以上的算力愿意暂时赔本挖BCH(说明长期看好BCH),EDA规则就不会触发,难度会在几个月后才下调(除4)。更理想的局面,如果愿意暂时赔本挖BCH的算力有更多,BCH可以正常10min出块,2周难度调整,就合大家熟悉的BTC一样了。

图:三轮难度下降造成的算力潮汐。

非常有趣的第三次EDA

昨天的第三轮EDA,精确地做出了如上分析的动作:在价格是0.13的情况下,难度被降低到13.4%。别忘了,除了常规的12.5个币的奖励,挖BTC每个块里的手续费还有可以4个币,BCH由于不堵所以几乎没有手续费,这样算下来挖BCH是略不划算的。如此精致的操作,让人不得不怀疑,第二次EDA的时候把算力压到特别低,是不是匿名矿工操作失误或运气极其不好造成的。

EDA难度调整之后,BTC链和BCH链的算力分别大约是6E和1.5E,BCH链上的算力主要是神秘的匿名算力(大约七八百P,和之前差不多),非匿名矿池主要是比特大陆系的几个矿池。BCH链居然达到了大约每小时12个块的速度,也就是说相当一部分的算力认为0.13这个价格是低估的(特别是支持扩容的比特大陆系),大胆在这里挖矿吸筹。推演一下这个难度周期里的几种情况:

BCH价格维持稳定,算力照这个节奏,难度将在一周后翻倍,届时如果BCH价格还是这个样子(0.14BTC),可能算力会撤出一半到一大半,BCH减速到20 ~30 min出块,这个速度依然是很好用的一条链,手续费和速度都会优于BTC链。如果到那时算力没有怎么撤出,说明算力依旧长线看好BCH价格再0.3BTC以上。
如果BCH价格“温和”上涨到0.2BTC,同情况1,不会从BTC链吸引太多撸短的算力。
如果BCH价格继续下跌到0.1以下,BCH可能需要再进行一次EDA保持存活。
如果接下来一周BCH暴涨到 0.3 ~ 0.6BTC,依然会出现大量算力短进短出的情况,这个周期被迅速挖完,难度调整乘以4,到BTC的54%。下一个难度周期就又可以恢复“挖BCH略亏”的情况
如果接下来一周BCH暴涨到0.6以上,那即便难度调整后也是BCH划算了,算力就不会回去了,BTC也就崩盘了,可能性较小。
综上,接下来BCH价格上涨带来的算力潮汐问题已经基本控制住了,下面一段时间BCH的出块都不会出现忽快忽停的状况。如果BCH价格继续狂跌,只要匿名算力还在利用EDA规则正确调整难度,BCH链的运作还是能保下来。

我的猜测

BTC看起来暂时不会崩盘了,大结局应该在11月初以后。我猜测下面这个星期:

BCH的走势是横盘或温和上升,不触动短线矿工的算力
BTC堵塞问题继续好转一点。BTC走出双顶形态,价格开始下滑。
最近可能出现的新闻:

BTC方面:继Slush后,又有其他矿池退出NYA(放弃2M升级),
BCH方面:转账,支付领域快速扩张,

图:第三次EDA后的算力分布

——–8月28日的更新结束————

——–8月30日的更新————

本来以为这几天没新闻了,结果今天又出个大新闻,来更新一下。

行情方面,BTC没有双顶,反而创了新高。BCH跌的有点狠,大家都挺揪心的,撤退的也不少。
大新闻:“上古比特币”现身
一批“上古时期”的比特币被挪动了。这一批币每个地址有50币,一共60个地址,3000币,都是挖出来的矿(当时的区块奖励是50币),挖出时间是2010年1月底。

https://btc.com/4b60dc9cd051f4489420018bf52ead4f1f1377b0e0b4f2bc552f31b2649230ab这些币进入了两个3字头的地址。Core的支持者解释为这是有早期开发者在支持隔离见证技术(隔离见证地址有时候是3字头的)。这都是忽悠!我们继续追查这进入第一个地址的1000币,会发现这1000币随后被清空,组合成了一个多输入多输出的交易。其中输出大多是零散交易。这是非常非常典型的交易所动作:给你一个3字头的多重签名地址充值,充值后币被组合到一个集储存/提币一体的多入多出交易。我有十足的把握,这3000BTC被充入了一个交易所。而同地址上的BCH没有被挪走。比如:https://blockchair.com/bitcoin-cash/address/1JtVnHAmAbmVXc93vfnfKnMK9yUFsQWHnd

一个2010年1月的矿啊,那时候中国还没有人知道比特币,比特币也还没有价格。2010年5月才有人用10000个比特币买pizza券的事件,是比特币第一次与实物交换。这事有老帖为证https://bitcointalk.org/index.php?topic=137.0

2010年1月底时,参与比特币的人屈指可数,这不是中本聪,也是中本聪的熟人。前期没太多竞争者的时期挖到币很容易,中本聪手头的币应该百万币起。这些币从挖出到现在都没有动过,却在这个时间点进入了交易所,对BTC来说应该是巨大震撼才对。3000币本身在交易所不一定能搞出什么动静,但是创始人级别的开发者现身抛BTC是一个很有导向型的动作,其他的手握大量币的早期开发者可能也会跟进,这是足以让BTC崩盘的事件。下面应该继续关注这个大事件,如果中本聪继续搬运更早的币,下一批可能是更早一个难度周期的币,更有威慑力,比如: https://btc.com/1NGFUjKkAXZhRCTf3NiDUgATTmNCYnXykv

——–8月30日的更新结束————

——–9月21日的更新———–

由于一些众所周知的原因,过去一段时间里BTC和BCH都跌的很惨,几乎腰斩。9月11号在北京的Bitkan大会也改到了9月20号在香港开。总算尘埃落定,中国方面的情况:

交易所全关
挖矿暂时还是合法的
这一轮固然是引发了暴跌,但这并不是BTC或者BCH的问题,而是中国的投资者被迫卖币撤资的结果。也许这一轮的影响很快就能够过去。从一个全球的视野来说,这对比特币未尝不是一件好事。中国的退出给了日韩欧美更大的发挥空间,也去除了“中国大妈泡沫”的风险。对于在国内的投资人来说,确实以后几年比较麻烦了,如果价格上涨,可能要再加价不少才能购买到。大的趋势上来说,我认为BCH的生命力更好,下面会继续讨论这一点。

香港大会

香港大会聚集了比特币届的 各路关键人物。这次大会的内容还没有完整流出,从目前看到的内容,我们可以知道,BCH的支持者阵营在扩张。

对于钱包和支付商来说,支持BCH是非常轻松的选择,由于BCH的交易手续费低不堵塞,在小额交易方面体验很好。目前数字货币的支付主要就是小额的支付,买贵的东西也买不了。BCH的支付渠道已经在很迅速的铺开,大概率会成为第一个真正进入欧美日韩支付市场的数字币(BTC的支付应用去年一开始堵塞就夭折了)

几个关键人物的态度也很有趣。矿业领袖吴忌寒,原本是比较温和的妥协Segwit和2M扩容,现在更倾向于BCH。同样的温和派还有Roger Ver,现在也是一个劲儿的安利BCH。极端扩容派的精神领袖Craig(我觉得他就是中本聪),态度更加极端了。在问答环节,Craig说道:“I dont think the other is bitcoin anymore.” 他强调比特币的核心之一是数字签名链条。现在BTC已经加上了Segwit,签名链条已经断了,一部分签名被移到了主链之外。

路线的分裂

香港大会上,大家已经基本认同11月BTC会再次分裂成BTC-SW-1M和BTC-SW-2M两个版本。如果1M的市场份额很小的话,2M版本对BCH可能有一点威胁。但我的观点依然是,BTC的2M太小,也太晚,并且这种磨叽的态度和模糊不清的路线图,前景堪忧。我认为Core已经把许多人对比特币的看法给带歪了,1M还是会有许多支持者的。

最近BTC又不堵了(没人想用了,也不打算扩张支付市场了),看下图,9月份以后不太堵了。这简直是灾难。BTC堵还不是最可怕的,最可怕的是又不堵了,就是现在的情况。好像一个人撞了几次天花板就放弃继续往上爬了。BTC的路线模糊不清,一边要用主链扩容2M来缓解拥堵,一边又在寻找主链扩容以外的技术,比如隔离见证,闪电网络。现在core已经不提“隔离见证就是扩容”了,开始转移话题,说隔离见证主要是为闪电网络铺路,闪电是扩容。

相比之下,BCH的路线非常清晰,就是扩张支付领域,多拉小额用户,坚持扩容主链。香港会议上nchain(就是Craig的公司)表示BCH主链完全可以代替VISA级别的支付系统。BitcoinUnlimit开发组现在和nchain合作,开始测试1GB的区块,大约每秒3000笔交易,已经比VISA系统快很多,当然还比不上双十一的支付宝。

既然说到1GB区块了,我叉出来谈谈刚才那个话题:Core已经把许多人对比特币的看法给带歪了。Core长时间宣传小区块对去中心化的重要性,曾经还说2M可以,现在2M也不认可了。主要理由是1M区块对节点服务器的性能压力小,人人可以运行节点,因此比特币可以维持最好的去中心化。支付困难的问题交给第二层网络(闪电网络和侧链等),主链做结算层。这其实和中本聪的早期设计完全相反,几个关键点

比特币是现金支付系统,不是结算层。比特币的目的是去除银行,不是造一个新银行。
手续费应该仅用于预防攻击,每个块还是可以留有一部分不需手续费的交易。接近于现在一些软件服务的会员制,免费也有够用但限制的服务,要高质量服务(快速确认)的话要付一点费用。
用区块链技术保障所有人的财产安全,而不再用银行的信用系统。
只有Server Farm需要设立节点,并通过挖矿来提供交易(就是现在的矿场)
只有发展初期需要人人设立节点并CPU挖矿,成熟后用户只需要SPV钱包而不需要设立节点。
比特币的去中心化是由挖矿实现的,不是运行节点。
(下图是一封旧信,当年中本聪在邮件组里写的):

所以,一个理想的BCH的系统应该是:

经过支付领域的扩张,用户很多,主链交易很多
区块上限足够高或甚至没有上限,主链交易一般不会达到区块上限,因此手续费很低也会被确认,少量的0手续费的交易也会被接受。
用区块链技术维持安全,比传统的银行更安全,成本更低
节点由专业的服务器运行,运算速度和网速都很快。这个成本主要是交易所,支付商,矿池这些得利益的来承担。
普通用户使用SPV(简单支付验证)的模式,随机连接8-10个节点,只下载和验证和自己有关的交易。
交易所,支付商,矿池遍布全球,节点很多,个别国家出问题也不会影响。普通用户每次连接多个节点,有个别节点使坏也不会影响使用。
整体规模很大,人人都用,根本无法被关停或干扰。
从这个愿景来看,每秒3000笔目前的技术下根本不是问题,每天144GB的区块数据,这个量给一个互联网方面的公司来说根本就是小零头。如果BCH发展到VISA这种规模,全世界各地乐意搞节点的公司肯定是多如牛毛,节点只会比现在更多更分散,而不是core说的节点会中心化被控制。

现在BTC已经彻底被core带歪了,要走向一个奇怪的路线:

主链每秒3笔,仅用于结算
有大量普通电脑建立的节点,网速和运算速度堪忧,
用传统的银行模式或充值卡模式来交易(第二层交易工具如闪电网络)
数字币还在发展的早期,现在BTC的1M每秒3笔也许还能用一阵子,2M也许还能多用一会,但没有清晰的路线,没有扩张的心志,这前景堪忧。我看BCH前景一片大好。

算力拉锯

BTC和BCH算力拉锯还在继续,不过好像稳定挖BCH的算力越来越多了,目前看暂时应该已经不需要再像从前那样折腾EDA了,目前BCH难度调整后速度略慢(20-30min 一个块),完全可以接受。全世界大半的算力都在中国,中国大半的算力在四川,四川大半的算力在康定。这次交易所的风波已经吓到大家了,一开始几乎没有人相信会下手这么快,几个星期之内就关停所有交易所,包括不涉及人民币的BTC/BCH交易。现在已经有很多忧虑,如果继续出现宣布挖矿违法,可能算力要很不稳定一段时间,直到这些机器在海外找到新家。

就算没有行政干扰,如果四川再遇到天灾,也会在一段时间里影响算力的。难度下调确实是btc难度调节机制的一个空缺。长久以来算力只涨不跌,而且是平稳上涨,一直没出问题。2016个块调整一次难度,在升难度和降难度的时间上是不对称的。BCH等于是提前测试了btc突然失去大部分算力的情况,eda的机制也还算可行,BCH这边也还在研究更好的调节算法。BCH的大区块上限(慢速出块也不堵死),大量匿名算力(抗行政干扰),和难度调整机制,在极端情况下是比较有抗力的,更符合去中心化的“不怕部分系统出错”的精神,这是个优势。

BTC方面

Segwit2X

2X的重放保护依然在争论中,但无论有没有这个,都会有办法在BTC分叉后把1M链的币和2M链的币分离出来,分别交易,像现在的BTC BCH一样。如果1M链获得一定的价格,肯定要乱一阵子。

闪电网络的完成度很低

这是个很有趣的消息。在激活SW之前,一直是在宣传说闪电网络已经开始测试,已经几乎准备好了,只等SW激活铺路。现在发现其实完成度很低,并且和之前介绍的完全不一样。闪电的开发者指出

闪电也要有容量限制,将来也有扩容问题
所有通道的所有交易都要广播给所有人,数据流也是不小的。这个和之前宣传的普通人可以成为闪电节点,每秒万笔交易的说法完全不同。既然也是广播所有交易,那干什么不直接在主链上搞?
暂时还上线不了
来源 Lightning dev: “There are protocol scaling issues”; “All channel updates are broadcast to everyone” • r/btc

关于闪电网络,非常推荐大家看一看同个问题下 @辛大龙 回答。

看来闪电网络是指望不上了,除了炒作币价,BTC现在该拿什么留住用户?没法一直骗下去的,拿不出真材实料的发展,市场自然会另寻出路。相信将来大家一定会明白过来,BCH的路线才是对的。

短期内的情形,后面就看11月份的三链大战吧,短期内(几个月内)哪个币占优势还真不好说。欢迎评论讨论!

——–9月21日的更新结束————

——–10月16日的更新—————

最近继续满仓套牢BCH,BCH阴跌,BTC 飞涨,心里有点难受。

BCH的 EDA 修改的讨论

BCH有由于当时是小算力分叉出来的,当时为了存活加入了 EDA(紧急难度调整)规则,规定了如果倒数第六个块在12小时开外,就降低难度20%。大家也看到了,这个机制会造成算力的震荡:没算力不出块–》减难度–》太容易出块了算力全来 BCH了–》难度周期提前结束–》加难度–》太不容易出块了算力都去 BTC 了–》没算力不出块。大致局面如下图,难得安稳了一段时间,是因为难度恰好和币价相当,挖两边没什么区别

EDA 的毛病主要是两个:

速度不稳定,一天是1分钟1个块,一天是1小时1个块。虽然 BCH交易量小且大区块设计不会堵,但是一小时不见一个块还是很头疼的。
整体速度偏快。算力高潮的时候两天就能刷掉一个2016个块的难度周期,算力低谷的时候一天就能把难度降下来。整体来说这样的震荡会让 BCH通胀快于 BTC, 现在 BCH已经领先六千个块左右,大约是计划中一个半月的量。提前把这些块挖出来,会给市场带来更大的抛压,对价格不利。有趣的是,匿名矿工和一些大矿池的收币地址上都在八月以来屯了几万个新挖的币没挪动,并没有直接抛向市场。问题来了,他们想干什么呢?
BCH社区已经基本达成共识,EDA 机制是要改一改的。这个修改将是一个硬分叉。只是怎么改法还在讨论中,目前大概有这么几个主流方案,给大家介绍一下:

Tom Zander的方案 (Bitcoin Classic开发者)
争取最小程度的修改。 增加一个反向的 EDA,在出块过快的时候,加难度。原始的2016个块的难度周期依然保持。
优点:
– 简洁,在算力稳定的情况下两个 EDA 机制都不触发和多年来的比特币难度调整还是一样的。算力不稳定的时候也能及时控制出块。
缺点:
– 模拟实验结果表明,两个相反方向的 EDA 机制之间还是会有震荡的情况

deadalnix的方案(Bitcoin Unlimited开发者):

类似于 K 线图里用的 MA 均线,一根快线(2小时)一根慢线(2016个块,正常速度2周),如果快线慢线基本重合,那按照慢线每个块调整一次难度。如果快线的平均出块速度远快于或远慢于慢线的速度(差25%以上),则按照快线的结果进行逐块调整。

优点:

– 移动平均逐块调整的算法是从 zcash 那里抄的,不会有什么问题。只有快慢线的设计是新加的。

缺点:

– 设计可能过于复杂了

– 快慢线的逐块调整,完全改变了比特币的难度调整习惯

– 测试表示,快慢线的设计在某些极端情况下还是会出现震荡

Kyuupichan方案(好像也是Bitcoin Unlimited开发者):

根据之前6个块的出块情况,逐块对难度小调整一下,或升或降一点点。每2016个块也进行一次难度调整,但是只能升难度不能降难度。

优点:

– 算法简洁,难度上下在小窗口(6个块)内是对称的

– 模拟结果表示非常稳定

缺点:

– 2016个块的难度调整是单边的,不知道会不会出问题

– 没有其他币用过类似的算法,

方案的优劣目前还在继续讨论中,都是旨在实现:

难度在大时间范围内(大约两周)和算力匹配
算力突然增加和突然降低时候(大约半个小时一个小时),难度及时变化,控制出块速度
不造成震荡效应让算力进进出出。
另一个讨论就是,这个修改是在 BTC的2M 分叉前做还是分叉后做。分叉前做那时间肯定是比较紧张了,好处是可以不用趟1M 和2M 算力之争的浑水。分叉后做的话时间充裕,可以再多讨论多测试。我估计是会取后者,明年再做。

1GB区块的首次测试

前面回答提到的1GB区块测试上线了。1GB 区块意味着和 Visa 相当的交易运载量,眼下肯定是用不上了的。区块内的交易,不仅仅可以做转账,其实也还有许多其他的用途,比如公平的网络赌博(在线赌场无法控制随机结果,无法出千),知识产权的保护(将自己的知识产权以交易信息形式写入区块链,无法伪造或被修改),智能合约(比特币现有的脚本已经可以进行类似于以太坊的智能合约)等等等等。这几天 BCH链上出现几个很大的区块,就是有一些组织在进行测试一些交易外的应用。这些研究原本都有,但是在 BTC 手续费上升以后就都暂停了。无论如何,1GB 区块是个很有趣的测试,给大区块发展的前景探探路。这个测试是 nchain和 BU 开发组合作搞的,简单说测试的结论(来源:First 1GB Bitcoin Block Has Been Mined on Testnet):

每个1GB 区块对网络传输的要求大约是20-50M (使用了xthin技术节省传输的数据量)
矿池每秒可以接收1万笔以上的交易
测试用的矿池并没有很高端的设备,大多是64G 内存配SSD的VPS,甚至有16G 内存的台式电脑。开发者称当前市场上高档点的笔记本电脑都可以处理1GB 区块的比特币节点。
因此,根本没有必要去搞第二层支付系统比如侧链和闪电网络。只要扩容,闪电网络所吹嘘的每秒万笔已经可以实现。

另外一个地方看到的闪电网络的开发组访谈,记者提问开发者闪电网络什么时候能用,开发者支支吾吾一会以后说“大概一年半吧”,和1GB 区块测试比起来闪电网络简直就是个笑话。

谈谈11月底的“大乱子”

BTC 目前是个“怀孕”的币,这个月要有一个 GPU 挖矿的 BitcoinGold 分离出来,11月底2M 也要和1M分开来。目前 BitcoinGold 还没有上交易所不知道价格,2M 在期货市场上大概是1000美金。也就是说现在持有 BTC 到11月底就有三种币了。也有人认为,正是这样的局面,逼本来不是100%保证金的钱包和交易所不得不买入 BTC 来预防挤兑,造成了最近的上涨。

我对11月底纽约共识的执行依然是不抱希望。从 BCH的算力震荡来看,在币价不够高的时候,根本没什么算力愿意来挖,而 BCH一降难度,算力全来了。如今期货市场上1M 币比2M 币贵那么多,如果这个价格维持到11月底,到时候各大矿池也就是象征性的去挖一下2M 遵守一下共识,大部分算力还是会去挖赚钱的币。还有 SLUSH 和F2Pool 这种大矿池已经明确表示不鸟纽约共识的,算起来到时候2M链 的算力很难超过1M链。由于没有 EDA 机制,算力一小就活不下来。

整体来看,现在SW2X 一方的势力已经非常弱了。

开发方面,最近2M一方依然是在讨论重放保护的代码。2M 软件的开发非常混乱,左中右派混在一起,声音很多,尤其是 core 的声音特别大。Core 主张2M 链上一个类似 BCH 的重放保护,让2M 彻底和1M 链隔离开来。但纽约共识的精神,又要求2M 的重放保护不能破坏现有 SPV 钱包的兼容。现有的 SPV 钱包比如 Electrum,MultiBitHD等,是无法直接支持 有强重放保护的BCH的,但是这些 SPV 钱包都不检查区块大小,所以直接1M 改2M,只要2M 算力过半,这些钱包能自动用上2M 链。现在2M 开发这边,是又要迎合 Core 加上一个重放保护,又要迎合纽约共识不破 SPV 的兼容,想出来几个非常诡异的法子(细节就不介绍了)。上星期代码里 merge 进去一个方案,后来发现一个和闪电网络不兼容的 Bug又回滚了,现在还在讨论中。但上重放保护基本已经是板上钉钉了,只是具体方案还在讨论。这种刻意绕开 SPV 兼容性问题的重放保护几乎一定会给第二层设施(侧链和闪电网络)带来Bug,2M 一党里许多人是又想用2M 来解决眼下的拥堵,又想在远期用第二层设施解决流量的问题,各种问题纠在一起非常难搞。这样的开发环境,就是成功扩容了,以后也是继续被第二层方案把持着,不会继续扩容到1GB 区块。

交易所方面,很多交易所还没有表态,但现在期货的价格摆在这里,交易所直接不支持1M 链是不太可能的,到时候肯定大多交易所会两个都支持。如果2M 在交易所那里没有拿到 BTC 的名分(品牌效应),那也就和 BCH在一个起跑线上。历史经验是,比特币出乱子,山寨币获益,从 BTC 拥堵开始,各路山寨币就龙腾虎跃,很多新入场的投资者根本就不投比特币。

我猜大佬们已经开始给自己留后路了。 BCH算力震荡期间便宜挖到的币基本没有抛向市场,看来这些算力背后的人并没有放弃 BCH。BCH和其他山寨币最大的优势就是继承了 BTC 在8月1日的余额,早期入场的万币侯们根本没地方抛掉这么多BTC币,如果BTC出问题,无缝切换到 BCH对于他们来说是最理智的选择。 之前2010年挖出的“上古比特币”现身,也是只卖 BTC,保留 BCH,可见一斑。对于这些势力来说,把 BCH压在一个 K 线图很难看的局面下,是很有利的,反正自己已经在车上了,自己屯着不卖还使劲挖,尽量要让别人提前下车,在低位就抛出筹码。这个低位能有多低,我不敢猜,以前我猜是350美元左右,目前已经跌破了。这个价位,如果我不是非常看好大区块的未来,以及非常看空第二层支付的方案,我肯定已经割肉了。BCH要涨,一定是等 BTC 风头弱下去的时候。现在 BCH市值小,流通也少,BTC 风头正劲 K 线好看,BCH就很不抗跌。等 BTC 显出弱点,市值再次开始流失的时候,只要 BTC 有10%市值流向 BCH,那 BCH就翻倍了,一旦开涨就是数着倍数来涨,像前段时间的以太坊一样。BTC 的市值流失几乎是一定的,我看BCH比以太坊和莱特币更容易接收到这流失的市场份额。

——10月16号的更新结束———

——10月23号的更新———

BCH这边,bitcoinABC 开发组已经公布将在11月13日硬分叉更改算法,应该是会采用deadalnix的方案。代码公布以后我会再详细给大家介绍。目前赔钱挖BCH的算力很集中,更改算法也不是很大的路线纷争,应该不会因为这次硬分叉升级被分裂成两条链。

推演一下11月15号前后Segwit2x 的几种局面

情况1:顺利升级。 Segwit2x 获得全面支持,老链停摆,在交易所期货BT2分叉前获得比特币价格, BT1归零,分叉后Segwit2x 链继续使用之前的 BTC 简称。这种局面是温和扩容派的全面胜利,成功在 Core 的权威压迫之下成功进行了一次 Core 不同意的升级。对 BTC 来说这会是挺提振信心的事情,短期内是巨大利好。长期来看依然有缺陷,Segwit 的问题,2M 限制,未来路线的模糊以及 Core 的继续干扰还都存在,前文已经分析了很多了。无论如何,从目前各方的反应来看,这种情况已经不太可能出现了。
情况2:直接失败,或拉锯后存活。Segwit2x的期货价格一直维持在现在的水平直到分叉日,算力不得不面对“守约挖 Segwit2x还是放弃纽约共识接着挖老链”的问题。 BCH上面已经预演过多次,愿意赔钱挖一条链的算力不会超过1E,而且这些极端派现在都在 BCH,Segwit2x 恐怕没有这么极端的算力,乐意赔钱挖。由于 Segwit2x 不像 BCH 有难度下降的机制,赔钱挖矿的时间是数月而不是数日,这更让“信心算力”的出现变得不可能。如果“信心算力”不能过半,恐怕支撑数天后也是要放弃。这种情况下,履行纽约共识的正确姿势是:部分算力支持Segwit2x,部分算力偷偷去老链或BCH来度过缓冲期,等待局面稳定。纽约共识并未约定不许去挖别的币种。目前也有 Slush 和 F2Pool 没有声明对纽约共识的支持,他们有1.4E的算力很可能会直接留在 Segwit-1M 链。这种情况下,Segwit-1M 的 Core 链 和 Segwit-2M的纽约共识链的价格会出现一定程度的拉锯,几天到一两周内能够稳定住价格的一方会胜出,价格低的一边会因为失去算力而停摆。由于 BCH会在 Segwit2x 硬分叉之前把难度算法修改为移动平均法,突然冲入 BCH的算力也捞不着什么好处,这会让1M 和2M 链的算力斗争更剧烈更快,因为算力的每一秒钟都是在烧钱的。最剧烈的情况,就是还没分叉算力就已经统一到一条链了,根本不出现真金白银的对峙。所以我认为,只要 Segwit2x 的期货价格不反转,基本到分叉日基本就没戏了。Segwit-1M 链胜出,温和的中间派必定将全体倒向 BCH。如果 Segwit-2M 链胜出,Core 一派倒是不一定会退出,很有可能会自己再次硬分叉降低难度或改为 POS 来存活。也有可能在2M 的基础上继续宣传控制区块上限,鼓吹闪电网络等第二层结算方式,继续寻求话语权。
情况3:和老链同时存活。Segwit-1M 链和Segwit-2M 链在分叉前夕期货价格精准的1:1持平,分叉后算力也持平,两条链都存活下来,进入长期的拉锯战。接下来价格高低就看BTC 这三个字母的品牌在哪边了,这种时候品牌效应还是很有用的。我不相信这种情况能出现。
情况4:巨型黑天鹅,SW出现BUG。SW 有个“众所周知”的 bug,就是这条链会被>50%的算力攻击。有人说不是所有虚拟货币都这样吗?不是的,SW 的51%攻击和其他币的51%攻击是不一样的。
一般币的51%攻击:我在高度12345上发布一个交易,从 A 地址到 B 地址发送1000比特币。同时我用自己的压倒性的算力,重新挖出一条12344-12345-12346的链,不包含刚才的交易。这样 B 一开始以为我付款了,后来我付款的那个块被孤立了,最终成型的最长链里不包含我的支付。这也是为什么各大交易所都要求3个确认,6个确认,就是防止出现你发送币给交易所的交易被孤立。一般认为6个确认后就几乎不会出问题了。小额支付(几万美金以内)经常1确认甚至0️确认(块不满的时候)也可以,因为对于小额交易你没有经济动力去攻击。小额没赚头,大额肯定会要求多个块的确认很难做到,也没赚头,并且攻击窗口就是交易发布后的那一两个小时,过去了就没法攻击了。所以至今比特币没有发生过真正意义上的 51%攻击。
SW 币的51%攻击:Segwit交易带来了“AnyOneCanSpend”地址,它实质上是一个空白的交易签名。这种交易的签名被挪移到了附加的见证块里,因此这个技术叫做“隔离见证”。当然,虽然这个交易的签名不在这里,矿池肯定还是会去附加的见证块里找出来核对验证。在大家都核对验证的情况下,安全性和以前是一样的。控制算力超过50%的矿霸矿池,可以直接放弃附加见证块的核对,并把AnyOneCanSpend地址里的钱转给自己,然后孤立那些去核对见证块的矿池。由于 Segwit 是软分叉升级,原来的那些没有 Segwit 功能的 SPV 钱包和全节点钱包还是可以用的,这些钱包也没有核对附加见证块的能力,这时候这些钱包都会认为矿霸的链是合法的最长链。和一般币的51%攻击巨大的区别就是:一般币的51%攻击只能退回自己的一笔支付,而SW 币的51%可以花掉别人账上的钱,而且这钱的数字是从 SW 激活起慢慢积累变多的。SW 运行的越久,SW 交易运用的越多,这笔钱的数量也就越大,有动力攻击的算力也就越容易找。参考资料:Risk of SegWit – Mining Cartels – nChain

如果,当然这不太可能,我是说如果,在Segwit-1M 链和Segwit-2M 链算力拉锯的时候,有神秘的算力突然介入,在其中一条小算力链上实现了这个攻击,另外一条大算力链活下来以后会受多大影响?只要在小算力链是实现一次,就可以开始铺天盖地的宣传 SW 的 丢币bug,以后谁还敢用 SW 格式的交易?Segwit 的部署是不可逆的,大家都不用 Segwit 格式交易了,还是必须保留 Segwit 的代码以验证之前的那些已有的 Segwit 交易,没法拆除这个有 Bug 的功能。承诺要基于 Segwit 实现的闪电网络自然也黄了,连莱特币也被 Segwit 功能污染了。等于是把所有带 Segwit 功能的币种的市场都摧毁了。这个攻击的方法是公开的,有匿名算力趁算力争夺期间使坏这不是完全不可能。
——10月23号的更新结束———

——10月30号的更新—–

BitcoinCash 的难度调整代码

现在离11月13号的 BitcoinCash 升级还有两个星期, http://bitcoinabc.org 宣布代码已经最终测试完成,新版软件将在11月1号提供下载。接下来就是大约两个星期的时间让 BCH的矿池部署。

最终选择的方案是 Amaury Sechet( deadalnix)写的,摘要如下:

1,最近的三个块,分别标号为1,2,3,取他们的发布时间的平均数。

2,取大约一天前的块,分别是144,145,146,取他们的发布时间的平均数。

3,比较这两个发布时间的平均数只差,和预期的比值如何(预期应该是24小时)

4,下一个出块的难度,就按这个比值来调整,每次调整最大是*2或*0.5。

5,之前的2016块调整规则,和8月1号加的 EDA 规则,都不再使用了。

修改难度算法以后,立竿见影的两个效果:

平均出块时间稳定在10分钟左右,
不再有算力潮汐的现象,BCH的算力和 BTC 的算力的比例将稳定在价格比附近。
这次升级应该会比 Segwit2x 的升级稍早一两天。现在大戏都排到11月中旬这几天了,做好心理准备!

由于对 EDA 的修改这事基本没有争议(只是在算法选择上有过争论),所以这次硬分叉不会分裂成2种 BCH。如果少量继续维持旧链不升级,旧链能以小难度运行下来(EDA 规则),但目前的情况并没有经济利益可以支持足够多的人做这事。

从8月下旬开始讨论修改 EDA 开始,BitcoinCash 社区从开始提出讨论到测试评定完成只有2个月。提了不下十个方案,Bitprim 和 nChain 都对几个方案进行了大量的模拟测试,最后选择调整速度和稳定性比较均衡的方案。从代码正式发布到分叉点也只有2个星期,这还是被 core 妖魔化了的硬分叉升级。这样的效率在 BTC 上是从来没有过的,社区一直在吵吵要不要扩容,怎么扩容,也一直没有可以令人信服的证据表明扩容有危险,就这么拖了两三年。扩容2M这样的非常简单的改动,也被放在 Segwit 激活后三个月。

——10月30号的更新结束———

——11月9号的更新———

温和派认输,宣布取消Segwit2x

温和派发了邮件,宣布“暂时搁置” BTC 的2M 硬分叉([Bitcoin-segwit2x] Segwit2x Final Steps)。非常意外。意外的不是 Segwit2x 失败,而是认输的这么利索。原本以为总要出几个块意思意思,或者至少撑到最后一两天。这提前一个多星期就这么利落的认了输,真是没想到。如之前所说,Segwit-1M 链胜出,温和的中间派必定将全体倒向 BCH。后面我会讨论一下中间派的势力和影响。目前在 Segwit-1M 链上,core 已经没有了对手,没有了争议,他们会不会有点失落呢?

BCH 难度调节算法升级背后的阴谋?

前些天BitcoinClassic 开发组的 Tom Zander 四处抱怨, 说 BitcoinABC 开发组定11月13号硬分叉,选 deadalnix 的难度调节算法,这些事都没有事先和其他开发组商量,而是突然公布,并且公布后矿业毫无惊讶地表示完全支持。Zander 指责这背后有阴谋,肯定是暗箱操作,闭门会议的结果。要不要赶在 Segwit2x 分叉前升级 BCH 的难度算法这件事,曾经是讨论挺多的,当时许多人都是认为等明年比较稳(请看我10月16号更新的内容)。11月13号硬分叉升级显然是有点着急了,调节算法又是11月1号才发布。可能,仅仅是我的猜测,是有人急切要在11月13号上马新难度调节算法,因为他们提前知道13号以后会出现 BCH/BTC价格算力的比例的大波动。(当然这也不算什么秘密,大家都知道Segwit2x 分叉造成价格和算力的大波动是难免的。)为了做到13号升级算法,他们选择了和 BitcoinABC 开发组达成一致,选 BitcoinABC 写的难度调节算法。看看 BitcoinABC 开发组和 UAHF 这些事的历史,这事背后一定有比特大陆。比特大陆吴总同时也是宣布 Segwit2x 取消的那封信里的署名者之一。

这样想就得出了一个小阴谋论:一个集团,包括比特大陆在内的,早就安排好了 在11月8号宣布Segwit2x,在11月13号进行 BCH 的难度调节算法升级这两件事。

细思恐极,这些人是什么时候开始计划放弃 Segwit2x 后半段升级的,是最近呢,还是很久以前,甚至是纽约共识签署之前呢?纽约共识从一开始看,怎么看都像是有问题的:先激活 Segwit,等三个月再进行2M 硬分叉。纽约共识刚刚出来的时候,就已经有很多人质疑了,三个月后的2M 硬分叉能保证么?拿什么保证?拿什么约束只想要 Segwit 的势力?当时,比特大陆系的大 V们口径很一致:Segwit 和2M 一起锁定,联合激活。并且矿业都在 BTC 链上的出块里标注 NYA,表示将在第二阶段支持2M 硬分叉(除了 F2Pool)。纽约共识启动后,Craig Wright 跳出来说他要在短时间内组建 non-Segwit 矿池,用20%硬分叉对抗 Segwit,大家都以为是吹牛。可是 BCH 在上线以后,匿名算力(已经基本可以确认就是 Craig 的)火力全开的时候不下1E(当时全网算力7~8E 左右),许多人都惊讶这是怎么在一个月内组织起来的。更大的阴谋论就是:表明温和妥协的比特大陆,从一开始就做好了放弃 2M 升级把 Segwit 拱手让给 Core 的准备,用 UAHF 方案(后来这个方案转化为了 BCH)做 PlanB,一旦纽约共识有被撕毁的迹象,就 跳阵营到极端扩容派,转向 BCH;期间比特大陆作为世界最大的算力设备供应商,一边在暗中支持极端派,一边趁 BCH 难度低的时候过来猛挖。据 btc.top 称,btc.top 矿池和比特大陆 分别挖到了几万和十几万 BCH。目前看来,这些币都没有抛向市场,而是被囤了起来。

骂架阶段结束,真刀真枪的战争要开始了

明争暗斗,阳谋阴谋,无论如何 BCH 出来了并且发展起来了。BTC 链的政治斗争也结束了,再也不用去猜测这些说“三个月后扩容”的话是真是假,BTC 链已经彻底交给了 core,彻底走了锁定1M 区块上线的路。八月以前的那个比特币(BTC)已经不存在了,现在摆在面前的是简称BCH的修改容量上限和难度算法版,和简称BTC的加了 Segwit 的版本。比特币从09年发布起已经经历过许多大改动的升级,只是以前没有过现在这么大的分歧。谩骂结束,血战在即,把“简称叫做btc的链”当做”原链”的投资者,应该好好审事一下自己的投资了。

温和派走向何方

温和派失败以后,必定转向 BCH,这是我前面反复说过的。Classic失败,香港共识失败,纽约共识在割地赔款的不平等条约下还能又失败,温和派不会再有新的”共识”了。我们再梳理一遍这些温和派的背景:

一些做应用生意的,支付商比如 Bitpay。这些商家的要求不高就两条,1,别堵,2,维稳别乱,这两条都影响做生意。他们在温和派里都是在等待2M 升级可以解决堵的局面,并且平稳过渡不生乱子。他们不敢支持 BCH 这么一个小算力链,怕搞出问题砸了自己的生意。现在已经确定 BTC 链不会扩容了,希望已经破灭,过渡到 BCH 这是必然的。他们必定倒向 BCH 并竭力宣传 BCH,对他们生意有好处。

早期入场的大佬,比如 Roger Ver, 手持20万币是很难像我们小散一样卖币走人的。现在BTC出问题,完全被 Core 把持了,失去了最初的成为全世界互联网支付基础设施的愿景,现在无缝切换到 BCH对于他们来说是最理智的选择。早期入场的大佬们只有抛BTC 的,没人抛 BCH 的。Roger 已经说过,如果 Segwit2x 失败,他的 http://Bitcoin.com 的所有资源都将转向 BCH。这个域名是非常重要的门户,几乎可以定义谁是真正的 bitcoin。

矿业,短期内矿池肯定是逐利挖贵的币。比特大陆作为最大的矿业设备供应商,他们对挖矿的前景是最关心的。不扩容是没有挖矿的前景的,Core 的发展思路是要边缘化矿业,多次提出要改算法,矿业支持 BCH 链的发展,才能让他们的矿机有生意。并且,矿业大佬也都有很多8月份以前的 BTC。Segwit 在纽约共识达成以前只有30%算力的支持率,纽约共识后带来了额外60%的支持率,可见过半的算力有温和扩容的愿望。这里面的力量不容小觑。

大戏还没开始

现在到13号 BCH 难度调节算法升级还有一个星期,这一个星期里市场要好好消化消化这么大的新闻,如果要有大动作,应该会等13号以后BCH 不怕算力冲击了再搞。这一个星期可以关注一下商家应用对 BCH 的支持,估计会有一些公司宣布转向。13号前后可能会有大量算力转向 BCH。去超市买点爆米花屯着吧……

如果你是从开头的扩容史一路读到这里,也不用问我说推不推荐买 BCH了,短期要波动,长期来看肯定是 BCH 有前途的,要是现在这还能错了,赔光算了。

——11月9号的更新结束———

11月10日

这个答案里最后一更吧

关于BCH的内容还会继续写,新内容我会发文章,这里已经写太长了。

一个时代的结束

Segwit2x 取消之后2天,市场的反应:BTC没跌,其他币都在涨

大概局面就是这样:

BTC上的anti-fork 一派认为危险已经解除,松了口气,非常高兴
BCH的大区块推崇者一派(比如我)认为中间派会倒向自己,非常高兴
其他山寨币认为比特币扩容失败,巨人即将倒下,都非常高兴
Core开发组“乘胜追击”已经开始讨论”去矿工化”了,Policy to fight against “miners control Bitcoin” narrative · Issue #1904 · bitcoin-dot-org/bitcoin.org

要点:

http://bitcoin.org应该在更明显的地方讨论此事http://bitcoin.org上挂出来的钱包/服务,都应该签一个声明表示“比特币不是被矿工把持的”要开设培训课程,教教大家什么是真正的比特币中本聪的白皮书有问题,赶紧改中间派撤退,BTC和BCH现在才算是正式地分成了两条链,两个阵营,两种路线,但共享同样的历史账本,算力设施和商家支持。两条链未来的斗争将围绕这几个方面,争夺老用户,矿池,和交易所/支付商。这是一个新时代,BCH现在已经不再是尝试击破扩容僵局“一个新虚拟货币”,而是已经成为了扩容问题的成功的解决方案。

所以,这是这个答案里的最后一更吧。关于BCH的内容还会继续写,新内容我会发文章,这里已经写太长了,而且主题也太不一样了。除了继续关注两条链各自的前途,以后我还会整理出这个扩容纷争的故事,从时间线,Segwit技术争议,去中心化路线斗争这几个角度重现这几年的争论的始末。

比特币历史正文:比特币的扩容史

二,比特币扩容纷争:“去中心化”的争议

作者:太阳谷

去中心化的玄学

在币圈,“去中心化”是个很玄乎的概念。在技术上,在经济上,都没有一个很清晰的定义。什么是去中性化,什么样的去中心化程度高,什么样的去中心化程度低?

我们见过的事物里,有什么是去中心化的?

去中心化常常和市场经济一起出现。就好像那个戈尔巴乔夫的经典问题:谁管理伦敦的面包的供应与需求?就是一个中心化和去中心化的思想的碰撞。简单来说,推动一个去中心化的比特币发展起来,背后的思潮是自由主义,市场经济,奥派经济。

简单的用面包店的市场经济来看比特币的去中心化是不够的,面包店的面包无法互通,而比特币是一种互通的货币。为了解释这个全球互通的属性,大家也常用黄金来做例子,尽管黄金的开采和交易现在都不是自由的。

从互联网技术上看,第一个进入公众生活的去中心化产品,应该是BT下载。中心化的下载,是用户直接从网站的服务器上下载,能不能下,有没有速度,都要看网站的。在人多的时候就容易堵塞变慢。而去中心化的BT下载,用户可以从其他用户那里下载,同时也上传给别人。在人多的时候,速度会很快。最开始提供资源的节点下线了,也不影响整个系统的运营,其他人依然可以继续分发下载。

所以,大家总结出来了去中心化的几个特色:Peer-to-peer (节点间没有地位高低,没有中央单位),抗单点失效,服务分散运行在不同的人和不同的地域,等等等等。这些都没有太多争议。

比特币去中心化的争议

去中心化好理解,可是在比特币这个具体的事物上,什么样是去中心化就有很大的争议。

争议: 矿业的发展带来的是更中心化还是更去中心化?

我自己的观点是后者。其实,这个问题的核心并不是在矿业本身,而是在于对去中心化结构的理解,即:peer-to-peer 里的这个 peer (同侪,这字念柴)是谁?这个问题,如果你回答 peer 是你我这样的小散户,那矿业的发展显然是带来中心化,因为小散户没法用 CPU 挖矿了;如果你回答 peer 是算力,那么矿业发展是引入了更多的 peer和更去中心化。

(一封旧信,当年中本聪在邮件组里写的):
某人写给中本聪的评论:
We very, very much need such a system, but the way I understand your proposal, it does not seem to scale to the required size.
For transferable proof of work tokens to have value, they must have monetary value. To have monetary value, they must be transferred within a very large network – for example a file trading network akin to bittorrent.
To detect and reject a double spending event in a timely manner, one must have most past transactions of the coins in the transaction, which, naively implemented, requires each peer to have most past transactions, or most past transactions that occurred recently. If hundreds of millions of people are doing transactions, that is a lot of bandwidth – each must know all, or a substantial part thereof.

中本聪的回复:

Long before the network gets anywhere near as large as that, it would be safe for users to use Simplified Payment Verification (section 8) to check for double spending, which only requires having the chain of block headers, or about 12KB per day. Only people trying to create new coins would need to run network nodes. At first, most users would run network nodes, but as the network grows beyond a certain point, it would be left more and more to specialists with server farms of specialized hardware. A server farm would only need to have one node on the network and the rest of the LAN connects with that one node.
The bandwidth might not be as prohibitive as you think. A typical transaction would be about 400 bytes (ECC is nicely compact). Each transaction has to be broadcast twice, so lets say 1KB per transaction. Visa processed 37 billion transactions in FY2008, or an average of 100 million transactions per day.
That many transactions would take 100GB of bandwidth, or the size of 12 DVD or 2 HD quality movies, or about $18 worth of bandwidth at current prices.
If the network were to get that big, it would take several years, and by then, sending 2 HD movies over the Internet would probably not seem like a big deal.

Satoshi Nakamoto

这封邮件写出了比特币最初的设计思路,值得一句一句好好看看。给中本聪写信的人,问的是如果你的系统有几亿人用的话,是不是要传输的数据太多了。中本聪给出的答复,把“普通用户”和“拥有服务器集群的专业人士”区分来开。初期没有用户的时候,所有人都运行节点,用CPU挖矿。但是成熟以后,普通用户只需要运行SPV钱包(轻钱包),查看和自己有关的交易,而把运行节点的工作交给“拥有特殊设备的服务器集群”,因为他们“尝试获得新币”。按照2008年VISA的结算速度,运行节点处理相当数量的比特币交易每天流量100G,流量成本18美金。

从这封回信来看,中本聪已经预见了矿池的出现,并且指出运行节点是矿池的事情,而不是普通用户的事。也就是说,比特币这个网络的去中心化,只是存在于矿池和矿池之间的这个网络里,和没有算力的用户没什么关系。没有算力的用户,也不需要运行比特币节点。在算力圈内,只要是有dual-SHA256的算力就可以参与挖,这是去中心的。而在用户这边,用户的SPV钱包需要联入算力圈之内,主要功能是识别最长链,并在最长链上验证和自己有关的交易信息。可是,对于以上说法,在币圈也是有争议的,我们继续来看。

争议:为了去中心化,应该让尽量多的人来验证完整的比特币区块信息吗?

一些off-chain钱包,比如币信,其实是你把币给了他们公司,他们公司帮你打理。这类服务完全不参与比特币数据的验证,不在今天的讨论之列。普通用户可以使用的钱包大致可以分为两类:

全节点钱包。比如 Core 开发组的软件,BitcoinUnlimited 的软件,都是要同步一个几百GB 的数据库,里面存着从2009年到现在的所有区块信息。用全节点钱包,等于是在和矿池用一样的软件,相当于自己是一个一直没有挖到矿的矿工,一直在验证其他矿工提供的区块,以决定自己下一个块怎么挖。全节点要验证世界上每一笔比特币交易是否有足够余额可供支出、是否存在双花、脚本能否合规等等。按照每十分钟出一个1MB 满块的速度,每天增加144MB,每年增加52.6GB。
SPV 钱包。比太,electrum 之类,也叫轻钱包,只做简单支付验证Simplified Payment Verification。支付验证只判断用于“支付”的那笔交易是否已经在链里,在哪个块里。支付验证不需要看到完整的区块信息,只需要区块头的信息即可判断是否存在,按照每十分钟出一个块的速度,每年只增加4MB。普通用户要查看区块内的信息,就要使用像 http://blockchain.info 这一类的在线区块浏览器服务,自己电脑里没有存储这些信息。
争议就来了,如果用户都用全节点钱包,那去中心化是不是更高呢? 大概有这么几派观点:

极度反扩容派的论调:全节点钱包是最好的,并且最好开放8333端口让其他全节点钱包能找到你,更好地加入到这个节点网络里来,节点网络里的全节点越多越好。节点越多,越不容易被外力管制,也有更多备份抗灾。这样的态度伴生的必然是反扩容,甚至主张缩容。因为每年52.6GB的数据增加,对于个人节点已经是不少,这个数据量用用 SSD已经 有点贵了,大多数人只能用机械硬盘。如果说扩容并且交易量在几年内达到现在的1000倍,达到 VISA 级别,每年52.6TB 的数据,注定没法人人都这么运行。极端反扩容派的论调大概就是如此:此风不可涨!今天扩2M,明天扩3M,扩着扩着就有很多人的电脑运行不动了,破坏了去中心化。所以,链上的空间是宝贵的资源,不是给大家买咖啡用的,要竞价使用,所以BTC 的手续费就渐渐高起来了。
中间派的论调:承认普通用户的全节点有价值,但否认扩容会影响全节点的数量。知名的矿池老板,科普作家江卓尔先生,他的观点就是这样。如今电脑很便宜,硬盘也很便宜,扩容后交易量如果增大个几倍个几十倍,基本不会影响普通用户去设立全节点,毕竟现在一部电影都几十 GB 了,参与到“让比特币更加去中心化,为比特币历史数据多留一份备份”这么伟大的工程里来,这点成本不算什么。去掉1MB 的天花板,让用户群体变多的话,总的节点数量还是会更多的。Gavin Andresen (其实他是极端派)说的话很有趣:“作为一个兴趣爱好,人们永远都可以运行的起比特币全节点。人们在别的兴趣爱好上(比如运动)花的钱要比这多多了。”
极端派的论调:不挖矿的用户的全节点对网络没有价值,仅仅是个人兴趣。即便作为备份,没有算力的个人节点在比特币网络停摆的极端状况下也因为高难度而无法让网络重新运作起来。如今的比特币网络完全不需要非专业的个人节点来做备份。我个人的观点是极端派,这段会解释详细点。
经济学上来说,普通用户没有动机去维护全节点,非要赶鸭子上架是不对的。普通用户,作为钱包里有钱要花钱的人,只关心自己的钱包是不是安全。只需要去看自己是不是有钱,自己能不能安全地发送交易,私钥不要泄露。普通用户的钱包,应该着重于保护私钥的安全,易于备份私钥,发送交易的界面清晰易用。至于这交易有没有及时被打入区块,有没有双花,还有区块内其他交易的信息,对普通用户来说毫无意义。能双花了更好不是么?如果要移动支付,大家一定会选择手机 APP,而不是笔记本电脑外挂硬盘,全节点是很难使用的。经济学上来说,对验证交易有兴趣的一方才应该运行全节点,也就是收款的商家,交易所,矿池,区块浏览器等等。以咖啡店和 Bitpay这样的支付商为例,用户只关心自己的手机 app 可以把交易信息发出去,尽快拿咖啡走人。而咖啡店关心这个交易尽快被 bitpay 确认后能收到法币。这里面只有 bitpay 关心,这个交易要有效,不要有双花,所以要尽快验证后广播给矿池。所以,bitpay 一定会投资设立验证快网速快又稳定的节点,做得好就可以签下更多的咖啡店赚更多钱。在这个观念里,让链上交易成本低,bitpay 这样的商家越好做,这样的企业节点就越多,去中心化程度反而更好。
普通用户的全节点对去中心化无益。极端派认为,没有算力的节点又去验证和自己无关的交易是没有意义的,验证了你也做不了任何事情来改变这个网络,你还是只能选择跟随算力挖出来的链,最终效果和 SPV 钱包是一样的。
普通用户的全节点对去中心化甚至是有害的。这里有一个“距离”的概念。理想状况下,一个 SPV 钱包,发送一笔交易后,这笔交易应该尽快抵达所有的矿池。所有的矿池都收到了这一笔交易的信息,如果后面再有人发一笔有冲突的交易(双花),就会直接被所有矿池拒绝。由于比特币的网络是渔网状的(small world 模型),每个节点和另外 N 个节点连接,这个广播交易有一个扩散到全网的过程,从广播交易的节点到算力之间,要跳转几次,这就是节点间的距离。假设网络中除了矿池和区块浏览器的节点,还有大量使用家庭网络的个人节点,他们电脑卡网速慢,却增加了节点到矿池之间的距离,这个扩散的全网的速度可能会被拖累变慢,交易信息发送到了很多个人节点那里,但没有让矿池及时接收到交易信息。
作为一个兴趣爱好,人们永远都可以运行的起比特币全节点。BitcoinUnlimited 开发组和 nchain 凑了150万美金,搭了一套测试网络,运行每秒3000笔的比特币系统(1GB 区块,1000倍于当前交易量)。测试用的矿池并没有很高端的设备,大多是64G 内存配SSD的VPS,甚至有一部分16G 内存的台式电脑。测试相当成功,大区块之下所需的设备远远没有反扩容一派说的那么科幻,说只有 google 才运行得起来。搭建全节点的成本和在比特币产业里的其他成本来说不值一提,绝对不会影响有经济利益的公司机构搭建强壮的节点网络。
无论是上述哪派,都不得不面对着用户的需求:BTC 的链上太堵了,小额交易肯定不行了,连大额买币都困难了。扩大交易容量是必定的,极端反扩容派提出的是链下方案,或所谓的第二层网络方案,主张“小额交易走闪电网络,最后结算的时候再来链上”。而扩容派,特别是极端的扩容派,主张区块链技术比传统的结算网络(银行)的结构更先进更安全成本也更低,认为第二层网络是开倒车。如今, BTC 彻底被反扩容派控制,扩容派已经全体挪到了 BCH 上,这两条路看看谁会走得更好呢?

也许下篇文章会讨论第二层网络和 Segwit 这些骗子技术

注:由于比特币扩容经历了的第二阶段:Bitcoin Cash继续分裂——Bitcoin Cash ABC、Bitcoin SV,此文中所标注的BCH均指目前的BitcoinSV/BSV,不指代Bitcoin cash/ABC。

比特币历史正文:比特币的扩容史

三,比特币扩容纷争:对隔离见证的思考

作者:太阳谷

作为一个扩展,这篇文试着用简单的解释,带大家看一看 BTC 上的隔离见证有什么问题。

比特币的基础架构:区块链

科普一下比特币的区块链是什么,老手们可以直接跳过这一部分了。这里说的比特币,是2017年8月以前的比特币,后来分为了 有隔离见证的BTC 和没有隔离见证的 BCH 两条链。下面会有不少看起来很专业的东西,不过请放心,我不是专业的程序员,不会讲太深的。稍微理解一点比特币的架构和转账的方法,对理解隔离见证的骗局很有帮助。比特币链条大概是长这个样子:

比特币历史正文:比特币的扩容史

上图我们可以看到几个区块(Block),可以看到每个区块都有两个部分:一部分是虚线画出来的 Prev.block 指向上一个区块,这部分我们叫它“区块头”,另外一部分是“区块主体” Transaction,即这个区块里交易的信息。由于每个区块头都指向上一个区块的头,所以这个系统我们叫他区块链。再详细点看这个区块头:

比特币历史正文:比特币的扩容史

上图我们可以看到3个区块(Block),可以看到每个区块头里都有4个信息。其中 Nonce 就是矿机去搜寻的数,这个数很难找所以要用很快的矿机烧很多电费,谁先找来一个 Nonce,能让这4个信息合起来的 Hash 结果符合一定的条件,谁就可以发布这个区块,并拿区块奖励12.5个币。Prev-Hash 是上一个区块的这4个信息合起来的Hash 结果,Timestamp 是目前的时间,有这两个的限制,矿工至少要收到上一个区块的区块头,才能开始挖下一个区块。Tx_Root 是这个区块的主体里所有交易的Merkle Root,如果有任何一个交易被改变,这个 Tx_Root 就会有变化。 如此,比特币的区块形成了一条不能被更改的链:加入这个 Block11里面的 Tx1被改变了,那他上面的 Hash1就会变,Tx_Root 也就变了,这样 Block11的4个信息合起来的 Hash 结果会不一样,就和 Block12的 Prev_Hash 断开了,Block12就无效,以此类推。

支付脚本

区块链里的交易,大概可以理解为是 “A 地址转给 B 地址 xx 个币”,“B 地址转给 C 地址 xx 个币”这样的信息。如果 C地址收到了 xx 个币,但没有往外转,那这就会在 UTXO 数据库里记一条:“C 地址还有 xx 币没花掉”。假如 C 地址是普通的1打头的比特币地址,要花掉这笔钱,就需要用到一个脚本,这个脚本是“B 地址转给 C 地址 xx 个币”时规定的,定了这笔钱要怎么才能被C 地址花掉。一般这个脚本是这样的两部分

  • scriptPubKey部分: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
  • scriptSig部分: <sig> <pubKey>

不会编程的朋友请不要害怕,不难看懂的。scriptPubKey部分有几个“操作码”,是 OP 打头的,表示几种操作。<pubKeyHash>就是比特币地址的中间部分,不带开头的版本号1和末尾的几位校验码,这部分是对公钥进行 Hash 的结果。scriptSig部分要由想转账的这个人提供,公钥<pubKey>,和用私钥对这笔交易的签名<sig>。由私钥可以推导出公钥,公钥可以推导出比特币的地址,这两个步骤都不能反推(在当今科技下)。如果一个人可以展示私钥对这笔交易的签名,又可以提供这个地址的公钥,那我们就相信这笔转账是他授权的,别人伪造不了。矿池收到了提供的交易,和交易的签名,要怎么验证呢?就是运行一遍上面的脚本,看看结果是不是“True”。如果结果是 True 那就算通过了。首先要把scriptSig里的东西“堆”起来,形成一个“堆栈”:

<pubKey>

<sig>

然后,就一个一个地执行scriptPubKey部分。先是一个 OP_DUP,这个是复制操作,这些操作都是对着堆栈的顶部操作。所以复制操作后堆栈变成了:

<pubKey>

<pubKey>

<sig>

然后是一个 OP_HASH160,是 Hash160算法的操作,把堆栈顶部的<pubKey>变成了<pubKey Hash1>:

<pubKeyHash1>

<pubKey>

<sig>

然后是<pubKeyHash>,把这个推进堆栈:

<pubKeyHash>

<pubKeyHash1>

<pubKey>

<sig>

然后是OP_EQUALVERIFY,是检查是否相等的操作,对着堆栈顶部的两个元素进行。如果提供的<pubKey>是没错的话,应该是一样的,操作后堆栈变成了:

<pubKey>

<sig>

最后一个操作码是OP_CHECKSIG,检查这个签名<sig>和公钥<pubKey>是不是对的上,如果没问题,堆栈就清空了。任何一步出问题都会造成脚本报错,如果没出错,那脚本结果是 True,表示通过。

脚本能用的操作码还有很多,可以进行 if,else,add,sub,drop,swap等等等等。比如,B 地址给 C 地址转账的时候,在刚才的脚本开头,加上一个<expiry time>和一个操作码 OP_CHECKLOCKTIMEVERIFY,就可以制造一笔冻结款,C 地址里的这笔钱要经过特定时间后才能花,在到期之前OP_CHECKLOCKTIMEVERIFY会让脚本验证失败。

据“2009年就开始参与比特币开发”的 Craig Wright 的说法,如果有足够的操作码,比特币系统也是图灵完备的,也可以运行ETH 那样的智能合约。但是,许多操作码在2013年被 Core 禁用了(因为 Core 开发者看不懂那些操作码有什么用),对脚本的限制也更多。BCH 在2018年的开发路线图里就包含了修复操作码设计的部分。

如果,B 地址给 C 地址转账的时候,把脚本搞成这样:

  • scriptPubKey部分: 留空
  • scriptSig部分: OP_TRUE

那这个脚本就是永远都可以通过的,不需要提供任何信息。这笔钱谁来转出,怎么转出都是有效的,我们称这钱现在是 anyone-can-spend。这笔钱等于就是给了矿池,因为矿池最终决定谁的交易可以被打包进块。如果有人把自己的钱转入这么一个 anyone-can-spend地址,矿池肯定会把这笔钱打给自己。

这个anyone-can-spend的脚本,就是隔离见证(Segwit)的基础。用这个脚本,转账的时候就不用在区块里提供签名了,签名被“隔离”到了区块链以外,故名“隔离见证”。虽然签名挪了地方,但是转账的话签名还是要给的,不然岂不是乱转账了。其实,用户该发送的信息没有少,矿池要验证的信息也没有少,区别只是在区块链里存的信息少了。由于区块被设置了1MB 上限,并且已经堵满了,如果交易在区块里占的空间小一点,就能多挤几个交易进这个1MB 块。隔离见证技术被吹嘘有1.7 x 的扩容效果,如果所有人的交易都用这种 anyone-can-spend的格式的话。现在问题来了,这样把签名信息挪出区块链,有什么好处?为什么不直接把1MB 上限放宽到2MB 呢?

软硬分叉之争

如上的疑问,就是扩容软硬分叉之争。因为 Segwit 是一个所谓的软分叉,而提高区块大小会是一个硬分叉。在之前的文章里已经说过,其实这里面软硬分叉之争是个表象,本质上是路线之争:普及后,比特币是流通的币,还是流通币的结算层;是流通的币更去中心,还是结算层更去中心。软硬分叉其实都只是技术手段而已,真正最后的结果还是被人所控制的。

涉及到“共识层”的修改,就会形成“分叉”。共识的运行其实是两个半层面,一层是在有算力的节点(矿池),第二层是没有算力的全节点,还有简单支付验证的轻钱包 SPV 我们算半层。软分叉的特点是“旧版软件还能认新共识”。硬分叉是“旧版软件不认可新版软件”。我们用下面一张图来看软硬分叉的情况。

比特币历史正文:比特币的扩容史

在 Block8区块之后,系统从 V1软分叉升级到 V2,这时:

算力层:

  • 运行 V2的矿工(大多数算力)认为最长的有效链是上面的这一条。
  • 运行 V1的矿工(少量未升级算力)也认为最长的有效链是上面的这一条,会放弃掉自己的 Block9(V1)形成孤块,因为它不是最长了。而 V1矿工挖出的旧版本块不会被 V2矿工承认,这样,V1矿工不升级,就面临着不被承认的境况,矿机白白浪费电。

全节点层:

  • 运行 V1和V2的全节点(无算力)都认为最长的有效链是上面的这一条。V1节点因为没有矿机而无经济损失。

SPV 层:

  • 运行V1和V2的 SPV钱包都认为最长的有效链是上面的这一条。
  • 总结来看,软分叉时,只要挖矿的节点需要升。如果不升级,会有经济损失。

对比一下,系统从 V1硬分叉升级到 V2,这时:

算力层:

  • 运行 V2的矿工(大多数算力)认为最长的有效链是上面的这一条。
  • 运行 V1的矿工(少量未升级算力)认为最长的有效链是下面的这一条,上面一条虽然长但是无效。这样,V1矿工不升级,就会和 V2形成两条并行的链。

全节点层:

  • 运行 V2的节点(无算力)认为最长的有效链是上面的这一条。
  • 运行 V1的节点(无算力)认为最长的有效链是下面的这一条,上面一条虽然长但是无效。

SPV 层:

  • 如果这个硬分叉是扩容1M到2M 的话,由于 SPV 钱包不检查容量限制,所以不会因为容量而判某链无效。运行V1和V2的 SPV钱包都认为最长的有效链是上面的这一条。如果这个硬分叉修改了挖矿算法或者难度调节算法,那么 SPV 节点也会依新旧版本各自认各自的链。

总结来看,硬分叉时,不只要挖矿的节点需要升级,不挖矿的节点也要升级,SPV看情况, 可能可以不用升级。如果一部分算力不升级,会被拆成互相不能转账的两种币,像现在的 BTC 和 BCH 一样。

这么看,软分叉是不是比硬分叉来得安全呢?如果担心有人因为不知道大家升级,或忘记及时升级的话,看起来软分叉可以预防比特币被莫名其妙分为两个币。但这种情况是不存在的好么?现在算力都在几个矿池手里,只要提前几个星期通知一下大家做好准备,完全不会出现“忘记升级”这种事。能出现“忘记升级”的只能是普通用户,普通没有算力的用户,对系统的运行也没有影响。BCH 上的 DAA 硬分叉(把难度调节算法更改为逐块调整)已经非常好地展示了这样的硬分叉,对普通用户的使用并不构成障碍。我们平时使用其他软件,也经常面临着不升级一下登陆不进去这样的情况,并不是什么要命的事情。Core 开发组一直在妖魔化硬分叉,表示硬分叉会造成比特币分裂为两种币,影响市场稳定。其实有分歧造成的硬分叉拦不住(BCH 分离出来),没分歧的硬分叉升级没危险(BCH 难度算法调整),无视路线分歧硬说软分叉安全是没有理由的。

软硬分叉之争的结局:中间派的失败

在大家对硬分叉的安全性有质疑的时候,中间派试图用“合并分叉”这样的手段来调解。大致手法就是先用大家都认可安全的软分叉从 V1升级到 V1.5,然后在 V1.5里预埋硬分叉到 V2 的代码。这样,如果是有算力“忘记升级”,他的 V1会在升级到 V1.5的时候被孤立,但不会立刻形成2种币。等到 V1.5到 V2进行硬分叉升级的时候,由于是预埋的代码,自动运行的,不会“忘记”。没有鄙视程序员的意思,这是一种典型的“程序员思维”。软件是死的,人是活的。如果人要搞事情,用代码是限制不住的。

中间派的最后运行的方案是 Segwit2x 方案,合并分叉 Segwit 和2M 这两个升级,前一个是软分叉,后一个是硬分叉。这个方案在纽约得到了超过83%的算力的支持,纽约会议之后,中国矿业又内部约定:大家都运行 Segwit2x 的软件,这个软件预埋了代码,在 Segwit 激活后90天,自动激活2M 的升级。问题就来了,你如何知道别人运行的软件和你是一样的?除非是黑进矿池的服务器去,否则从外部完全不能判断别人会不会在3个月后进行2M 分叉。虽然代码是写了,但别人可以运行别的版本的软件,可以把那几行删掉,改掉,外人无从得知。反扩容派是倾向于要 Segwit而不要2M,中间派是为了要2M 愿意妥协 Segwit。当 Segwit 激活 以后,中间派没法靠这2行代码来逼反扩容派进行2M 升级,分裂成2种币的结局依然是难免的。最后结果大家也看到了,中间派认怂取消掉了2M 硬分叉的计划。

从2016以来,为了不让比特币分成两种币,大家花了那么多的时间在开会谈判上,现在才明白过来:如果路线有分歧,没有技术手段可以防止比特币分成两种币,也没有技术手段可以督促其他方面参与或不参与一个硬分叉。

隔离见证软分叉(Segwit)的危险

前面我们提到,隔离见证是一个软分叉,旧版依然可以兼容,在升级的时候可以预防“因为忘记升级而乱套”。这可以算一个非常模糊的优点,具体有没有用是很值得怀疑的。相比之下,这软分叉的缺点就要严重得多。还是画个图看一下:

比特币历史正文:比特币的扩容史

从 Block7开始,系统加入了 Segwit 的功能。前面介绍脚本的段落里已经介绍过这种 anyone-can-spend 的地址,假如 Block7里一个 Segwit 交易,把币发到了一个任何人都可以花的地址 C 里面,签名放在了外面。假设 C 地址的拥有者,打算在 Block8把钱花出去,发送币给地址 D,诚实的矿工会验证C用户的签名,安全性基本和以前是一样的。这里,读者可以可以看到,“这笔钱是不是 C 的”这个问题,要靠 Block7下面挂着的那个小块 sig来回答。如果仅看Block7的信息,得出的结论会是“这笔钱是无主的随便捡”。

众所周知这个 Segwit 功能是一个软分叉,也就是说旧版软件依然会承认 Segwit 版发出来的块,不用升级。旧版的软件根本就看不到 这个小块 sig。旧版钱包软件(全节点或 SPV 钱包)看到这笔钱就是无主的,任何人都可以花的。好在算力一层是必须全部升级的,旧版钱包软件如果提出要转走这笔钱会被所有算力拒绝,只能眼睁睁地看着钱在那里无主地放着。旧版钱包不能正确地获得交易信息,仅仅是验证机制被绕过了,无法发现交易模型已经改变了。前面我们介绍过,区块链的一个特点就是,后一个区块依赖前一个区块的区块头里的信息,如果修改一笔交易,区块头会变化,会造成整个链条的失效。可是现在 Segwit 的“外挂见证块”并不在这个链条里面,修改 sig 里面的内容是不会使链条失效的。如果我有算力,但不是 C 地址的拥有者,我无法提供地址 C 的签名,但我把地址 C 的钱转给自己,这个块一定会被其他矿池拒绝掉,因为他们验证了 sig 发现我并没有资格动这笔钱。可是旧版钱包(全节点或 SPV 钱包),和新版的 SPV 钱包(不验证和自己不相关的交易,只接收区块头),都不会发现,他们只会跟随最长的块,sig 的内容不影响有效与否。

因此,Segwit 带来了一种新型的51%攻击。这种攻击我在之前的一篇回答里介绍过:

一般币的51%攻击:我在高度12345上发布一个交易,从 A 地址到 B 地址发送1000比特币。同时我用自己的压倒性的算力,重新挖出一条12344-12345-12346的链,不包含刚才的交易。这样 B 一开始以为我付款了,后来我付款的那个块被孤立了,最终成型的最长链里不包含我的支付。这也是为什么各大交易所都要求3个确认,6个确认,就是防止出现你发送币给交易所的交易被孤立。一般认为6个确认后就几乎不会出问题了。小额支付(几万美金以内)经常1确认甚至0确认(块不满的时候)也可以,因为对于小额交易你没有经济动力去攻击。小额没赚头,大额肯定会要求多个块的确认很难做到,也没赚头,并且攻击窗口就是交易发布后的那一两个小时,过去了就没法攻击了。所以至今比特币没有发生过真正意义上的 51%攻击。
SW 币的51%攻击:Segwit交易带来了“AnyOneCanSpend”地址,它实质上是一个空白的交易签名。这种交易的签名被挪移到了附加的见证块里,因此这个技术叫做“隔离见证”。当然,虽然这个交易的签名不在这里,矿池肯定还是会去附加的见证块里找出来核对验证。在大家都核对验证的情况下,安全性和以前是一样的。控制算力超过50%的矿霸矿池,可以直接放弃附加见证块的核对,并把AnyOneCanSpend地址里的钱转给自己,然后孤立那些去核对见证块的矿池。由于 Segwit 是软分叉升级,原来的那些没有 Segwit 功能的 SPV 钱包和全节点钱包还是可以用的,这些钱包也没有核对附加见证块的能力,这时候这些钱包都会认为矿霸的链是合法的最长链。和一般币的51%攻击巨大的区别就是:一般币的51%攻击只能退回自己的一笔支付,而SW 币的51%可以花掉别人账上的钱,而且这钱的数字是从 SW 激活起慢慢积累变多的。SW 运行的越久,SW 交易运用的越多,这笔钱的数量也就越大,有动力攻击的算力也就越容易找。参考资料:Risk of SegWit – Mining Cartels – nChain

软分叉可以在不惊动普通用户的情况下偷偷进行,上 Segwit 功能是软分叉,关闭 Segwit 功能也是软分叉,也可以偷偷地进行。一旦使用了 Segwit 功能,把币放在了AnyOneCanSpend地址里,就只能信任51%的算力不会去进行关闭 Segwit 功能的软分叉。如果不使用 Segwit 功能,把币放在“经典”的1字头地址里面,任何软分叉都不能让你失去这币,除非有绝大部分算力针对你的存币地址发动一个硬分叉,才能把这个地址里面的钱转给别的地址。显然这种硬分叉是无法成为主流的,估计中本聪也得不到这种待遇。放在1字头地址里的币就是你的币,只有你可以转走卖掉,别人都不行。放在 Segwit 地址里的币,就要看矿业有没有诚信了,如果超过51%的算力发动取消 Segwit 的软分叉,剩下的49%里必须有算力主动发起硬分叉才能甩脱51%算力的最长链,保住你的币。可是 目前 Segwit 链的座右铭就是“We don’t hard-fork”,是不是有点尴尬?

有人会说,51%算力发起关闭 Segwit 功能的软分叉是不可能做到的事情。这点我同意,但是也许你不需要51%算力来做到这事。如果我是捣乱矿池,占5%算力,我挖出一个块以后,签名 部分拖延1分钟再发出去,其他矿池敢不敢再这1分钟里以我这个块为基础挖下一个块?如果挖,一分钟以后收到 签名 的内容可能会发现这个块里有非法的交易,这一分钟就白挖了。如果不挖,一分钟以后 签名 内容是正常的,就浪费了一分钟。我只要用5%的算力捣乱,每天出几个块,就足以逼很多矿池修改自己的软件设定,在收到签名前就开始挖矿。捣乱矿池可以把 签名 渐渐拖更久,比如10分钟后才发,很少的算力就可以把严格验证 签名搞成成本挺高的事情。不验证签名的矿工收益更高,这在 Segwit 以前的比特币上是不可能发生的事情,如今可能了。如果有30%的算力不验证附加的签名块,那我只要21%的算力就可以发动上述的 Segwit 独有的51%攻击了。

隔离见证软分叉(Segwit)无法扩容

Core的开发者一直在宣传,说 Segwit 可以带来1.3x,后来又说1.7x,又四舍五入到2x 的扩容效果。从交易数来看,2017年8月中旬激活 Segwit 以来,每个块的交易数勉强突破了之前的高点2250,连1.1x 的扩容效果也没有。每个块2000+笔的交易能力是不够的,必须尽快改进,这一点上各派都没有异议。Core 的开发者现在已经不提“ Segwit 有立竿见影的扩容效果”这话了,着重宣传闪电网络。“小额交易走闪电几乎零手续费,大额结算上主链五十美金一笔”,这已经是 Core 支持者的信仰宣言。

第二层交易网络

我们来简单对比一下BCH 的“传统”单层模型,和闪电网络的第二层模型。

手续费方面:

以50美金一笔手续费的大额结算来计算(50美金就是今天的手续费水平),闪电网络开闭通道各需要一次交易,就是100美金的成本(闪电节点的成本没有计入)。如果平均每个通道结算时已经发生过1000笔交易,那每个交易的成本为10美分,勉强还属于比较低的手续费水平。要什么样的通道才能1000笔结算一次呢?以我的想象力,我只能想到这个是支付宝,银行或者地下钱庄的模型,把我的币充值锁进去慢慢花。交易所等机构之间大概更有用一些,对于普通用户其实是毫无作用。

按照每个块开闭2000次闪电网络通道(1M 的极限),每个通道1000笔交易来算,BCH 的模型里,1000000笔交易差不多也就是500MB 区块。nChain 已经和 BitcoinUnlimited 联合测试过1GB 区块,并没有很科幻。

安全方面:

Segwit 的安全性问题已经是一个很好的反例了。区块链,或者说a chain of digital signatures,是中本聪的杰作,也是比特币和支付宝,银行,信用卡的根本区别。在比特币,现在的 BCH 里,没有私钥谁也没法挪动你的钱,你必须有私钥才能把钱挪动到指定的地方。闪电网络虽然已经宣称进行过多轮测试,但“怎么保证通道内的交易公正不被修改”这个问题,依然没有清楚的回答。如果有哪位朋友有好的资料能够提供,不胜感激。从我目前的理解是,闪电通道内基本还是充值卡的模型,外加了通过多次交换签名来让双方对余额有共识,但如果双方有意或无意对余额有分歧,需要由 闪电节点来裁决。Segwit 的问题又出现了:有人可以在没有你的数字签名的情况下挪动你的钱。

安全方面,这一篇文章值得看看:https://news.bitcoin.com/lightning-network-centralization-leads-economic-censorship/

技术方面:

刚刚其实都是我瞎编的,目前闪电网络完全没有如此大流量的公开测试,考虑到闪电通道内多次反复交换签名的设计,同等硬件瓶颈下闪电网络的交易容量堪忧。

结语

我在敲这篇文章的时候,BTC 正在疯涨,BCH 和其他所有币都被“抽血”而下跌。同时,BTC 拥堵了17万笔交易没有确认,单笔手续费大约50美金。Steam 宣布放弃比特币支付渠道,因为手续费太贵了没法用了。Bitpay 宣布要投资支持比特币以外的各种币,也是因为手续费太高。

市场在短时间内是不理智的,这个混乱时间点上暴涨暴跌都不稀奇。如果说再过十年,市场上主流的是哪种币?一个挪动困难,安全性堪忧的 BTC 真能保值十年吗?如今 BTC 确实是有保值增值的功效,在过去几年里任何一个时间点,甚至过去几个月的任何一个时间点买入,到今天都是大赚。暴涨总是有头的,如果BTC 不再暴涨,失去了支付渠道和商家支持的 BTC 就没有上新闻的能力了,在投资者的圈子里,不再暴涨的BTC也失去了增值保值的能力。如今加密货币都是新事物,严格意义上来说BTC 也还没有进入公众视野,新闻里的 BTC 只有暴涨,没有应用。这两年新入场投资加密货币的,都很少有只买 BTC 的了,都是 ETH等币搭配着投资,在币圈 BTC 都不是那么大众化,终究是会淡出公众视野,变得越来越小众的。十年后能成为主流的币,一定是接下来几年能第一个真正进入公共视野的币,我猜这个币是BCH。

注:由于比特币扩容经历了的第二阶段:Bitcoin Cash继续分裂——Bitcoin Cash ABC、Bitcoin SV,此文中所标注的BCH均指目前的BitcoinSV/BSV,不指代Bitcoin cash/ABC。

比特币历史正文:比特币的扩容史

四,从法律角度讨论算力战

Hash war(算力战)并非真实的战争,而是新近出现于比特币现金(BCH)社区的一种争端解决办法,由CSW首次提出,争议双方因难以谈判妥协而动用算力直接对决,败者归零而胜者通吃,因双方动用的资源和可能造成的损失不亚于一场小型战争,故曰算力战。也因其对社区可能造成的巨大震荡,故有人认为算力战是非法的,是恶意攻击行为,不应被社区接受,不应成为终极解决方法。本文拟从法律角度讨论算力战。

1.算力战的起因

Hash war产生于BCH的社区分歧。按原计划,BCH协议将于2018年11月15日实现第三次硬分叉升级,但关于升级方案,以Dr Craig W Wright(CSW)为代表的一方与以BitcoinABC、Bitmain(比特大陆)为代表的一方出现了严重分歧。CSW一方提出,作为现金实现方案,比特币协议应当稳定,其公布的客户端BitcoinSV(Satoshi vision将协议最大限度地恢复到比特币2009年的最初版本0.1,并提出无重大理由不再变动;又,作为现金实现方案,应当考虑到大规模的企业级应用和爆发式出现的人群使用,故BitcoinSV版本将每个区块的交易容量上限提高到128M,并提出两年内取消上限直接NO CAP(注:比特币的最初版本并无容量限制),否则2020年减半后的区块奖励及交易手续费将不足以支撑比特币的生态系统,从而危及比特币的生存。而BitcoinABC、Bitmain一方则认为,目前BCH区块的实际交易量仅有数十K,远未填满现有32M容量,一下子提高到128M乃至NOCAP,是不顾实际的拔苗助长,是对软硬件资源的极大浪费;又,比特币协议及代码应当因应时势而持续演进,不应被锁定或稳定,故其公布的11月15日升级版本Bitcoin0.18版本新增了许多代码,如将区块内的交易排序由原始的TTOR(按交易时间依次排序)改为CTOR(按交易哈希按字典排序)等等。

两派的分歧如果无法弥合,势必在2018年11月15日造成BCH链的永久分叉即变成两个币和BCH生态的永久分裂,但CSW石破天惊的提出,BCH只有一个,不会分叉,也不会分裂,其解决办法是,如果有人在11月15日及之后分叉或分裂,他将发起Hash war(算力战),以算力杀死任何分叉链,直至对方改算法或投降,这样战争结束后,执行SH256算法的BCH只有一个币、一条链。

CSW更进一步提出,当BCH内部的算力战结束后, 2020年,即比特币的挖矿再次减半之时,BCH将对比特币的另一条链BTC发起Hash War,最终比特币将统一成一个,即BCH,BCH就是比特币,就是符合创始人中本聪愿景的全球点对点电子现金系统(Bitcoin:a peer to peer electronic cash system)。

据测算,BCH如发生算力战,以现有价格计,双方每天投入的成本将高达600万元人民币,失败方每天的损失也将高达600万元人民币。如果2020年BCH对BTC发动算力战,以现有价格计,则对战双方每天的投入或损失或将超过6000万人民币。显然,Hash war是比特币历史上的极重大事件,其每日消耗不亚于一场小规模的真实战争,战争结果将直接奠定今后数十乃至上百年的比特币运行规则,意义不可谓不深远。

2.算力战的实施

如此大规模的算力战在比特币历史上尚属首次,是否会在11月15日如期打响也未可知,关于算力战的实施过程,包括宣战、开战、攻防、投降、胜利等等细节均无经验可循,只能根据比特币的运行规则作一大致推演。

中本聪在比特币白皮书第8节和第11节对可能的算力战作出了如下描述:

第8节,“当此情形,只要诚实的节点控制了网络,检验机制就是可靠的。但是,当全网被一个计算力占优的攻击者攻击时,将变得较为脆弱。因为网络节点能够自行确认交易的有效性,只要攻击者能够持续地保持计算力优势,简化的机制会被攻击者焊接的(fabricated)交易欺骗。那 么一个可行的策略就是,只要他们发现了一个无效的区块,就立刻发出警报,收到警报的用户 将立刻开始下载被警告有问题的区块或交易的完整信息,以便对信息的不一致进行判定。

第11节,“设想如下场景:一个攻击者试图比诚实节点产生链条更快地制造替代性区块链。即便它达到了这一目的,但是整个系统也并非就此完全受制于攻击者的独断意志了,比方说凭空创造价值,或者掠夺本不属于攻击者的货币。这是因为节点将不会接受无效的交易,而诚实的节点永远不会接受一个包含了无效信息的区块。一个攻击者能做的,最多是更改他自己的交易信息,并试图拿回他刚刚付给别人的钱。 诚实链条和攻击者链条之间的竞赛,可以用二叉树随机漫步(Binomial RandomWalk)来描 述。成功事件定义为诚实链条延长了一个区块,使其领先性+1,而失败事件则是攻击者的链条被延长了一个区块,使得差距-1。 攻击者成功填补某一既定差距的可能性,可以近似地看做赌徒破产问题(Gambler’sRuin problem)。假定一个赌徒拥有无限的透支信用,然后开始进行潜在次数为无穷的赌博,试图填补上自己的亏空。那么我们可以计算他填补上亏空的概率,也就是该攻击者赶上诚实链条。”

中本聪描述的诚实链条与攻击者链条之间的竞赛,实际上就是计算机学上著名的51%攻击,可称为算力战或哈希战(Hash War)。但中本聪并没有定义,谁是诚实链条,谁是攻击者链条,更没有说掌握51%以上算力的就一定是攻击者链条,比特币确认诚实的原则是累及算力难度的最长链原则,凡累及算力最多且最长的链条即为最终的诚实链条,所以算力竞赛结束后,原来的诚实链条可能变成攻击者链条,而原来的攻击者链条也可能变成诚实链条,一切取决于算力这一中性的最高原则。

算力战的基本工具就是51%攻击,也就是在同一链条上,优势算力方的区块生成更快从而成为最长链。但算力战真正发生后,算力是实时变化的,如何使用算力进行攻防是一个非常复杂的策略问题,藏块攻击、孤块攻击、巨块攻击、双花攻击等等都是可能的手段,一时的算力优势不等于胜势,如同真实战争,著名的赤壁之战、肥水之战、亚力山大对大流士三世的高加米拉战役,都是以少胜多。

白皮书第11节末尾也写道,“假定一个赌徒拥有无限的透支信用,然后开始进行潜在次数为无穷的赌博,试图填补上自己的亏空。那么我们可以计算他填补上亏
空的概率,也就是该攻击者赶上诚实链条”,当此情形,算力战取决于战争意志与烧钱能力,设若交战一方类似赌徒,有相当的算力并有持续的烧钱能力或透支能力,则另一方挖出的区块将不断面临被孤立与重组,总有一天,不能承受资源损失的一方将被迫放弃已挖区块而退出战争,另一方获胜。

3.算力战的法律性质

1、 算力战系民事行为、私法行为,系合法行为;

算力战的参与双方系算力持有者即矿工,包括自然人矿工和法人型矿工。特别地,托管私人矿机的公共矿池参战时,对其不属于自有算力部分,应当取得相应算力持有人的特别授权。无他,算力战乃特别重大事件,尽管公共矿池只需对受托矿机承担分红支付义务,但鉴于算力战的残酷性,败者矿池可能面临可以预见但难以防范的难以支付分红费的特殊情形,故以民法之诚信原则,提前告知并取得算力持有人的特别授权乃应有之义,何况算力持有人亦有权作出与所在矿池站队的相反选择。

算力战的争议标的乃BCH底层协议的开发主导权,非比特币现金本身,也非通常意义上的基于同一协议的区块记账权。因此,算力战并不直接侵占对方的财产,即使胜者通吃,其获得的也只是自己算力所挖出的部分,这一点在比特币的白皮书中也有描述,“但是整个系统也并非就此完全受制于攻击者的独断意志了,比方说凭空创造价值,或者掠夺本不属于攻击者的货币。这是因为节点将不会接受无效的交易,而诚实的节点永远不会接受一个包含了无效信息的区块。”比特币底层协议的开发主导权在法律上应当属于民事权利。

故算力战系发生于民事主体之间,为产生、变更、终止民事权利的行为,且参战、应战均属自愿,我国民法总则第133条规定,“民事法律行为是民事主体通过意思表示设立、变更、终止民事法律关系的行为”,故算力战是典型的民事法律行为,受民法约束。

与战争系两个国家之间发生的国际公法行为不同,与刑事、行政系国家公权力与公民之间因犯罪、违法而发生的国内公法行为也不同,算力战属于私法行为,如发生于不同国家的民事主体之间,则属于国际私法行为。

对于民事行为或私法行为,国际通用规则是,“法不禁止则可为”。我国民事总则第5条亦规定,“民事主体从事民事活动,应当遵循自愿原则,按照自己的意思设立、变更、终止民事法律关系”,第8条规定,“民事主体从事民事活动,不得违反法律,不得违背公序良俗。”第十条规定,“处理民事纠纷,应当依照法律;法律没有规定的,可以适用习惯,但是不得违背公序良俗。”

故在没有国际公约及国内民法明确禁止算力战的情形下,发生于BCH社区的算力战,在法律上是合法的。实际上,任何一个新型行业,法律在早期都难以直接介入,行业的自我规范、自我约束更为重要,比特币的协议演进该采取何种规则,比特币的参与人最专业、最清楚,应当由比特币的参与人自我决定,自我实现,法律只需充当最后的守门人。

2、算力战系商业竞争行为,应受反不正当竞争法的约束。

如前所述,算力战的交战双方均系矿工,处于相同行业;二者同为争夺比特币底层协议的开发权,存在竞争关系,故算力战系典型的商业竞争行为,应受反不正当竞争法的约束。

反不正当竞争法包括国际公约与国内法。国际公约有《保护工业产权巴黎公约》、《与贸易有关的知识产权协议》(Trips)等等,国内法则有各国制定的《反不正当竞争法》、《公平交易法》等。我国的《反不正当法》几乎吸收了大部分发达国家国内法和前述国际公约的全部优点,其立法技术在国内诸法律中遥遥领先,可作为本文的引用。

《中华人民共和国反不正当竞争法》在总则第2条规定了商业竞争的基本准则,“经营者在市场交易中,应当遵循自愿、平等、公平、诚实信用的原则,遵守公认的商业道德。本法所称的不正当竞争,是指经营者违反本法规定,损害其他经营者的合法权益,扰乱社会经济秩序的行为。”此处经营者包括服务提供者。在分则第二章规定了十一项不正当竞争行为,与算力战有关的可以概述如下:

不得捏造、散布虚伪事实,损害竞争对手的商业信誉、商品声誉;不得侵犯他人商业秘密;不得虚假宣传;不得擅自使用他人名称、姓名、装潢、注册商标;不得以排挤对手为目的低于成本销售;独占经营者不得限定他人购买指定服务以排挤对手等等。

因不正当竞争而造成对方损害的,应当承担损害赔偿责任,损害难以确定的,赔偿额相对于因侵权行为所获利润和合理调查费。

算力战的交战双方通常涉及跨国主体,故有关司法管辖和实体法律,应当适用国际私法,不赘。

3、算力战的参战各方应尽最大可能保护普通用户的财产权利,此系法定义务。

就算力战51%攻击的机理而言,普通用户只要在算力战期间不交易、不提币、不充币,其比特币对应的财产权利不会受到任何影响。问题在于,算力战的持续时间难以预料,算力战的参与各方除了直接对峙的矿工,亦包括钱包商、交易所、场外交易商等,则仍有可能因两链缠杀而出现丢币现象,此种情形更易出现于急于交易、急于表态的交易所、钱包商,从而损害了普通用户的财产权。

即便是真实的战争,现代文明也强调不得伤害平民,不得虐待俘虏,为此国际社会专门制定了相关公约,如《关于战时保护平民的日内瓦公约》(第4公约)、《关于战俘待遇的日内瓦公约》(第3公约)等等,举重以明轻,算力战在战时期间,应当尽最大可能保护普通无辜用户的币财产权利。

我国《民法总则》第3条规定,“民事主体的人身权利、财产权利以及其他合法权益受法律保护,任何组织或者个人不得侵犯。”因此普通用户的财产权利受法律保护,算力战的交战双方及其他参与方,不得以任何理由侵犯普通用户的财产权。此处财产权主要指比特币等数字货币。至于比特币等数字货币是否构成财产权的客体,非本文阐明内容,但也勿需过多争议,当然是。

据此,笔者认为,参战各方在算力战期间有两大义务,一是如实告知义务,二是技术防范义务。如实告知义务,是指参战各方有义务就宣战、应战、开战时间、停战时间、站队方向等重大问题向公众作出如实告知,算力战不是国家间的战争,即使基于战术考虑,也不存在不宣而战,不宣应战、秘密作战等;技术防范义务,是指与普通用户的财产利益攸关各方,如交易所、钱包商等应当在算力战期间尽最大努力或最善义务采取技术防范措施,以防止用户出现财产损失。

凡违反上述义务者,均有可能在算力战结束后遭到受损用户的法律追索。

from: 刘晔律师;比特币算力战(Hash War)的法律分析

http://www.bsvers.com/43.html

THE END