比特币SV网络致力于实现大规模链上扩容,而nChain的团队则正在推进实现中本聪愿景必不可少的技术工作。实际上,我们的近期测试已经表明比特币SV网络有能力在24小时完整周期内持续处理大小为64MB的区块,而且我们已经开始向持续处理128MB区块的目标迈进。
我们将在此总结目前正在进行的工作以及对未来的计划。
在BSV扩容测试网络上持续处理大区块
为了研究比特币扩容,nChain于2018年9月建成了自己的Gigablock测试网络。这一全新的扩容测试网络(STN)将成为永久性公共测试网络,可常规化持续处理大批量交易。比特币SV节点发布的下一版本将采用与测试网络和回归测试网络相同的方式支持扩容测试网络。
nChain与“Satoshi Shotgun”(专业压力测试)团队从2018年12月起开始就扩容测试网络展开协作,首先进行了一次“热身”测试。我们更新了网络,部署了性能监控与分析系统,并扩展了“Satoshi Shotgun”以支持扩容测试网络。完成这项工作后,我们开始稳步增加交易量。
我们已经看到在BSV实时网络上挖出的大区块(64MB、65MB甚至103MB大小的区块)。尽管这些进展令人惊叹,但是我们知道只有能够持续处理大区块且长时间支持更大区块才是真正的成功。建立扩容测试网络的目的在于为比特币网络吞吐量的研究提供支持。在过去的一个月中,我们主要在研究交易传播。这意味着我们采用“Satoshi Shotgun”等专业系统来生成交易并将其交付到非挖矿节点上。然后,交易在整个扩容测试网络上传播,由挖矿节点接收并开采为区块。
其目的在于形成一个合理且现实可行的公共比特币SV网络模型。随着需求和关注点的变化,我们将对模型进行调整。
现在我们从中了解到了什么呢?首先,运用最新的比特币SV开发版能很轻松地在完整的24小时周期内持续处理64MB区块。也就是说在完整的24小时周期内保持每秒处理270笔交易。我们顺利地完成了24小时周期测试。
如果持续处理大小为128MB的区块呢?没问题。
虽然与持续处理64MB区块相比难度稍大,但是我们已经接近128MB区块的目标。
提升交易传播
在区块大小方面取得的成就固然非常重要,但是关键在于测量节点上的具体行为。在研究过程中,我们确定了交易传播是限制生成大区块的关键因素之一。虽然这听起来不足为奇且在预料之中,但是通过测量和数据来验证理论和猜想同样重要。我们加入了一个独特的指标“txninvsize”,用于统计队列将纳入到同类库存消息中的交易数量。节点正是运用这一机制来告知其他节点与交易相关的信息,借此来传播交易。
上图显示了一个挖矿节点的统计结果。您可以看到,队列的交易数量时不时超过了1000笔并告知了其他节点,但是这些均是例外情况,因为队列很快就会清空。这是我们在下一版本的比特币SV实现中改进的一个独特的函数。在这次变更之前,我们在进行压力测试时曾看到过队列中交易数量攀升至60万到80万笔。如果某一节点无法告知其他节点与交易相关的信息,那么这些交易就无法进行传播。
这一变更还可将负载分散到多个核心节点上,从而解决P2P网络的CPU使用率问题。下图显示了相同期间内挖矿节点的负载。
有意思的是,这些峰值往往都超过了1.2并接近于1.4。负载以核心节点为单位进行测量,因此1等于完全占用一个核心节点。在这张图中,我们看到P2P网络节点开始扩展到其他核心节点之上。在此次更新之前,我们从未见过超过1的负载。让比特币真正成多重处理货币仍然有很长的路要走,但这是个良好的开端。
如果不能单独测量单个核心节点的性能,那么任何测量系统都不算完整。下图中的仪表板并不清晰,因此没有什么大的用处,不过这能让您大概了解我们收集的这类指标。
这在解决问题中也很有用。下图是在配置不足的节点上mempool的走势。您可以在图中看到数字急速下跌,这是系统内存耗尽后终止了比特币进程。比特币进程再次启动,占满mempool,然后再次下降。
我们担心的问题之一是如何收集这些指标。您可以在下图中看到几处数据缺口,这些实际上在收集数据时超时导致的结果。我们有望在比特币SV节点实现的未来版本中解决这个问题。
扩容测试网络为评估比特币SV软件在处理大量交易时的性能提供了宝贵的资源。我们广泛应用这些理论并评估对比特币SV节点实现所带来的提升,未来将进一步扩展这方面的工作。我们从中了解到的知识不仅帮助比特币SV节点团队达到了如今的水平,同时还帮助建立了清晰的路线图来规划更多短期扩容成果。
扩容之路的下一步
有了这些测试结果,接下来要做什么?
我们现在已经开始联系BSV矿工和开发团队并邀请其参加BSV扩容测试网络的测试工作,借此机会来评估他们的系统性能和处理大交易量网络的能力。
对于整个生态系统来说,重点在于所有基础设施服务(不只是挖矿节点)进行适当的负载测试,以确保在高峰负载期间服务不会中断。
我们的目标在于最终让每个生态系统参与者都能在扩容测试网络上运行自己产品的测试用例——包括电子钱包服务商、交易所、区块浏览器、BitDB等。预计在2019年2月11日发布下一版本的比特币SV时,将公开这一网络以便每个人都能使用。
在此之后,我们计划在BSV主网进行公共压力测试。我们会与“Satoshi Shotgun”团队合作再对BSV进行一次专业压力测试,了解在BSV网络上实际持续处理大区块的性能。这只是BSV扩容之路上迈出的另一步。总有一天,我们会怀念今朝,回忆在比特币的“中本聪愿景”中64MB和128MB大小的区块是多么微不足道