概要
迄今为止,仅有硬分叉和软分叉两种方式来升级比特币网络。两种方式各有缺点,软分叉通过矿工激活,对于普通的节点操作者,没有途径来发出他们的声音,也没有机制来反对该分叉。另一方面,硬分叉需要大家一起升级,但是在激活时会有风险。
本提案的目的是:使用已知的拓展点来升级比特币网络,在其中引入新功能。因为当前节点们知道这些拓展点,所以他们可以注意到这些功能的激活,甚至即使他们不知道这些功能,也会采取与之相应的行动。
本提案定义了OP_NOP1, OP_NOP4, OP_NOP5, OP_NOP6, OP_NOP7, OP_NOP8, OP_NOP0 and OP_NOP10
操作码来作为拓展点,未来的BUIP应该指定它们在适当的时机添加的拓展点。
BUIP激活后,软分叉必须考虑51%攻击和相应的处理,添加新的拓展点应使用现有的拓展点,或通过一个硬分叉。
拓展激活,信令和锁定
为了使用一个新的拓展点,矿工可以使用BIP的信号集发信号,来通知他们的意图。当该拓展点激活时,节点可以使用拓展点来接受区块,或者使用他们的AD参数来等待,看该区块是否被网络上的大部分节点所接受,然后再决定是否接受该区块。如果节点不知道这些新功能,或者不希望激活它,如果有多数节点使用新的拓展点来拒绝该区块,该区块将成为孤块。
该处理进程会被每个拓展点来重复。
节点用户可以像他们在MG/EB/AD
中所做的,用信号通知它们愿意激活的拓展,并以/来分隔用户的代理数据。对于OP_NOP操作码,节点可以使用OP_NOP前缀来发送信号,后面跟着一个星号分隔的数据列表,来说明他们想激活哪个OP_NOP操作码。例如:OP_NOP1,5,8 表明该节点希望激活OP_NOP1,OP_NOP5,OP_NOP8操作码。其它OP_NOP操作码的使用将被拒绝,直到AD区块被构建在使用该操作码的第一个块的顶部。
结论
该BUIP引入了一种升级机制来安全的关闭硬分叉,同时大大减少所涉及的风险。在过去几年,大多数对于共识代码的升级都符合该BUIP的描述,除了P2SH和SegWit。这个处理过程相对成功,并且应该成为未来升级的一种模式。增加了每个节点表达自己意图的能力,极大地保证了每个参与者的利益一致。
引用
原文链接 : https://github.com/BitcoinUnlimited/BUIP/blob/master/039.mediawiki
本文由 Copernicus团队 姚永芯
翻译,转载无需授权。