运行 v0.7 及更早版本的 Bitcoin Core
作者:Jameson Lopp
来源:https://blog.lopp.net/running-bitcoin-core-v0-7-and-earlier/

本文是我对所有 Bitcoin Core 发行版本的历史同步性能的研究的其中一个结果,也是构建真正老旧的版本的挑战(难以找到编译好的二进制文件)的成果。
注意,如果你计划使用这些版本的 Bitcoin Core 来同步区块链,你会用得很艰难。我不是第一个探究这件事情的人:在研究期间,我发现,Sjors Provoost 曾在 2017 年运行类似的实验,也有文字记录。
旧版 Bitcoin Core 客户端的性能 – Sjors Provoost
探究同步过程中的错误
没有一个 v0.8.0 以前的版本可以同步到现在的链顶端,里面的原因多种多样。
v 0.3:在区块高度 12 4275 处停止同步,传出这个错误:
ERROR: ConnectInputs() : fb0a1d8d34 VerifySignature failed InvalidChainFound: invalid block=0000000000004939267f height=124276 work=6613870563198902508
乍一看,这并不是一笔特别奇怪的交易。但是,如果我们检查这个比特币地址的花费历史,我们可以看到花费者构造过好几笔奇怪的交易,有几百个 “0 价值” 的输出。可以不夸张地假设,这是一个技术人员在尝试破坏网络。
最后,让我惊讶的是这个输入的签名的大小。75 字节是签名的最大上限,大部分 P2PKH 的交易的签名都是 71 ~ 73 字节。

你可以通过下面这篇文章来了解比特币交易签名的历史;要指出的是,如果你尝试使用更新版本的 OpenSSL(1.0.0p / 1.0.1k)来验证早期链上出现的签名,你会遇到错误,因为 DER 验证更加严格而且会拒绝特定类型的编码。
比特币中的签名体积的变化(中文译本)
解决方法是:要么使用一个更旧版本的 OpenSSL 来构建 Bitcoin Core,要么在开始构建之间手动应用这个代码补丁。一开始我有些困惑,因为 gitian builder 使用 Ubuntu 10.04 虚拟机作为构建环境,我以为应该是搭配了较老的(兼容)版本的 OpenSSL 的 …… 但是,Andrew Chow 指出,他们在 2015 年向后移植(backport)了这个 OpenSSL 补丁。
v0.4 和 v0.5 都在区块高度 25 8354 处停止了同步,传出错误:
EXCEPTION: 11DbException Db::put: Cannot allocate memory bitcoin in ProcessMessage() ProcessMessage(block, 901212 bytes) FAILED received block 0000000000000023e872REORGANIZE
这是值得注意的,因为看起来 25 8355 是第一个达到 900 KB 大小的区块;在此之前,几乎所有挖出的区块都只达到 250KB 的默认 “软顶”。
v0.6 在区块高度 36 4670 处停止同步,并传出错误:
EXCEPTION: 11DbException Db::put: Cannot allocate memory bitcoin in ProcessMessages() ProcessMessage(block, 999787 bytes) FAILED received block 000000000000000001d3
这也有类似的地方,因为看起来区块 36 4671 是第一个达到 1MB 的区块。
v0.7 在同一区块停止同步,但报错日志不同:
received block 00000000000000000221ERROR: ConnectBlock() : UpdateTxIndex failed InvalidChainFound: invalid block=00000000000000000221 height=364671ERROR: SetBestChain() : SetBestChainInner failed ERROR: AcceptBlock() : AddToBlockIndex failed ERROR: ProcessBlock() : AcceptBlock FAILED
我猜测 v0.4 ~ v0.7 都是因为相同的原因而停止的,但那是什么原因呢?是 “BDB 锁问题”吗(该问题导致 2013 年出现了一次意料之外的链分裂)?根据这些指令,我尝试创建一个文件 ~/.bitcoin/DB_CONFIG :
set_lg_dir database set_lk_max_locks 537000
但每个版本都依然卡在相同的区块高度。事实证明,你还需要配置 set_lk_max_objects ,而且,最初的推荐数值(537000)还不够高(如果你想同步到区块 70 0000 的话)。下面的 ~/.bitcoin/DB_CONFIG数值对我的机器奏效了:
set_lg_dir database set_lk_max_locks 1000000set_lk_max_objects 1000000
性能结果
你可以看我的粗糙同步结果。

你几乎看不见关于 v0.3 的数据,因为它跟 v0.4 和 v0.5 几乎一模一样,最终都在区块高度 12 4000 处崩溃。下面是一个对数版本,可以看得更清楚一些。

值得一提的是,在区块 19 0000 处有一个转折点,从此处开始,v0.4 的性能开始好于 v0.5。我把握最大的猜测是,这是 “检查点” 的结果。Bitcoin 0.3.2 引入了一种叫做 “检查点” 的机制来保证新的全节点不会在初期区块下载期间花费大量时间来验证不在已知最佳链上的竞争区块,从而阻止拒绝服务式攻击。
Bitcoin 0.5.0 基于这些检查点来加速同步,办法是跳过最近的检查点以前的区块链上的签名验证。你可能会说,“你没搞错吧?你不是可以通过配置 assumevalid=0 来强迫节点验证所有签名吗?”确实可以,但这个设定对早于 v0.14 的 Bitcoin Core 没有任何作用。(v0.14 是这个配置参数第一次引入。)
因此,我认为,v0.5 整体上比 v0.4 要更慢,而且,早期的同步性能测试实际上是 作弊/不公平的比较。
老版本 vs. 新版本
那么,最新的 v22 版本与这些老版本相比,性能上有多大提升呢?
同步到区块 12 4000:
v22 比 v0.3 快 17 倍
这些区块都是空的,所以性能上的差别不是那么明显,但若同步了更多区块链,就会显著起来。
同步到区块高度 25 8000:
v22 比 v0.4 快 77 倍
v22 比 v0.5 快 83 倍
同步到区块 36 4000:
v22 比 v0.6 快 40 倍
v22 比 v0.7 快 38 倍
前向兼容性很难
你可能经常听到一种说法:你可以运行非常老旧版本的比特币软件,它依然能跟现在的网络兼容。当然,真正的答案要复杂得多、微妙得多。为了让很老版本的比特币软件同步到现在的链顶端,你需要对软件作一些变更。另一个棘手的地方是,如你缩减,并非所有在共识上重要的代码都是由比特币开发者编写的 —— 有些时候是第三方的库,而且这些库也会随时间变更,从而让软件构建的流程自身变成可能导致共识失败的原因!
(完)
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
您可能感兴趣
-
沃什:2% 通胀目标不动摇,保持独立性,关注AI变革(附全文)美联储主席沃什将市场利率上行视为金融条件已在收紧的信号,同时重申2%通胀目标“没有任何弹性空间”,并宣布实质性退出前瞻指引,呼吁华尔街脱离对央行表态的依赖,“去捕捉真实的经济信号”。 美联储以9比3的
-
富达 Q3 报告:BTC、ETH 与 SOL 仍在探底,熊市还要多久结束?作者:富达数字资产研究团队 编译:佳欢,ChainCatcher 一、市场总览图:三大资产信号总览面板 加权 NUPL:BTC 独自支撑市场 加权 NUPL 用于衡量一个按市值加权的数字资产组合,整体
-
一个月换 5 个高管,Coinbase 在重构什么?作者:Zhou,ChainCatcher本月以来,Coinbase 的领导班子经历了一轮密集调整。 首席法务官 Paul Grewal 将于 7 月 31 日离任,转投一家初创公司,由内部提拔的 Mo
-
多年来“最不确定”的一次!今晚的美联储会给“惊吓”吗?作者:华尔街见闻今晚的美联储决议大概率仍是“按兵不动”,但市场真正担心的不是基准情景,而是一次罕见的意外加息,或一次措辞足够鹰派的暂停。 北京时间7月30日凌晨2:00,美联储将公布最新利率决议。本次
-
SK海力士的最新财报,能成为存储芯片的救命稻草吗?昨晚,美股芯片板块再度遭遇惨烈抛售。SK海力士和美光双双重挫近9%,闪迪更是暴跌14%。这种跌幅本该足以登上财经头条,但如今甚至快让人产生"审美疲劳"了——芯片股大跌,正在从"新闻"变成"日常"。市场
-
中国光刻机也要进入DeepSeek时代?美股又要面临抛压了吗?昨晚,美股芯片板块再度遭遇惨烈抛售。 闪迪收跌11%,SK海力士跌逾7%,股价正式跌破149美元的IPO发行价。就连一向稳健的龙头英伟达,也大跌5%。 而今天上午,恐慌情绪蔓延过了太平洋——韩国股市再
-
当加密货币驶入「监管深水区」:为何合规阵痛是 Web3 走向全球普及的必经之路?近年来,全球加密货币市场似乎步入了一个前所未有的「强监管周期」。从今年 5 月英国针对部分头部加密货币交易所实施精准的资产冻结,到 7 月底欧盟正式祭出第 21 轮制裁方案并对多家加密平台实施广泛的交
-
交给曲线,别和周期对抗:宏观分析大师 Raoul Pal 的加密 10 年投资复盘作者:Raoul Pal,Real Vision 联合创始人兼 CEO 原标题:《Where Crypto Fits in the Exponential Age》 编译:胡韬,ChainCatche
- 成交量排行
- 币种热搜榜
World Liberty Financial USDv
泰达币
比特币
以太坊
USD Coin
Solana
瑞波币
Ronin Network
币安币
莱特币
艾达币
狗狗币
大零币
Wormhole
比特现金
SHIB
UNI
OKB
AR
ICP
DOT
LUNC
YGG
DYDX
LPT
ETC