主页 > imtoken官网版 > 比特现金BCH网络硬分叉协议升级技术分析

比特现金BCH网络硬分叉协议升级技术分析

imtoken官网版 2023-07-29 05:13:31

根据 bitcoincash.org 网站提供的信息,比特币现金(BCH)网络将在 UNIX 时间戳 1542300000 进行硬分叉协议升级。使用 BCH 网络的企业和个人应检查他们正在运行的软件,以确保自己的软件是与此升级兼容。

目前兼容客户端有Bitcoin ABC 0.18.2、Bitcoin Unlimited Cash Edition 1.5.0.0比特币和比特币现金有哪些相同点,bcoin-bcash 1.1.0即将兼容。

(如果用户不熟悉或者其他原因,也可以将资产存放在支持本次硬分叉升级的可靠交易所。目前已经明确支持本次升级的交易所包括Binance、Huobi、Coinbase、Poloniex等..当然如果读者对自己的技术很有信心的话,自己操作会是更好的选择,因为如果出现分链的话,可以第一时间拿到分叉的币。)

以下是本次硬分叉协议升级的具体说明:

当最后11个区块(MTP-11)的中位时间[1]大于或等于UNIX时间戳1542300000(译者注:北京时间2018年11月16日0:40:0)时,比特币现金(BCH)将执行网络共识规则按照本规范进行升级。 从下一个区块开始,这些共识规则更改将生效:

删除拓扑交易排序约束并强制规范交易排序;

启用 OP_CHECKDATASIG 和 OP_CHECKDATASIGVERIFY 操作码;

执行最小交易规模规则;

对 scriptSig(脚本签名)执行“仅推送”规则;

执行“清洁堆栈”规则;

以下部分不是共识更改,而是对比特币现金 (BCH) 实施的建议更改:

自动重放攻击保护比特币和比特币现金有哪些相同点,用于未来升级;

规范交易排序

除 coinbase 交易外,区块中的交易必须按交易 id 升序排列,交易 id 将被解释为 256 位小端整数(little endian integers)。 coinbase 交易必须是区块中的第一笔交易。

操作码(OpCode)

新的操作码 OP_CHECKDATASIG 和 OP_CHECKDATASIGVERIFY 将按照 op_checkdatasig.md [2] 中的指定启用。

最小交易规模

小于 100 字节的交易应被视为无效交易。 这可以防止黑客利用默克尔树漏洞对轻钱包(SPV)进行欺诈交易攻击[3]。

仅推送

如果脚本签名中出现数字大于 96(十六进制编码为 0x60)的操作码,则交易将被视为无效。 这与比特币 BIP 62 #2 规则 [4] 相同。

清除堆栈

为了使交易有效,在脚本评估完成时,堆栈中必须恰好有一个非零条目。 如果堆栈上仍有其他数据元素,则脚本计算结果为“false”。 这与比特币 BIP 62 #6 规则 [4] 相同。

自动重放攻击保护

当最后 11 个区块(MTP-11)的时间中位数 [2] 小于 UNIX 时间戳 1557921600(2019 年 5 月 15 日)时,比特币现金(BCH)全节点必须执行以下规则:

forkid[5] 等于 0。

当最后11个区块(MTP-11)的时间中位数[1]大于或等于UNIX时间戳1557921600(2019年5月15日)时,执行2018年11月共识规则的比特币现金全节点应该做如下改动:

更新forkid[5]等于0xFF0001,以0xFF开头的ForkID将保留用于未来的协议升级。

这个特殊的共识规则绝不能由比特币现金软件钱包实施。 升级钱包后,什么都不会改变。