在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未来的发展创造了更多的可能,而不再受制于延展性问题的限制。

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

  1. steam成就解锁器_MC技术指南如何使用SAM成就解锁?

    点击蓝字关注我哦 核心内容提前看: 本文教大家如何轻松配置使用SAM程序,主要教大家如何正确使用. 不正当的操作,可能会受到小红信,同时建议非必要情况下手动解锁成就更有乐趣. 请下载群文件中Milli ...

  2. wdos8系统服务器丢失,win8一键修复丢失DLL,常见dll丢失一键修复办法

    win8一键修复丢失DLL,常见dll丢失一键修复办法? 在win8系统下,特别是win8 64位旗舰版下大家经常会碰到运行程序.或是点击一些游戏时出现XXXX.DLL丢失的故障,导致软件没有法点击, ...

  3. 网站无法用localhost打开,修复localhost一切常见错误,一次性去除病根

    作者:Lccee 转载自:Lccee博客 网上那些很多解决方案都是没用的,有些答案根本还没验证就发出来了,网上搜出的答案根本没用. 如果遇到此问题直接使用PHPCUSTOM功能大全里的localhos ...

  4. 什么是python的第三方库_python学习(十九)常见的第三方库

    介绍几个python中常见的第三方库. Pillow Pillow简称PIL,是python中常用的图形图像处理模块.写一个简单的例子 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  5. mt4交易软件云服务器_MT4软件使用教程1常见货币对交易图表类型

    第一章 常见货币对交易图表类型进行货币对交易,最先的突破口就是图表.图表的主要功能是记录价格移动的轨迹.三种最广泛使用的图表类别分别是线形图.柱形图及K线图.线形图这三类图表中,最基本的是线形图,它由 ...

  6. 常见商品期货量化交易策略

    转 常见商品期货量化交易策略https://blog.csdn.net/myquant/article/details/86136818商品期货套利策略  套利策略一般包括期现套利.跨期套利.跨市场套 ...

  7. 常见的量化交易策略和源码编写过程分享

    今天给大家分享的内容是基于Python编程,实现股票交易接口相关功能开发,如果读者对股票或金融衍生物交易不太了解,又比较感兴趣的话可自行查询相关资料. 接下来笔者会给大家介绍股票交易中的常见几种量化交 ...

  8. and or not 优先级_我的侠客公测成就奖励大全 成就解锁优先级排名

    我的侠客中公测成就奖励还是很丰厚的,那么到底要怎么解锁呢?希望下面这篇我的侠客公测成就奖励大全能帮到大家. 我的侠客公测成就奖励大全 1.能力上限 (1)武学等级上限     (优先点满) (2)武学 ...

  9. sonar java_修复Sonar中常见的Java安全代码冲突

    sonar java 本文旨在向您展示如何快速修复最常见的Java安全代码冲突. 它假定您熟悉代码规则和违规的概念以及Sonar如何对其进行报告. 但是,如果您以前从未听过这些术语,则可以阅读Sona ...

最新文章

  1. 再见Python!Yann LeCun警告:深度学习需要新编程语言
  2. GitHub 报告显示香港码农大爆发,诚实的程序员:转行只因工资高!
  3. C# 开发微信扫码登录
  4. Osmocom-BB 相关资源、知识分享
  5. 多个线程同时写入一个文件问题------php
  6. DivCss 布局应用案例实践总结
  7. JAVA课设——俄罗斯方块
  8. 线性代数-MIT 18.06-汇总
  9. Apex里面的retainAll
  10. 工具篇之Chrome浏览器所有页面崩溃(包括设置页面)的处理方法
  11. 仿牛客网论坛项目资料整理
  12. 每年10万被动收入目标分解
  13. 领克02linux车机怎么升级,你们想看的领克02长测报告来了,一篇读懂02的车机系统...
  14. rk3288-android8.1-OV13850
  15. 【实拍电机】保时捷PPE平台解析
  16. FIR数字滤波器设计与软件实现
  17. AJAX技术(第一篇博客)
  18. adb shell下使用命令行删除android系统中指定文件和文件夹
  19. 智慧风电场Web组态集控中心远程监控系统
  20. Linux(Ubuntu)/Windows如何下载配置Chromedriver

热门文章

  1. MultiThreadedHttpConnectionManager
  2. POJ 3257 DP
  3. Centos6.5-----nagios快速安装编译配置文档-全部虚拟环境
  4. arp/ip地址/路由--总之很乱
  5. [原创]PipelineTools 文件传输工具
  6. ENGINEER 003:配置IPv6地址
  7. 控件测试功能点摘要2
  8. Hibernate总结
  9. Day14 自己定义泛型类的使用
  10. ButterKnife基本使用