发表时间:2020年10月1日
信息来源:Bitcoinsv.io
以下的推荐系统配置要求是在使用bitcoind软件时,基于我们的内部测试和扩容进展情况而定的。创世纪升级之后,Bitcoin SV的扩容之路仍在延续。需要注意,随着时间推移,现有的系统要求也可能会发生变化。
我们已经看到了挖矿环境和监听环境配置如上时(并使用下述的附加推荐配置),可以处理好此前在STN上连续产生的2GB区块(含100万笔以上交易)。配置可能随着你的个人需求提升而有所变化,如你的具体环境、应用程序或用例等需求。
如果你是矿工,还建议你确保自已的节点与其他矿工之间有尽可能高的连通性。
附加推荐配置
随着Bitcoin SV越来多地被采纳,网络交易量持续上升。随着数据型交易(op_returns)的大规模使用,你的Bitcoin SV节点可能无法处理内存池里的交易流量,也可能被大量的计算请求所击垮。因此,节点可能会丢弃一些交易,让交易费更高的交易进入内存池,之后再提升计算能力;或者出现更糟的情况,节点停止运转。
虽然这不是Bitcoin SV应有的运行方式,但在短期内只能暂时做如此处理。因为Bitcoin SV基础架构团队当前必须集中精力解决其它优先级更高的问题,它们对扩容有更重要的影响。
有一种解决方案,就是把以下参数从默认值调高,从而让节点在高负载的情况下保持运行效率。高负载的情况包括重组(reorg),重组要求节点回滚并重新考虑最有可能看到过的交易或区块。重组可能让你的节点内存最高占用空间从1-2GB增加到3GB甚至以上。如果这对你的系统而言已经消耗内存太多,那么你的操作系统可能会结束进程(即停止运行bitcoind),也可能你的节点会因此崩溃,返回“Out of Memory”的错误代码。
由于重组和孤块都是Bitcoin SV生态系统的一部分,所以应该对其有所预见而不是担心(请点击这里了解更多信息)。因此,最好将系统配置充分准备好以应对这种情况。对于在STN 上进行操作或在主网上进行压力测试时的负载量来说,bitcoind中原有的默认受损设置和概念都过小。
因此,我们建议在你所运行的bitcoind节点中将此默认设置调高。
首先,内存池大小上限值应设置为6GB或更高。这样的设置可以指示节点,应给所存储的未确认交易分配多少内存。该设置可以通过在bitcoin.conf 文件中添加以下内容实现。
maxmempool=6000
这种约束性的内存限制(Genesis升级前默认值为300MB)源自交易费优先的处理规则,它继承自BTC,旨在保持小区块运行。但在Bitcoin SV区块链中,我们并不需要让区块这样小。对于小型交易,当前存储交易的开销是实际交易大小的5倍。而对于大型交易而言,开销则会降低很多。Bitcoin SV基础架构团队正在努力移除所有交易费优先处理规则的代码并且加速内存池处理,并对交易传播、验证和内存分配进行积极改进。经过改进后,网络处理速度将比之前大大提升,内存池内积压的交易也会更少。
除了提升内存池容量上限外,我们还建议增加签名和脚本缓存。这可告诉节点可以在缓存(内存)中可保留多少接受的交易(用MB计量),通过动态减少重新计算签名和调用脚本的耗时,从而提高效率。我们建议,将这二者设置为250MB或更高来提升性能。该设置可以通过在bitcoin.conf 文件中添加以下内容实现。
maxsigcachesize=250
maxscriptcachesize=250
请注意,以上所提到的全部三项设置需要节点额外用6.5GB的内存,来进行 bitcoind 这方面的操作。
最后,我们还建议将maxorphantx参数添加到您的bitcoin.conf文件中。这个值规定了可以在内存中保留多少个孤立交易。这对节点接受子交易有所帮助,即便其父交易尚未在区块链中得以确认。这意味着,节点将记住该子交易,直到它的父交易(前序交易)被确认;或者子交易将在超过20分钟后过期失效。该设置可以通过在bitcoin.conf文件中添加以下内容来完成。
maxorphantx=10000
假设交易平均大小是400字节,这样做的结果是内存仅会增加4MB。如果你有充足的内存或交换分区空间,你可以大幅提升这项参数(请留意,Genesis升级后的交易数据可能非常大)以避免丢失尚未收到其父交易的孤立交易。
Bitcoin SV节点项目为比特币协会所拥有,请前往Bitcoinsv.io网站获取BSV节点的官方信息。