摘要:我们通过成功进行 35 次初始区块下载(IBD)以及记录节点与网络同步所需的时间,来测试比特币核心钱包(Bitcoin Core)的性能。我们使用了 2012 年到 2019 年期间的软件版本。结果表明,软件性能取得了明显且持续的提高,但差异程度也很大。即使使用最新的计算机硬件,旧版本的比特币仍难以通过 2015 年至 2016 年期间交易量回升这一难关。因此,我们得出结论,如果没有软件增强,几乎不可能实现今天的初始同步。
图 1——比特币初始区块下载时间(天数)—— 3 次尝试的平均值
(资料来源:BitMEX Research)
(注:同步到区块 602,707 。详情请看以下注释)
概述
为了在初始同步期间测试 Bitcoin Core 的性能,我们成功进行了 35 次初始区块下载(IBD),并记录了每次尝试所需的时间。结果显示在上面的 图1 中,说明由于从 OpenSSL 升级到 libsecp256k1 进行了签名验证,在 2016 年 2 月发布了 Bitcoin Core 0.12.0 之后,速度有了显着提高。Libsecp256k1 专为比特币而构建。从那时起,速度提高程度慢了很多,并且由于 IBD 时间差异很大,只有经过多次尝试才能明显看到这些提高。然而,即使在 2016 年 2 月发布了 Bitcoin Core 0.12.0 之后,从 Bitcoin Core 0.13.0 到 Bitcoin Core 0.19.0.1 的每次软件版本发布,都可以看到性能取得了逐渐提高。
当然,IBD 时间只是其中一种度量标准,还可以通过许多其他角度和考虑因素来评估 Bitcoin Core 的性能和功能。虽然 IBD 时间不是衡量整体软件性能的完美或完备方法,但它高度资源密集,因此可能是一种良好的基准度量标准。
本报告基于之前的两个实验:
- 2018 年 11 月, Jameson Lopp 进行了类似的演练,不过分析着重于独立执行,而本分析则着重于较旧版本的 Bitcoin Core(或简称为 “比特币” ,因为某些较旧的软件在 “Bitcoin Core” 命名之前发布 )。
- Sjors Provoost 也在 2017 年 7 月进行了该实验,但是 Sjors 提供的数据同步尝试较少。
完整结果和原始数据
图 2——比特币初始区块下载时间(天数)
(资料来源:BitMEX Research)
(注:同步到区块 602,707。详情请看以下注释)
系统配置和其他说明
MacBook Pro ( 64 位) | Linux VPS ( 64 位) | |
操作系统 | macOS Mojave (10.14) | Ubuntu 18.04.3 |
处理器 | 6 Core Intel i9 2.9GHz | 8 Core Intel Xeon |
内存 | 32GB | 32GB |
存储 | 1 TB 快闪存储 | 640 GB 快闪存储 |
互联网下行带宽 | 62Mb/秒 | 2,000Mb/秒 |
互联网上行带宽 | 20Mb/秒 | 400Mb/秒 |
IBD 结束高度 | 602,707 | 602,707 |
Bitcoin.conf 设置 |
assumevalid=0 dbcache=24000 maxmempool=500 |
完整的结果表
客户端 | 客户端发布日期 | 同步时间 (小时数) | 机器 |
Bitcoin Core 0.19.0.1 | 24/11/2019 | 11.4 | MacBook Pro |
Bitcoin Core 0.18.1 | 20/07/2019 | 10.4 | MacBook Pro |
Bitcoin Core 0.17.0 | 03/10/2018 | 17.7 | MacBook Pro |
Bitcoin Core 0.16.0 | 28/02/2018 | 18.5 | MacBook Pro |
Bitcoin Core 0.15.0 | 14/07/2017 | 21.1 | MacBook Pro |
Bitcoin Core 0.14.0 | 08/03/2017 | 16.4 | MacBook Pro |
Bitcoin Core 0.13.0 | 17/08/2016 | 24.7 | MacBook Pro |
Bitcoin Core 0.12.0 | 17/02/2016 | 15.8 | MacBook Pro |
Bitcoin Core 0.11.2 | 10/11/2015 | 53.3 | MacBook Pro |
Bitcoin Core 0.10.0 | 12/02/2015 | 81.2 | MacBook Pro |
Bitcoin Core 0.9.0 | 18/03/2014 | 85.1 | MacBook Pro |
Bitcoin Core 0.8.6 | 09/12/2013 | 放弃 | MacBook Pro |
Bitcoin Core 0.19.0.1 | 24/11/2019 | 13.6 | Linux |
Bitcoin Core 0.18.1 | 20/07/2019 | 15.9 | Linux |
Bitcoin Core 0.17.0 | 03/10/2018 | 13.3 | Linux |
Bitcoin Core 0.16.0 | 28/02/2018 | 18.8 | Linux |
Bitcoin Core 0.15.0 | 14/07/2017 | 17.9 | Linux |
Bitcoin Core 0.14.0 | 08/03/2017 | 25.1 | Linux |
Bitcoin Core 0.13.0 | 17/08/2016 | 15.8 | Linux |
Bitcoin Core 0.12.0 | 17/02/2016 | 14.8 | Linux |
Bitcoin Core 0.11.2 | 10/11/2015 | 46.0 | Linux |
Bitcoin Core 0.10.0 | 12/02/2015 | 77.2 | Linux |
Bitcoin Core 0.9.0 | 18/03/2014 | 78.9 | Linux |
Bitcoin Core 0.8.6 | 09/12/2013 | 98.5 | Linux |
Bitcoin Core 0.19.0.1 | 24/11/2019 | 14.0 | Linux |
Bitcoin Core 0.18.1 | 20/07/2019 | 13.7 | Linux |
Bitcoin Core 0.17.0 | 03/10/2018 | 16.0 | Linux |
Bitcoin Core 0.16.0 | 28/02/2018 | 18.2 | Linux |
Bitcoin Core 0.15.0 | 14/07/2017 | 17.9 | Linux |
Bitcoin Core 0.14.0 | 08/03/2017 | 17.0 | Linux |
Bitcoin Core 0.13.0 | 17/08/2016 | 21.9 | Linux |
Bitcoin Core 0.12.0 | 17/02/2016 | 17.1 | Linux |
Bitcoin Core 0.11.2 | 10/11/2015 | 44.1 | Linux |
Bitcoin Core 0.10.0 | 12/02/2015 | 82.2 | Linux |
Bitcoin Core 0.9.0 | 18/03/2014 | 82.1 | Linux |
Bitcoin Core 0.8.6 | 09/12/2013 | 72.6 | Linux |
(资料来源: BitMEX Research)
结果分析
如上面的 图 2 所示,即使使用相同的软件和具有相同配置的机器进行 IBD,报告的时间也存在很大差异。
图 3——IBD 时间与客户端发布日期(天数)——3 次尝试的平均值
(资料来源:BitMEX Research)
(注:对于 Bitcoin 0.8.6 客户端,上面的结果仅为两次尝试的平均值)
上面的 图 3 表明,除了 Bitcoin Core 0.12.0 拥有强大的性能外,每个软件版本的软件性能都在逐步提高。不过,尽管上图中的趋势明显,但每次尝试的 IBD 时间的巨大差异性可能表明存在相当大的不确定性。可能需要更多的样本数据,才能有说服力地作出自 2016 年以来性能取得提高的结论。这种差异可能主要是由比特币 P2P 网络或互联网连接方面的问题引起的,因此,需要进一步研究的有用领域可能是比较再扫描速度,即区块链一旦下载后,完全验证该区块链所需的时间。
在上述分析中,Bitcoin Core 0.12.0 的性能良好。这可能是因为 Bitcoin Core 0.12.0 启用了 libsecp256k,但没有验证隔离见证的交易输入的签名(隔离见证)。因此,Bitcoin Core 0.12.0 在 2017 年 8 月之后没有验证区块链中所有签名,从而给该客户端带来一些 “不公平的优势” 。但是,尽管该节点看起来不是异常值,但 Bitcoin Core 0.13.0 也可能拥有这种优势。当然,Bitcoin Core 0.12.0 之前的所有版本都拥有这种相同的 “不公平” 优势,但与使用 OpenSSL 带来的缺点相比,这不值得一提。
同步客户端,一直到其发布日期为止
下图(图 4)说明了同步客户端,一直到软件发布之日的区块高度为止所需的时间。
图 4——到客户端发布日期为止的 IBD 时间(天数)
(资料来源:BitMEX Research)
(注:仅在 Linux 上运行的节点数据。Bitcoin Core 0.19.0.1 仅同步到高度 602,707)
该图显示了从 Bitcoin Core 0.8.6 到 Bitcoin Core 0.14.0 的趋势基本持平,在这个阶段中,可扩展性改进不能适应时间推移和区块链高度上升带来的影响,并且该图显示了上升趋势。遗憾的是,近年来,软件改进的速度已下降,这也许是因为已经可取得了容易实现的成果。交易量上升也可能促成这种情况。未来的可扩展性改进可能更具挑战性,即使维持 400 万个单位的区块重量限制,未来 IBD 时间也可能继续增加,尽管软件会进一步升级以及硬件性能会适度提高。
失败的 IBD 尝试
我们确实成功编译并运行了 0.8.6 之前的比特币版本,不过,当节点达到 2015 年至 2016 年期间时,同步变得缓慢。0.8.6 之前的节点(例如 0.7.0 )在 2013 年通过手动更改锁定限制确实能成功通过明显的硬分叉,不过由于交易量增加,2015 年证实面临巨大挑战,并且该节点停止运算区块。我们尝试重启该节点,这确实有助于其推进,但随后该节点又再次卡住。然后,我们甚至尝试在具有 64 GB 内存和 8 个英特尔 i9 处理器的全新本地计算机上运行 Bitcoin Core 0.7.0 ,但是该节点仍无法通过 2016 年。由于相关的许多扩展参数为非线性 ,因此不能简单地靠投入更多硬件来解决这个问题。
有时,当节点卡在一个区块上,我们对其重启,在尝试 4 次重启后,我们放弃了同步。对于 MacBook Pro 上的 Bitcoin Core 0.8.6,当领先区块在 2016 年时,我们放弃了同步。虽然这有点令人失望,但其余 35 次成功的同步不需要重启。
结论
除了 BitMEX IT 部门使用 MacBook Pro 发布 BitMEX Research 时应更加谨慎外,这些数据还说明了在过去七年中,可扩展性已显著增强。过渡到 libsecp256k 是最显著的改进。IBD 时间大幅减少以及旧节点无法完全同步,这表明,如果不是因为这些可扩展性增强,那么即使用户拥有最高配置的硬件,到现在比特币也会基本消亡。数据还表明,技术创新不太可能跟上不断发展的区块链的步伐,并且 IBD 时间将增加。
欢迎转载,请注明文章来自
BitMEX (www.bitmex.com)