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

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

为了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为了用户推出解决办法,正是验证了一句话:坏的开发者发明问题,好的开发者解决问题!

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券