比特币的初始区块下载

摘要:我们通过成功进行 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)