比特币 SV 节点系统要求
by Martin
8月 6, 2019 (1min read)
(2020年1月15日更新) 我们根据对 bitcoind 节点软件开展的内部测试和区块扩容进程,推荐以下的系统要求。在一往直前的“创世纪”之路上,BSV 将不会停止扩容的脚步。...

(2020年1月15日更新)

我们根据对 bitcoind 节点软件开展的内部测试和区块扩容进程,推荐以下的系统要求。在一往直前的“创世纪”之路上,BSV 将不会停止扩容的脚步。这意味着,系统要求还将随着时间持续提高。

 

对于仅仅为了跟随最大工作量证明链、处理少量其他任务(如 RPC 请求)的监听节点,我们建议至少​要达到以下要求:

  • 4 核心,8 线程 CPU
  • 6GB 内存 + 10GB Swap 交换分区
  • 10M+ 互联网连接(上行及下行)

请注意,若交易量持续激增,采用上述配置的节点可能会出现问题。这可能导致您的节点落后于最新区块,或者由于内存耗尽而停止运行。

我们不建议上述配置用于生产环境。

 

对于处理中等规模负荷工作、随时与最新区块保持同步的监听节点,我们建议至少​要达到以下要求:

  • 8 核心,16 线程 CPU
  • 64GB 内存 + 64GB Swap 交换分区(更为理想的做法是,增大内存并相应缩小Swap 交换分区,使两者之和保持 128 GB)
  • 100M+ 互联网连接(上行及下行)

上述配置适合于在主网上推出首款产品的初创企业。随着产品规模和主网容量增加,对节点的系统要求也会提高。

 

对于处理高负荷工作或启用了 txindex 监听节点,以及挖矿节点,我们建议​至少要达到以下要求:

  • 8 核心,16 线程 CPU(推荐 10 核心,20 线程以上)
  • 64GB 内存 + 64GB Swap 交换分区(更为理想的做法是,增大内存并相应缩小Swap 交换分区,使两者之和保持 128 GB)
  • 1G+ 互联网连接(上行及下行)

在 STN 扩容测试网中,无论是挖矿节点还是监听节点,采用上述配置的情况下,都可以处理连续的 2GB 大小的、包含超过 100 万笔交易的区块(利用以下额外建议)。

个例的系统需求,会随着系统环境、应用、用例的不同而变化。

对于挖矿节点,我们建议尽可能确保自身节点与其他矿工节点之间保持最佳的连接性。

 

额外其他建议——尤其针对矿工

随着比特币 SV 采用量的不断增加,交易量持续增高,再加上使用数据交易(op_returns)的爆发式增长,您的比特币 SV 节点可能无法处理到达内存池或计算量繁重的请求。因此,节点会减少交易让那些支付了较高费用的用户进入,稍后再提高计算,或出现停止运行的更坏情况。

这并非比特币希望的运行方式,但短期内我们需要这样处理,以让 SV 节点团队聚焦于对扩展性影响更大的优先级更高的任务。

解决方法是将以下各值从默认值增加到以下值,让节点在高负荷情况下保持高效。这些情况包括重组,这需要节点返回并重新考虑可能已经注意到的交易或区块。重组会导致节点尖峰从 1-2GB 的内存使用增加到 3GB 或更大,若这对您的系统来说过大,则操作系统可选择结束进程(停止 bitcoind),或者您的节点会崩溃并提示“内存不足”错误代码。

由于重组和孤块都属于比特币生态系统, 我们应期待且无需担心(更多信息请参阅此处),明智的做法是让您的环境为这些情况做好充分准备。对于我们在STN 上进行操作或主网上进行压力测试中看到的容量来说,bitcoind 继承的默认受损设置和概念太小。

出于这一考虑,我们建议提高您的 bitcoind 节点中的一些默认设置。

首先,您的内存池大小限额应设置为 6GB 或更大。这可表明应向节点分配用于存储未确认交易的内存大小。这可通过将以下内容添加至 bitcoin.conf 文件完成。

maxmempool=8000

这一局限性内存限制(默认值 300MB)是由从 BTC 继承的费用优先处理产生的,旨在维持正常运作的小区块大小。在比特币 SV 中,我们不需要这个。对于小型交易来说,存储交易的现行费用在实际交易大小的 5 倍范围内。对于较大的交易来说,这会显著降低。SV 节点团队积极致力于删除所有费用优先代码和加速内存池处理,以改善亟待改进的交易传播、接受和内存分配。最终将获得速度更快且内存价格更便宜的内存池。

除了提高内存池限额,我们还建议增加签名和脚本缓存。这可向节点指明可在缓存(随机存取存储器)的兆字节中保存多少接受的交易,通过减少对运行中重新计算签名和脚本的昂贵调用来提高性能。我们建议将这些设置为 250MB 或更高以提高绩效。这可通过将以下内容添加至 bitcoin.conf 文件完成。

maxsigcachesize=250

maxscriptcachesize=250

请注意,设置提到的全部三项设置要求您的节点额外增加 6.5GB 内存专门用于 bitcoind 这方面的操作。

最后,我们还建议在 bitcoin.conf 配置 maxorphantx 参数。它指定了内存中可暂存的孤交易数量。如果节点收到一条交易信息,但尚未收到这条交易的前序交易(父交易),那么节点会将本交易(子交易)暂存起来,直至发现其前序交易(父交易)或达到 20 分钟的有效期。可将以下内容添加至 bitcoin.conf 文件进行设置。

maxorphantx=10000

假定交易数据的长度是 400 字节,内存占用仅增加 4MB。如果你有充足的内存及 Swap 交换分区空间,可以大幅增加这项参数(请留意,创世纪升级后的交易数据可能非常大),从而避免丢失尚未收到其前序交易(父交易)的孤交易。

BitcoinSV-zh