区块链/等级 III · 网络/3.3 共识与治理/课程 6
SegWit激活与UASF
算力与经济利益之间的博弈
材料提供历史数据的区块浏览器(例如 blockchain.com 或 mempool.space)GitHub上的BIP仓库用于记录版本位及锁定高度的笔记本
好奇
- 为何一个拥有广泛用户支持的软分叉,在大半年时间里一直未能激活?
- 用户激活软分叉(UASF)如何将权力的天平从矿工转向全节点运营者?
- 是什么避免了2017年8月1日BIP148(UASF)导致的链分裂?
探索
- BIP141,即隔离见证,采用BIP9信号机制,要求一个2,016区块周期内95%的区块发出就绪信号。整个2016年及2017年初,矿工的支持停滞在全网算力的三分之一左右。这一僵局造成了紧张局势,因为标准激活机制依赖矿工自愿表明已准备好执行新的共识规则。
- 化名开发者Shaolin Fry于2017年3月提出BIP148,作为用户激活软分叉(UASF):从2017年8月1日起,参与的节点将拒绝任何未发出SegWit信号的区块。如果大多数矿工无视它,就有使链分裂的风险,但它让设定截止日期的一方从矿工变成了用户的节点。
- 2017年5月签订的《纽约协议》旨在解决矿工与企业之间的矛盾。各签署方承诺首先启用SegWit功能,之后再进行名为SegWit2x的2 MB硬分叉操作。大多数Bitcoin Core项目的贡献者反对这一硬分叉方案,因此没有参与其中。
- 为避免8月的链分裂,BIP91于2017年7月被采用。这是一种独立的部署方案:一旦有80%的区块在位4上标记了相应信号,该方案就会生效。一旦启用,BIP91节点会拒绝那些未标记SegWit信号的区块,这促使SegWit所需的95%信号比例得以达成,从而使链仍能与BIP148节点兼容。
- SegWit于2017年8月9日(第479,808个区块)锁定,并于2017年8月24日在第481,824个区块激活。2017年8月1日,比特币现金硬分叉作为一个独立事件发生,推动者是那些拒绝SegWit方案、主张更大区块的人。原链继续沿用SegWit,而比特币现金则以自己的扩容策略分道扬镳。
- 原定于2017年11月进行的SegWit2x硬分叉,因交易所和用户担心永久分裂而强烈反对,最终被取消。其教训至今仍有争议:UASF支持者认为是用户的节点迫成了这一结果,而另一些人则认为是矿工和企业通过纽约协议和BIP91选择了激活SegWit。无论哪种解读,事实都证明,有争议的变更需要同时获得矿工、企业和节点运营者的支持。
关键事实
- BIP148(UASF)由Shaolin Fry于2017年3月提出,规定节点从2017年8月1日起拒绝未发出SegWit信号的区块。
- 在矿工通过BIP91发出信号后,SegWit于2017年8月9日(第479,808个区块)锁定,并于2017年8月24日在第481,824个区块激活。
- 2017年8月1日,比特币现金从比特币分裂出来,形成了一次硬分叉,其区块大小更大;而原始比特币链则启用了SegWit功能。
- 纽约协议(2017年5月)由代表约83%算力的公司签署;其中的2 MB硬分叉部分SegWit2x于2017年11月被中止。
- SegWit的BIP9信号于2016年11月开始,但尽管获得了广泛的用户支持却陷入停滞,由此催生了作为反制措施的UASF。
- BIP91在80%的信号比例下锁定,随后强制要求SegWit信号,从而避免了BIP148导致的链分裂。
练习 九、六、三、一
9收集列出2016年11月至2017年11月期间与SegWit启用流程相关的9个重要日期。
6归类将这9个日期分为6个阶段:初始停滞期、UASF提案提出期、纽约协议达成期、BIP91被采用期、SegWit锁定/启用期,以及分叉后问题解决期。
3提炼将这6个阶段归纳为决定激活过程结果的3种核心动态。
1凝结用一句话解释,为什么全节点运营者虽不控制挖矿硬件,却对比特币协议变更有重大影响力。
事实核查
日期、数字及数据均依据下方列出的已发表资料进行核实。
- BIP141: Segregated Witness (Consensus layer)
- BIP148: Mandatory activation of segwit deployment
- BIP91: Reduced threshold Segwit MASF
- J. Bier, The Blocksize War (2021)