本站专注区块链信息及金融服务,但不代表任何投资建议

算力战到底怎么打?——PoW算力是如何决定协议升级的

闪电HSL ·

2018年10月18日

热度: 10282

如果出现算力分成完全对立的两方,并且至少有一方不愿意分裂,并且执意要求对方同意自己的路线,那就会出现算力战。

第0章 引言

比特币现金社区因为11月15日的升级出现分歧,算力是决定BCH走哪个方向的关键,这就是pow链?#29616;?#29702;方式。算力到底是如何决定比特币协议改进方向的?

 

第1章 算力投票

如果全网面临协议更改,算力分成愿意升和不愿意升两类,如果冲突不?#29616;兀?#30452;接使用算力投票的方式就可以决定。

比特币协议集里有一整套投票方法,用的最广泛的就是BIP9。矿工通过在coinbase交易的input字段里打出标记来声明自己是不是支持?#25345;?#21327;议。

BIP9一般是通过统计最新的1000个块的支持率。需要升级的协议可以捕捉支持率,比如设定好超过75%的块支持,就锁定协议升级。

锁定协议升级后,那些不支持的算力就必须升级了,否则就会被大多数社区孤立掉,变成一种分叉币。

如果投票始终达不到设定好的支持率,并且过了投票周期,?#19988;?#33324;就认定为放弃此升级了。

 第2章 什么是算力战?

如果出现算力分成完全对立的两方,并且至少有一方不愿意分裂,并且执意要求对方同意自己的路线,那就会出现算力战。

但算力战到底怎么打,其实没有真实案例可借鉴。我们从逻辑上判断,一步一步解析出算力战的打法。

算力战的目的是什么?是为了自己的一协议版本继承整个经济生态,阻止生态分裂。

算力战的敌人是谁?算力战的参战方应该集中在生产区块的各方,就是带算力的完整节点full node。更具体的说是“矿工+矿池构成的完整节点”。运行不兼容的协议的“矿工+矿池完整节点”之间互为敌人。

算力战中,用户不是敌人。包括交易所、钱包、和dapp等生态节点的一切成员,我们可以将这些视为平民。平民不参与战争,也不应该被卷战争。

算力战的武器是什么?51%攻击,配合最长链是有效链规则。

算力战中牺牲的士兵是什么?是无效的区块。

算力战最后如何评判胜负?一方“矿工+矿池完整节点”不再打包和对方不兼容的协议的区块,要么要退出这条链,要么服从对立方的协议。

那算力战到底怎么打?

第3章 两个战场的算力战

算力战的一种打法是,对立的双方先各自挖出一条链,先分裂,然后双方各自派部分算力在自己的链上挖(防守),同时派部分算力到对方链上去挖(进攻)。有可能出现一方无意进攻,只专注防守,也有可能出现双方都有攻守。

进攻的方式就是通过51%攻击(或叫藏块攻击),配合最长链为有效链原则,重组作废掉对方的区块。

在决战结束前,就是分裂成了两条链,两个币。对所有用户来说,都是两条链,两个币。在决战结束后,会回到一条链,一种币。

藏块攻击是自己挖到块后不广播,而是连续挖到多个块(超过对方挖的块数)后一下子广播出去,让自己这些块处在最长链上,从而孤立掉对方挖出来的块。

一般想要成功发起这样的攻击,至少需要75%的算力优势才可以稳赢。只有75%的优势算力才有机会不停孤立掉25%的算力出的块。因为运气成份在。

假设运气双方五五开,75%的算力在最倒霉的情况下的?#23548;?#31639;力是 75%*50%=37.5% ,而25%的算力在运气最佳的时候?#23548;?#31639;力是 25%*150%=37.5% 。双方持平。所以想要稳赢,进攻方需要保持75%的算力优势。如果做不到这样的优势,那双方只能是互有损失。

用户是平民,所以算力战双方都守规则的话,用户发的绝大多数交易都会被重放到两条链上都成立。

最理想的情况下,进攻方有绝对的优势,75%的优势,而且进攻方的藏块里是不会打包交易的,这样让用户发的交?#33258;?#36825;条链上是永远得不到确认,但用户在另一条链上是可以得到确认的。这样对用户来说,相当于只有一条链存在。

但如果不存在绝对的算力优势,两个战场都是只有相对优势,那对用户来说就是灾?#30740;?#30340;。因为交易会在得到确认后,突然又因为区块被重组而确认数成新变成零确认;有时候交易会在一条链上得到确认,有时候又可能在两条链都得到确认。本质上,这种情况下,链是无法使用。

另外一种情况是,因为有新协议更新,用户发的交易可能会包含一些新的协议规则,这样就可能在其中一条链上是无效的,永远不会在这条链上得到确认。这样就会更复杂。

基本上,如果出现这样的?#24403;?#31639;力战,用户最好的选择就是暂停使用。

第4章 同一个战场的打法

另外一种打法是,从开打,到结束,都始终只有一条链,一个币,从未分裂。

我们把这种打法对立的双方分成进攻方?#22836;?#23432;方。进攻的一方为了不被分裂出去,始终兼容防守的一方的协议。即进攻方广播出来的区块100%符合防守方的协议,这样只要有进攻方的区块被广播,防守方就依据处在最长链的块为有效的原则进行挖矿。进攻方的区块绝对不会打包在协议规则上会被防守方拒绝的区块。

进攻方只是趁机使用51%攻击(或叫藏块攻击),孤立掉防守方的区块。

这种情况下,对所有的用户来说,只存在一条链,一个币。但用户发出去的交易,哪怕是得到了防守方的区块确认,也有可能会因为防守方的区块被重组而退回到零确认,或者突然变成进攻方的区块确认。也就是说,用户发出去的交易是安全的,但可能会前后出现在不同的区块高度上。

这种打法,对于进攻方来说,是可以临时性忍受链上存在自己不想要的一些协议规则的,但发誓要修改掉它。

只要打完了之后,再来拒绝这些规则。

这种打法,对防守方来说,可以通过改变协议来躲避进攻方,让进攻方不再兼容自己的协议。但因为比特币都是开源的,只要防守方改协议,进攻方都知道,始终追着防守方屁股进行打,这是躲不掉的。除非搞成不开源的升级,但这是不可接受的。

这种打法,对于用户来说,可以放心大胆地使用防守方的协议,只要得到进攻方的区块的确认,那就是安全的确认,但得到防守方的区块确认,就还要考虑会不会被重组。

第5章 精神病打法

其实还有一种打法,对整个生态来说,绝对是大好事,受损的只有对立的算力双方,那就是烧币打法。这是老 刘?#36828;?#22823;开想出来的。

?#28909;?#25171;算力战本质上就是烧钱,打掉一个区块,就最少浪费掉12.5个币。那大家干脆不要真打,就直接烧币好了。

双方各自生成一个黑洞地址,为了安全起见,干脆使用OP_False脚本。对立的双方就往对方黑洞地址里打币,一笔12.5币起。最后谁打的多,谁胜,然后算力统一运行获胜方的协议。

2333max,各位,这只是一个玩笑,别当真。

第6章 结束语

真好玩,大家快来看热闹。


文章声明:本文为火星财经专栏作者作品,版权归作者所有。文章为作者本人观点,不代表火星财经立场。

声明:本文为入驻“火星号”作者作品,不代表火星财经官方立场。转载请注明出处、作者和本文链接
提示:投资有风险,入?#34892;?#35880;慎。本资讯不作为投资理财建议。
语音技术由科大讯飞提供

推广
相关新闻

涨幅榜

你可能?#34892;?#36259;的内容
下一篇

曲速未来消息:被遗弃的推文计数器遭恶意脚本劫持

寻求报道 寻求融资 APP下载
APP下载 扫描下载APP
新疆18选7开奖结果