Hi Guest

More contents, please log on!

Bitmere.com 区块链前沿 Content

软分叉升级规范BIP9

123458512
25 0 0
比特币的软/硬分叉升级一直采用块的version字段来完成。由于是一个分布式系统,必然需要采用灰度发布模式。
传统的升级过程
在实施BIP9前是这样升级的,当前块版本为version,那么新块版本是version + 1,当近1000个块中的版本超过95%都是新版本时,则触发启用新特性,同时不再接收旧版本号的块。由于中间存在1000个块的窗口期,大约一周,所以给出足够的时间给当前网络中的节点实施升级。

上图是来自BTC.COM统计的比特币历史上几个升级过程,最近的v3升级v4的过程大约花费了一个半月左右。前面几次的升级时间更长。
这种依次递增版本号的方法,有一个明显的弊端:每次仅能进行一个特性升级。当需要同时进行多个升级时,则无法完成。BIP9的诞生就是为了解决这个问题的,同时把向下兼容性升级过程制定了规范。
BIP9特征
支持多个特性同时升级新增投票时间区间新增锁定期
块的version字段是4字节,意味着有32位比特,前三位目前固定为001,那么剩余29个比特可以用于特性设置,与激发某个特性,则将其对应的位设置为1。

二进制格式:
   001   0 0000 0000 0000 0000 0000 0000 0000
------   ------------------------------------
固定保留  29个特性标识位
状态变迁
BIP9某个特性的状态有:
DEFINED 定义。每个特性的升级设定会写到某一个版本的bitcoind中,并部署下去。STARTED 启动。启动后会有两个可能的变迁状态:LOCKED_IN, FAILED。LOCKED_IN 锁定。一旦进入锁定态,则必然会激活。锁定期为2016个块。ACTIVE 激活FAILED 失败


MTP是最近11个块的时间戳中位数。区块链上的块时间并不是按照高度递增而严格递增的,但MTP时间是严格递增的(早期可能不能严格遵守)。
能够进入锁定期(即得到全网同意)的条件是在2016个块中,支持的块数量达到95%,在测试网络上是75%。窗口期从之前的1000提升至2016个块,即一个难度周期,约两周。同时,还增加了2016个块的锁定期,之后才能正式激活特性。这比之前的升级,变得更加稳健,预留出充分的时间,同时意味着特性的落地周期变长。
首个采用BIP9的软分叉
BIP68/112/113是首个采用BIP9方式进行升级的软分叉,随bitcoind-v0.12.1发布。使能位采用最右侧位,起始时间(starttime)是2016-05-01 00:00:00,终止时间(timeout)是2017-05-01 00:00:00。
若要支持BIP68/112/113软分叉,那么版本号应该是: 0x20000001,二进制为:0010 0000 0000 0000 0000 0000 0000 0001。
另外BIP109(Classic 2MB HardFork)也是采用的是BIP9规范,使能位是最左侧位,但触发窗口期与锁定期的设定均未采用BIP9的定义。其版本号是:0x30000000,二进制为:0011 0000 0000 0000 0000 0000 0000 0000。
如果版本号为:0x30000001,二进制为:0011 0000 0000 0000 0000 0000 0000 0001,则意味着同时支持BIP68/112/113和BIP109。
BitMere.com is Information release platform,just provides information storage space services.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
You have to log in before you can reply Login | 立即注册

Points Rules

Write the first review

123458512 小学生
  • Follow

    0

  • Following

    0

  • Articles

    5

Promoted