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

第0章引言

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

第1章协议改变的方式

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

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

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

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

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

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

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

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

第2章比特币协议改变举例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第3章结束语

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

(如果您觉得好,欢迎







































北京最有名的治疗白癜风医院
北京专业治疗白癜风的医院


转载请注明地址:http://www.kinghoo-ind.com/btsm/8152.html


  • 上一篇文章:
  • 下一篇文章: 没有了
  • 网站简介 广告合作 发布优势 服务条款 隐私保护 网站地图 版权声明