首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

成就解锁:BCH修复了所有常见的第三方交易延展性矢量

在BCH的最近一次升级中,有一项升级内容属于修复程序—在脚本中强制执行MINIMALDATA。

根据之前的升级规范,我们也清楚的了解到,这项更改是为了消除最终的BIP 62延展性矢量,使得升级之后的比特币现金网络上的大多数交易(包括所有P2PKH交易)以后都是不可验证的,可以有效保护交易的安全性。

那到底什么是交易延展性?BCH又都做了些什么修复它呢?

什么是交易延展性?

交易延展性(transacTIon malleability)源于比特币源代码中的一个错误。这个错误,可以在不改变交易输出或交易内容的情况下,更改交易ID。这个错误意味着,在交易被矿工写入区块之前,交易签名可以被更改。

也就是说当一笔交易被广播出去后,在获得确认之前,某些恶作剧的矿工可以使用别的签名方式替换这笔交易原来的签名方式。由于交易的TXID就是对交易内容进行哈希计算获得的,如果里面的签名方式变了,TXID也会改变。

如果受到交易延展性攻击,虽然交易的资金本身不会受到任何影响,该转给谁还是转给谁,但是那些依赖TXID的应用,比如交易所就会受到严重损失。因为他们会记录每笔交易的TXID,如果TXID发生变化就容易导致账目混乱,这也是交易所都要求至少一个确认才入账的原因。

2014年,有人利用这个漏洞,大规模攻击比特币网络,内存池中充满了假交易,造成比特币网络堵塞,导致部分全节点宕机,比特币网络极其不稳定。曾经最大的比特币交易所——Mt.Gox宣布倒闭的部分原因,就是延展性攻击。

BCH都做了哪些事情修复交易延展性?

BCH通过一次次的升级修复了所有常见的第三方交易延展性矢量,而Bitcoin Core 却依旧保留了。

1、规范编码的ECDSA签名:自2015年7月激活BIP 66以来,禁止使用非DER编码的ECDSA签名。

2、scriptSig中的非推送操作:在2018年11月比特币现金网络升级中,签名脚本中的非推送操作被禁止,而Bitcoin core仍然接受它们。

3、非标准大小类型的scriptSig中的推送操作:在2019年11月比特币现金网络升级中,禁止任何脚本中的非标准大小推操作,而Bitcoin core仍然接受它们。

4、零填充数字推送:在2019年11月比特币现金网络升级中,禁止处理以非标准形式编码的数字,而Bitcoin core仍然接受这一点。

5、ECDSA签名固有的延展性:自2017年11月比特币现金网络升级以来,禁止在ECDSA签名中使用高S值,而Bitcoin core仍然接受这一点。

6、签名失败的延展性:自2017年11月比特币现金网络升级以来,禁止将除null以外的无效签名传递给OP_CHECK(MULTI)SIG。Bitcoin Core仍继续执行脚本。

7、多余的scriptSig操作:自2018年11月比特币现金网络升级以来,脚本执行必须产生干净的堆栈。Bitcoin Core不需要这个。2019年5月的比特币现金网络升级仅针对特定的类似于SegWit的签名脚本增加了豁免。

8、脚本忽略的输入:自2019年11月比特币现金网络升级以来,不再忽略OP_CHECKMULTISIG(VERIFY)的第二个输入。相反,由于2017年8月Bitcoin Core激活了BIP 147,所以在这个输入上必须为空。

修复交易延展性对BCH有什么意义?

1、 让交易所接受0确认充值成为了可能

鉴于交易延展性攻击的影响,交易所为了安全性考虑,很难做到0确认充值。一旦BCH修复了延展性,那么交易所就可以考虑接受0确认充值,这也有助于提高用户的使用体验。

2 、使双花验证更有意义

为了解决双花问题,BCH开发者曾经研发出了double spend proof双花检测工具。想要使用这个工具,必须先修复延展性,否则这个工具毫无意义。

BCH有两种双花攻击的方式,一种是需要大量算力配合的双花攻击,需要的成本非常高,不可能用来双花小额交易。还有一种是快速双花: 比如有某个出售数字商品的商家支持BCH付款,他接受0确认支付,只要显示收到BCH了,就立刻自动发货。这时候攻击者就可以尝试快速双花攻击了。他先给商家转账一笔BCH,这里称之为TX1;然后同时把这笔资金转给自己的另外一个地址,这里称之为TX2,TX2会通过工具以更快的速度传播到全网其他节点,尤其是让矿工先收到。当商家的系统显示出TX1时,他会以为已经到账,于是自动发货,但是矿工却打包了TX2。最后TX1就会被作废,商家产生了损失,攻击成功。

双花检测工具就是用来专门检测快速双花攻击的。这个工具会监听全网的BCH节点,如果发现存在双花交易,就会发出警告,提醒收款方。收款方如果发现存在双花,可以拒绝这笔交易,或者要求必须获得一个确认。

当在主流的钱包中添加双花检测工具,用户就能直观的看到一笔交易是否被双花,这会极大的提升用户对于0确认交易的信心,而且对于交易所来说,因为这个工具的存在,接受0确认充值的风险又被极大的降低了。

目前,BCH已经修复了所有常见的第三方交易延展性矢量,极大的解决了延展性攻击的问题。这也为BCH未来的发展创造了更多的可能,而不再受制于延展性问题的限制。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191120A0J1AB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券