为了BCH十一月份的网络升级能够顺利进行,BCH的各个开发团队都已经为此准备了将近半年时间。Bitcoin ABC 早已发布了更新所需的软件新版本,并进行多次测试和修复。Bitcoin Unlimited开发团队紧随其后,也已经发布了 1.7.0,不过其功能更加丰富。

根据BCH关于11月15日升级的规范,BCH将会在协议中添加了两个功能:用于OP_Checkmultisig(Verify)的Schnorr签名和在脚本中执行Minimaldata。添加Schnorr对OP_Checkmultisig的支持,这将允许更复杂的机制来处理多签名交易,所有签名检查操作都将支持Schnorr签名。通过在脚本中强制使用Minimaldata(也称为“Minimaldata”规则),升级将完成BIP62可延展性向量。这种增强旨在使“BCH网络上的大多数交易(包括所有P2Pkh交易)是不可扩展的。

以上两项是BCH十一月份升级中所有节点必须要同步的协议共识。BU开发团队在新发布的1.7.0软件版本中也包含了这两项内容的更改。不过,BU的软件还包含了一项比较特别的内容:基于Ancestor Grouped Transactions (AGT)的Child-Pay-For-Parent (CPFP)实现。

新的CPFP和未确认交易的长链

之所以BU会在这次升级中添加新的CPFP代码,其主要作用是提升Mempool未确认交易限制。

未确认交易限制是指对一笔未确认交易的转账次数进行限制,这为了防止零确认交易情况下出现回滚或者双花的风险。BCH的未确认交易限制是25,也就意味着一笔未确认交易最多只能在10分钟的时间内连续转账25次,多出的交易次数将不会被打包进区块。这些限制是BCH从BTC身上沿袭过来的,2015年7月限制代码被添加到比特币中。

在之前的讨论了中,基于BCH的SatoshiDice运营者曾在在2019年8月3日在BCH社区论坛R/BTC发帖表达了网站对于BCH的诉求,他们希望BCH的技术开发人员能在今年年底取消BCH的25未确认交易限制,并承诺在更改后向BCH发展基金捐赠1000个BCH。他们表示此限制是经营赌场的障碍,并且阻止他们采取新的举措前进。

MemoBCH在8月16日进行了跟进,表示BCH的25未确认交易限制使Memo用户难以在每个块间隔发送25条以上的消息。显然,25未确认交易限制已经成为BCH的正在问题。

对于这个问题,BU开发人员通过以下方式解决了BCH的问题:

1、推出更快的CPFP算法

BU开发人员Peter Tschipper消除了ABC使用的child-pays-for-parent (CPFP)算法中的瓶颈,该算法使处理未经确认的长链交易变得缓慢(BU以前不支持CPFP,所以它没有这个问题)。随后推出了新的CPFP算法,通过引进AGT原则使得其速度比之前的快100多倍。AGT是将一组祖先交易看作单个交易来实现的分组方法,这种分组方法使我们处理包的速度比其他包挖掘方法快几个数量级,因为在挖掘未确认链的一部分时,我们不再需要不断更新后代状态。

下图显示了在BU所实行的CPFP和bitcoin core所实行的CPFP的情况下,交易时间的进程与未经确认的交易链的最大长度这件的关系。这意味着BU可以将未确认交易的最大链长增加2个数量级,而且不会降低性能。

2、降低零确认交易的风险

虽然增加Mempool未确认交易限制是可行的,而且是有效的,但是这也增加了双花攻击成功的机会。因此为减轻这种副作用,BU开发人员Andrew Stone构建了一种方法,允许矿工以不协调的方式增加他们的mempool链接限制,并且对0-conf安全性的影响最小。它使用BU“覆盖网络”来保留这些链上交易,然后一旦ABC节点接受它们,就将它们转发给ABC节点。

随后,BU开发人员与Bitcoin.com矿池协调,开始在主网上挖掘多达500笔未确认交易的链。这表示最长链交易时间增加了20倍,而Mempool未确认交易限制可以增加到500。这意味着对于交易频次比较高的应用,BCH将会表现的更好。

最后BU开发团队也对CPFP进行了说明:CPFP在BCH中的作用与在BTC中的作用是非常不同的。BTC的正常操作点是满区块、收费浮动。CPFP对于确保合理的用户体验是必要的。在BCH中,CPFP只在特殊情况下才真正有用。我们不会以牺牲普通用户为代价来优化特殊情况。

除了添加CPFP,BU在此次升级中还有几项变更:通过Graphene基元进行Mempool同步、智能的未确认交易转发、石墨烯2.1版和IBLT规范、新的死锁检测机制、新的getblockstats rpc调用、交易索引数据库的改进……所做的一切都是为了优化BCH,为用户提供更多的便利。

写在最后

Mempool未确认交易限制在中本聪首次发布比特币客户端时是没有的,是被Bitcoin core开发者添加进去的,而现在BU为了用户推出解决办法,正是验证了一句话:坏的开发者发明问题,好的开发者解决问题!

升级在即,BU发布新版本并将Mempool未确认交易限制增加到500相关推荐

  1. 博易终于发布新版本了

    BlogEngine的博客做的还是很不错的,尤其是这次的升级,已经可以运行在.Nte4.0下了.奈何一直都是英文版,使用起来诸多不便,前几天无聊时候想要升级也没有成功.等啊等,终于等到了博易发布新版本 ...

  2. 微信小程序 发布新版本后 强制升级

    发布新版本后,有的用户还是旧版本,可直接强制帮用户升级 将下面这段放在app.js里onLaunch() 调用一下就好了 updateApp:function(){const updateManage ...

  3. 互联网早报:微信发布新版本:青少年模式上线“监护人授权”功能

    行业热点 1.微信发布新版本:青少年模式上线"监护人授权"功能: 2.滴滴"点滴守护"宣布关停,返还之前分摊的全部费用: 3.轻松筹开启大病救助"闪电 ...

  4. DNN和IBatis.Net几乎同时发布新版本

    DotNetNuke发布了最新的版本4.5.0,确实让人期待了很久,据说这个版本在性能上有很大的提升. IBatis.NET几乎在同一时间也发布了新版本DataMapper 1.6.1,也有不少的改进 ...

  5. Maltego发布新版本4.2.18

    Maltego发布新版本4.2.18 Maltego是著名的信息收集工具.在新版本4.2.18中,Maltego修复了多个bug,并增加以下三个新功能. (1)导出为PDF时,增加更多选项,如支持显示 ...

  6. 狗狗币协议发布新版本Dogecoin Core 1.14.3

    3月1日消息,狗狗币(DOGE)开发者发布新版本Dogecoin Core 1.14.3.新版本可提高节点同步速度,并减少默认内存池的到期时间.每当一个区块被发送至另一个节点时,就需要执行一次价格昂贵 ...

  7. Cesium矢量地图插件CesiumVectorTile 发布新版本

    Cesium矢量地图插件CesiumVectorTile 发布新版本 一周前CesiumVectorTile 1.2.1版本就已经更新到npm里了,本次更新主要解决Cesium最新版本适配问题. Ce ...

  8. DeepKE发布新版本:支持低资源、长篇章、多任务的图谱抽取开源框架,开源开放

    OpenKG地址:http://openkg.cn/tool/deepke GitHub地址:https://github.com/zjunlp/deepke Gitee地址:https://gite ...

  9. 快讯:湘江实验室在长沙揭牌成立;中国移动算网升级3AZ重磅发布

    国内要闻 湘江实验室在长沙正式揭牌成立,打造先进计算与人工智能领域战略科技力量 : 小米捐赠5亿元成立北京市自然科学基金-小米创新联合基金,支持基础研究及颠覆性科技创新: 首个省级预制菜产业投资基金在 ...

最新文章

  1. 关于Oracle Insert 语句的子查询 和 with check option的用法
  2. 关于信任模型与交叉认证
  3. 七十、反转和合并链表、 链表有环的判断
  4. 【Linux】一步一步学Linux——group文件详解(108)
  5. 怎么获取插入的最新自动生成的ID
  6. 万兆网卡实际吞吐量_AKITIO 10G/NBASE-T PCIe 网卡开箱拆解评测
  7. 计算机网络中的传输协议是_计算机网络中的传输方式
  8. 第 5-2 课:线程池——ThreadPoolExecutor + 面试题
  9. 中国信通院专家当选ITU-T分布式账本焦点组副主席
  10. C#操作类----XmlHelper
  11. editplus 快捷键及设置tab空白符及删除空格空行
  12. linux 创建目录和删除目录
  13. 常见的大数据安全5个问题和解决策略
  14. socket 实现HttpClient简单类+csdn登陆源码
  15. 都有哪些查找和下载英文文献的方法?
  16. Win10自带工具DISM修复系统
  17. 背单词App开发日记3
  18. 使用SwipeRecyclerView配合下拉刷新出现Scrapped or attached views may not be recycled. isScrap:false isAttached:
  19. python爬虫之爬取网易云音乐的歌曲图片和歌词
  20. 【企业微信实现免密登录以及发送消息(企业内部应用)】

热门文章

  1. CUPS Share Printer
  2. es6 新增数据类型Symbol
  3. 一个基于webrick 的简单web服务器
  4. ElasticSearch 2 (38) - 信息聚合系列之结束与思考
  5. mybatis中mysql ON DUPLICATE KEY UPDATE写法
  6. 关于“INS-40922 Invalid Scan Name – Unresolvable to IP address”
  7. C++ XML解析之TinyXML篇[转]
  8. Eclipse将android 类编译为jar类库
  9. IIS负载均衡-Application Request Route详解第一篇: ARR介绍
  10. 模块可测性设计之无损插桩