详解有关软分叉和硬分叉

vatten Yellow v2 · 2016-01-24 01:59 · 139 次点击 · 4.30910822

通常有个看法是软分叉比硬分叉更温和,因为不需要网络所有节点都一起升级,但其实软分叉和硬分叉在本质上差别不大,都需要绝大多数算力支持,在这里详细解释一下

目前的触发机制是,升级后的版本,当最近的2016个块中有75%以上的块是新版本挖出来的,经过一段信息发布期,新版本就开始生效,产生新版本所支持的新格式的区块

举例来说,目前一部分人升级到SW,另一部分人升级到CLASSIC,这两个版本中,SW是软分叉,CLASSIC是硬分叉,但在触发条件达到之前都和原来的CORE一样,互相兼容。也就是说,任何一方如果没有获得75%的算力支持,就始终是CORE,1MB区块,不会产生新格式的区块

一旦触发条件达到,比如说最近75%的块都是运行SW的矿工挖的,那么有一段等待期,系统会建议大家在XX天内赶紧升级,然后过了XX天以后,SW的矿工就开始产生新格式的区块

SW是软分叉,这意味着当新格式的区块开始在网上传播后,没有升级的CORE节点仍然可以承认和转发这些新的区块而无需升级。这是怎么做到的?因为软分叉使用了一个障眼法,使得新格式的交易对CORE节点来说只是部分可见,全都显现为任何人都可以花的不需要签名的交易,这样就全都是有效的,就可以通过CORE的验证,也就不会产生分叉

仔细想一下,这样的障眼法在保证CORE无条件接受SW区块的同时也带来了另一个问题,即一旦有非法的SW交易,CORE也是无条件接受的,因此在CORE和SW共存的网络中,安全性会相应降低,只需37.5%的全网算力就可强行发布一个非法的SW交易

因为CORE可以兼容SW,所以很多CORE客户端可能迟迟不升级,这样就导致在很长一段时间内,SW的网络安全性都很差。此外,因为向前兼容,一些人升级到SW后发现不好用,又降回到CORE,那样导致SW节点的算力减少,而前述的发布非法交易的难度就更低了。如果SW只占50%算力,那只需25%的算力即一个矿池即可对SW网络发动攻击。如果大批人回滚到CORE,只剩下20%的SW节点,那SW的那些区块实际上就全都不可靠了。可见,软分叉表面上看起来很灵活,但这种灵活性所导致的未来的风险也是很难估量的,甘蔗没有两头甜

此外,根据BLOCKSTREAM的另一个说法,一旦SW达到触发条件后,SW节点会拒绝接受CORE矿工挖出来的区块,而CORE节点仍然会接受,这就是很严重的问题了。这是因为CORE节点同时也接受SW的区块,在SW矿工算力明显大于CORE矿工的时候,SW的链总是最长的链,CORE矿工所挖出来的区块既然不被SW节点承认,就都被孤立掉了,矿工没有任何办法使用CORE,必须全部转到SW。可见如果软分叉是这样定义的话,对矿工来说,软分叉就比硬分叉还要具有强制性,因为完全无法产生自己的链,系统只认最长的链。只有不挖矿的节点可以继续运行CORE

再来看硬分叉,比如说一旦运行CLASSIC的算力到了75%,剩下的节点就必须升级,否则就会拒绝新格式的区块而自己搞出一个分叉来。但因为这个分叉算力很低,安全性很差,几乎不会有人用,矿工挖这个分叉的矿也会严重亏损,所以也就很快被抛弃了,全网就会一致的升级到CLASSIC

结论就是,无论是软分叉还是硬分叉,最终都是需要达到一个100%全部升级的状态才能保证网络安全,所以也就没有必要在这个问题上多担忧

kcb medium avatar
1

kcb Yellow v    一个月前

软分叉更安全这种说法完全只是blockstream派系拿出来反对硬分叉分掉他们的当下绝对的统治政权的政治手段而已。
希望聪明的国人不要被这些政治手段给糊弄了。

比特币感谢地址: 1CWdUWWgdVuLi7aBHNALqijXm1aecZxCuC
vatten medium avatar
2

vatten Yellow v    一个月前

我又查了一下,有关软分叉,BLOCKSTREAM那个定义是公认的,我中间“因为CORE可以兼容SW”那段不对,把软分叉想的太兼容了。其实一旦SW节点占据75%算力,矿工必须全部强制升级,不升级的矿工挖出来的块会被孤立,所以软分叉不需要所有人一起升级这种说法对矿工来说是不对的,这里最后Charlie Lee的解释比较清楚

http://bitcoin.stackexchange.com/questions/30817/what-is-a-soft-fork

Advertisements
详解有关软分叉和硬分叉

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s