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

区块链

575人已加入

描述

根据bitcoincash.org网站提供的信息显示,比特币现金(BCH)网络将于UNIX时间戳1542300000进行一次硬分叉协议升级,而使用BCH网络的企业和个人,都应该检查自己运行的软件,以确保自己的软件与这次升级相兼容。

截至目前,已实现兼容的客户端包括Bitcoin ABC 0.18.2、Bitcoin Unlimited Cash Edition 1.5.0.0, 而即将实现兼容的客户端还有bcoin-bcash 1.1.0。

(如果用户因不熟悉或其他原因,也可以将自己的资产存放于支持这次硬分叉升级的可靠交易所,截至目前,已明确支持这次升级的交易所包括币安、火币、coinbase、Poloniex等。当然,如果读者对自己的技术的很有信心,自行操作会是更好的一种选择,因为如果万一出现了链分裂的情况,你就可以第一时间获取到分叉币。)

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

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

删除拓扑交易排序限制,并强制执行规范交易排序;

启用OP_CHECKDATASIG和OP_CHECKDATASIGVERIFY操作码;

实施最小交易大小规则;

为scriptSig(脚本签名)强制执行“push only”规则;

实施“清理堆栈”规则;

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

对于未来升级的自动重放攻击保护;

规范交易排序

除了coinbase交易之外,区块内的交易必须按交易 id的数字升序排序,它们会被解释为256位的小端整数(little endian integers)。coinbase交易必须是一个区块当中的第一笔交易。

操作码(OpCode)

新的操作码OP_CHECKDATASIG以及OP_CHECKDATASIGVERIFY将按照 op_checkdatasig.md [2]中的规定得到启用。

最小交易大小

小于100字节的交易,应被视为无效交易。这可以防止黑客利用默克尔树(Merkle tree )漏洞,针对轻钱包(SPV) [3]实施欺诈交易攻击而造成影响。

Push Only

如果在一个脚本签名当中,出现了编号大于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,将被保留,以用于将来的协议升级。

这一特殊的共识规则,绝不能由比特币现金软件钱包来实现。跟随升级的钱包,不应该改变任何东西。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分