SegWit2x是如何工作的?

SegWit2x是基于纽约共识(New York Agreement)的比特币升级方案,主要包括了两个功能升级:隔离见证激活和2MB区块升级,目前已经发布了Beta版

Hambuger2x

为了更清楚地解释SegWit2x是如何工作的,我们先从比特币现有的升级方案说起:

矿工激活软分叉 —— MASF(Miner Activated Soft Fork)

在MASF出现之前,比特币的技术升级往往是由开发者决定一个激活时间,在激活时间之后,只有升级的区块才能被全网接受。比如中本聪就曾以此方法针对丢币漏洞、区块大小和Sigops限制、交易额溢出等问题进行过升级修复。

还有一个例子是P2SH的激活,激活时间是由Gavin Anderson指定的。与之前稍有不同的是,P2SH是经过了一段时间对两个不同P2SH技术方案(BIP16和BIP17)的算力投票后,然后在某一确定时间进行激活的。

这样的激活方式优点是简单粗暴、见效快;缺点是对于旧节点不够友好,一旦新功能被激活,未升级节点产生的区块会被立刻拒绝。随着比特币用户增加、价值变大,这样的升级方式显得落后,随之也就有了第一个MASF方案 —— IsSuperMajority,简称ISM,它的规则是这样的:

  1. 在对比特币协议进行升级时,对新版本区块的nVersion值进行简单+1操作;

  2. 升级开始后,如果在过去1000个区块(6~7天)内,有750个区块的nVersion为新版本号(也就是说75%的算力已升级),那么新功能会被激活。所有新版本软件产生的区块会按照新规则进行验证,未验证通过会被拒绝。而旧版本软件产生的区块依然按照旧规则进行验证,只要合格同样可被网络接受。

  3. 如果标识为新版本的区块继续增加,达到在过去1000个区块内有950个区块的nVersion为新版本号,那么所有由旧版本软件产生的旧版本号区块会被拒绝,这样软分叉激活就完成了。

使用ISM进行升级的功能包括了BIP34(nVersion为2)、BIP66(nVersion为3)和BIP65(nVersion为4)。ISM较之以前的方案为新功能的验证和旧节点的安全升级预留了充裕的时间窗口,同样问题也是存在的。ISM每次升级nVersion值+1,一次只能激活一种新功能,想要激活另一种新功能就需要等待上次新功能完全升级完毕再进行。这样的限制对同时为多个功能进行算力投票造成了障碍,于是有了新的MASF方案——BIP9.

BIP9定义了一种新的升级方案,使用nVersion的0~28bits中的某一bit来表示激活某一种特性,规定新功能升级流程的起始时间和过期时间,并清晰定义了升级流程中的不同状态和状态迁移条件。

bip9 state
  1. 当MTP(表示一个区块和它之前10个区块的时间戳中位数)大于起始时间后,进入STARTED状态,这时矿工可以开始对该功能进行Signal(将对应的bit设置为1);

  2. 如果在STARTED状态中的一个完整难度调整周期内(2016个区块),有1916个区块将对应bit设置为1(表示95%的算力已经激活该功能),那么在下一个周期内进入LOCKED_IN状态;

  3. LOCKED_IN状态将会持续一个难度调整周期,目的是为尚未设置对应功能bit的矿工留出缓冲时间,在这个周期内,未设置bit的区块依然可被接受;

  4. LOCKED_IN周期结束后,会自动进入ACTIVATED状态,这时未升级新功能的区块都将被拒绝,同时,用于升级的bit也会被释放;

  5. 如果在过期时间前仍未完成激活,那么升级失败。

第一个使用BIP9进行升级的功能是CHECKSEQUENCEVERIFY opcode,这是一个由BIP68/BIP112BIP113共同定义的升级,使用bit0做为标识位。这次BIP9升级自UTC时间2016年5月1日开始,在417312区块进入锁定状态,随着新功能在419328区块被激活,bit0被重新释放。BIP9定义的升级方式,为比特币升级提供了更加灵活的方式,在nVersion不同的bit上标识的新功能,可以同时进入激活流程且不会互相干扰。

SegWit(BIP141/BIP143/BIP147)同样使用BIP9进行功能激活,使用bit1做为标识位,定义起始时间为UTC时间2016年11月15日凌晨,过期时间为UTC时间2017年11月15日凌晨。但由于比特币社区各方对于扩容方案持有不同意见,到目前为止,SegWit区块仍然没有达到LOCKED_IN的阈值。为了在过期时间前激活SegWit,社区内出现了一种充满争议的升级方案 —— BIP148

用户激活软分叉 —— UASF(User Activated Soft Fork)

BIP148是为了激活SegWit而被提出的,它制定一种强制激活规则:在2017年8月1日到2017年11月15日这段时间内,如果SegWit没有被激活且没有被锁定(依然处在投票阶段),那么在这段时间内没有将SegWit标识位bit1置位的区块都会被拒绝。那么在BIP148的区块链上,将只会有SegWit区块存在,在一个完整的难度调整周期后,SegWit将会进入BIP9的激活状态。

严格来讲,这不是一个由用户投票来激活的方案,BIP148强制指定了一个时间来要求全部算力必须标记SegWit,否则会被BIP148拒绝,并随时面临reorg的风险。同时,这也不是一个直接激活SegWit的方案,这是一个通过软分叉来帮助SegWit进入LOCKED_IN阶段的方法,起到了间接激活的作用。

在算力意见不统一的前提下,执行BIP148-UASF是危险的。BIP148节点会只接受SegWit区块而拒绝非SegWit区块,非BIP148节点会同时接受SegWit和非SegWit区块,所以在UTC时间2017年8月1日后,会有很大概率分裂成两条链,对于非BIP148链来说,一旦区块高度被BIP148链超过,那么就会面临着reorg,之前挖到的区块全部作废,矿工承担了巨大的损失。同时,非BIP148链为了保护自己不被reorg,也会发起防御性的硬分叉来拒绝激活了SegWit的区块,整个局面会十分混乱。同时,经济因素也会是分叉过程中的决定因素,不在本文的讨论范围内,就不做多说了。

SegWit2x —— SegWit、BIP91和BIP102的合体

SegWit2x版本中除了会实现全部的SegWit功能外,还实现了BIP91BIP
102
。BIP91的目标是更加缓和地间接激活SegWit,防止BIP148-UASF造成的混乱局面。BIP91基本沿用了BIP9的MASF激活步骤,设置起始时间为UTC时间2017年6月1日,过期时间为2017年11月15日(同SegWit一样),使用bit4做为标识位,但是在进入LOCKED_IN状态的数值有所调整,从『2016个区块中的1916』更改为『336个区块中的269』(将激活周期从大约2周降低到了2.3天左右,同时将激活阈值从95%降低到了80%)。

calendar

了解了BIP91的机制,我们对照着SegWit2x工作组发布的时间表来看,一个关键的时间点是2017年7月21日,这是矿工部署节点并激活bit4和bit1的时间。同时我们来看一下未来最近几次难度调整的的时间:假设在未来一段时间内算力没有大幅波动,一个难度调整周期近似看做13.5天,那么可以估算出:区块473760会在7月2日左右被挖出,区块475776会在7月15日左右被挖出,区块477792会在7月28日左右被挖出,区块479808在8月10日左右被挖出。由此进一步推测:

  1. 7月21日签署NYA的矿池开始部署SegWit2x节点,如果立刻得到80%以上算力支持,激活bit4和bit1,那么在2.3天后的7月23日左右,BIP91会进入LOCKED_IN状态。

  2. 再经过2.3天至7月25日左右,进入ACTIVE状态,这时所有未激活SegWit标识位bit1的区块都将被拒绝,又因为SegWit2x算力占据绝对优势,小算力跟随的概率较大,所以届时全网的区块会全部为标识bit1的区块;

  3. 时至难度调整的7月28日,由于SegWit2x仅部署在后半个难度调整周期,前半个周期(7月15日~7月21日)未进行部署,且因为Segwit基于BIP9激活,需要整个周期内95%的算力支持,所以在这个时间点SegWit不大可能进入LOCKED_IN状态;

  4. 那么紧接着的时间点是8月1日的BIP148-UASF,由于BIP91的激活,整个网络已经完成了软分叉,此时网络上已经全部都是激活SegWit标识的区块了,所以BIP148也就不再起作用了;

  5. 8月10日的难度调整时,上一个周期的SegWit算力支持已达到了95%以上,这时便进入LOCKED_IN状态,随后在8月23日左右的难度调整时,SegWit全面激活。

另一个SegWit2x实现的是BIP102,也就是将原有1MB大小的区块容量扩展到2MB。与通过指定时间和指定算力阈值进行分叉的方法不同,SegWit2x的BIP102实现要求在SegWit功能激活高度后的第144*90个区块开始接受2MB大小的区块(按照之前的推算,SegWit激活大约发生在8月23日,那么2MB的硬分叉会发生在11月20日左右)。除了将区块大小增大到2MB,BIP102还将包含Witness数据的区块大小从4MB提升到了8MB、单个TX的Sigops限制从16000提升到了32000等。

总结

SegWit2x的Beta版已经发布,涉及到软分叉的部分已基本完成,同时testnet5也已上线。由于2MB区块的硬分叉要到11月20日左右才会发生,所以部分关于硬分叉的细节仍然在讨论和实现中。SegWit2x的快速发布,以及矿工对NYA的签署,降低了8月1日BIP148-UASF到来时的风险,同时为2MB分叉预留了时间,在当前是值得社区进行广泛测试和评估的。

欢迎关注我的微博

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 如果最近密切关注比特币,也许注意到了关于“分叉”的话题很流行。 简单说大约两周内比特币网络可能会面临一些协议的改变...
    PRKV阅读 1,619评论 0 2
  • 蓝天有多高 河水有多长 我曾静静地想 也曾深深向往 花谢花又开 云散云又来 只感叹时间 走的太快 远方啊 你那博大...
    邱小函阅读 277评论 0 1
  • 日出日落每天都循环往复 月圆月缺每月都交相呼应 就连那冷热不均 南北不同的春夏秋冬 也把一年仅有的三百六十五天 整...
    渔夫镕谷阅读 498评论 2 25
  • 不是没有时间 不是思想没有交集 不是不想你 找不到什么东西 什么也无法代替 我对你的爱无法言语 你给我爱扑朔迷离 ...
    沧海书生阅读 356评论 0 1
  • 生活是自己的 父母孩子是自己的 上孝父母,下教孩子 以谦卑的心思考 强大的心...
    沉浸在自己的世界里阅读 311评论 0 1