专栏名称: 闪电HSL
读书分享
目录
相关文章推荐
巴比特资讯  ·  国产模型指令跟随全球第一!来自LeCun亲推 ... ·  18 小时前  
巴比特资讯  ·  仅仅一天,Gemini就夺回了GPT-4o拿 ... ·  18 小时前  
巴比特资讯  ·  烧掉OpenAI ... ·  2 天前  
巴比特资讯  ·  Grok3证明黎曼猜想,训练遭灾难性事件?数 ... ·  4 天前  
巴比特资讯  ·  马斯克新官上任再起诉OpenAI!新证据称I ... ·  4 天前  
51好读  ›  专栏  ›  闪电HSL

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

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

正文

0 引言

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

 

1 协议改变的方式

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

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

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

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

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

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

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

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

 

2 比特币协议改变举例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

3 结束语

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




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