专栏名称: 闪电HSL
读书分享
目录
相关文章推荐
51好读  ›  专栏  ›  闪电HSL

比特币协议升级的种类——进一步理解软分叉和硬分叉

闪电HSL  · 公众号  · 比特币  · 2017-06-09 23:58

正文

请到「今天看啥」查看全文


0 引言

比特币协议升级到底是怎么进行的。

1 协议改变的方式

任何协议的改变就存在两种,一是规则收紧;二是规则放宽。

比如对比特币区块大小这个规则来说,现在的协议里的规则 s ize<=1M ,如果要扩容,将区块上限设定为 si ze<=2M ,这就是规则放宽。如果要缩容,将区块上限设定为 s ize<=5K ,就是规则缩小。

另外还能派生出其他方法,比如先规则收紧,再规则放宽;或者先规则放宽,再规则收紧。但这本质上是两次规则修改,可以拆分来分析。

这种对规则的放宽旧节点是能识别的,并且旧节点会拒绝承认。而对规则的收紧旧节点则无法识别,所以旧节点不会拒绝,但新节点会识别出超越了规则收紧后的旧节点行为,就会对旧节点进行拒绝。

规则收紧就是软分叉,规则放宽就是硬分叉。

但这两种都是对现有的规则进行修改, 如果在现有规则的基础上再增补新规则呢?这本质上是对规则的放宽,但可以设计成旧节点不知道你放宽了。 这种情况就非常特殊了。

老节点遵守的规则集称为 X ,如果你搞个规则 y ,要求新节点遵守的规则集是 x&&y

还拿比特币区块大小这个规则来说,老节点是 size<=1M ,然后你要求在 1M 区块之外再加一个区块,对老节点来说,不知道这个新区块的存在,只有新节点知道。这就是隔离见证的原理。

2 比特币协议改变举例

先讲简单的原有规则收紧和放宽。

比如修改难度值,这是收紧,还是放宽?

难度值对比特币区块链系统中的定义是 d iff>= 某个数值。如果你要将它调大,就是收紧规则,这是软分叉。但如果你要将它调小,就是放宽规则。这就是硬分叉。

比如修改 2100 万,这是收紧,还是放宽?

因为 2100 万上限是通过挖矿的区块奖励发放的,从第一个区块奖励 50BTC ,到挖出 2100 万的一半时,即 1050 BTC 时,就降低到 25BTC ,然后再挖到剩下的一半时,即又挖出 525 BTC 时,就降低到 12 .5BTC ,现在就是每一个块挖 12.5 BTC 。然后会一直这样下去,直到最后无限逼进 2100 万。

而区块奖励在系统中的设定是 c oin base_coin<=50BTC/25BTC/12.5BTC …… + 手续费。

所以如果你要将 2100 万下调,比如将区块奖励从现在的 c oinbase_coin<=12.5 BTC + 手续费,下调到 c oinbase_coin<=0 BTC + 手续费,那就是规则缩小,这就是软分叉。反之就是硬分叉。

修改某笔已经发生过的交易,这是收紧,还是放宽?

我们都说区块链的设计目的是要保证历史交易不可篡改,但你可以通过修改协议来实现篡改。

比如以太坊在 D ao 发生被黑客盗币后,以太坊基金会准备了两个挽救方案。一个软分叉,一个硬分叉。软分叉就是冻结掉黑客地址的币,然后再通过硬分叉拿回来。另一个方案就是通过硬分叉拿回黑客盗走的币。

在比特币区块链上其实也是一样的可以这么做的。

比特币交易验证要完成两个步骤,一个是验证锁定脚本,另一个是验证解锁脚本。要详细解释这个就太专业了,可以通俗地理解为验证交易的签名,和验证交易的目标地址。

现在如果我们禁止某个地址上的比特币,怎么做?可以将现有的交易验证规则缩小,新规则不可以验证这个地址的解锁脚本。 通俗来说就是新规则不允许打包任何来自这个地址的交易。这是一个规则收紧,就是一个软分叉。

你也可以没收某个地址的币,比如设定一个规则只允许某个地址的币发到你指定的地址。这也是软分叉。

隔离见证就是一个特殊的收紧交易验证规则,然后再增补一个新的验证规则的分叉。

这个下次再讲(其实我写完了,但我怕有错误,所以请人校核中)。

3 结束语

规则太复杂了,理解起来就难了,反正我是来回读各种资料才写出来。




(如果您觉得好,欢迎关注我的公众号: 闪电HSL,也欢迎加我微信号:13116885)














请到「今天看啥」查看全文