Bitcoin Core 恢复后余额为零:先区分链同步、钱包扫描和余额状态
链小知 · 进阶 · 核验 · 依官方文档整理
核对已有节点与钱包状态,定位选错钱包、未完成扫描或余额口径问题,保留裁剪历史和旧版迁移限制。
开始前准备
- 准备本人已安装版本、原钱包公开身份及既有去敏状态记录;没有这些记录的项目标为待取得,不在本站输入备份文件、密码或RPC凭据。
- 本文依据31.0版RPC字段和核验日31.1下载信息;不是启动节点、导入备份或执行迁移的操作教程。
1. 先确认版本与原钱包身份
查看已安装版本和原钱包名称、公开地址记录;恢复后检查已有 restorewallet 结果中的 name 与 warnings。返回新名称或启动加载设置成功,并不证明原地址、历史交易和密钥已经齐全。30.0/30.1 的特定迁移缺陷已有30.2修复,不以旧版命令试验;先保存原备份与错误记录。
检查结果:明确软件版本、目标钱包及恢复警告,没有将新建空钱包当作原钱包。
2. 确认节点正在处理哪条链
在已有 getblockchaininfo 记录中看 chain、blocks、headers 和记录时间。Bitcoin主网应为 main;headers 是已验证区块头数量,blocks 才是完全验证链高度。initialblockdownload 与 verificationprogress 是估计,不能以单个接近100%的值证明交易到账。
检查结果:网络与时间一致,区块头进度、区块验证进度和交易确认分别记录。
3. 核对选中的钱包与扫描状态
在同一钱包已有 getwalletinfo 响应看 walletname、blank、private_keys_enabled 和 external_signer,确认选中的不是新建空钱包或另一账户。scanning 可能为进度对象或 false;false 只说明当时没有扫描,不能证明恢复覆盖了原钱包全部历史。
检查结果:钱包身份和能力明确,扫描中、未扫描及未知覆盖范围没有混为一项。
4. 比较钱包处理高度并检查裁剪
比较钱包 lastprocessedblock 与同期节点 blocks,保留高度、哈希和时间;不同时间记录的差距不能直接诊断故障。节点 pruned 为 true 时检查 pruneheight,之前区块已裁剪。本地 rescan 只扫描本地链记录,缺少的早期范围保持待核,不能重复扫一次就称为完整恢复。
检查结果:分别列出节点高度、钱包处理高度、扫描范围及本地缺失区间。
5. 按余额类别理解零值和待确认
已有 getbalances 结果以 BTC 为单位:mine 对应钱包可签的输出;trusted 也包含钱包自行创建的输出,因此不能一概当作已确认;untrusted_pending 和 immature 分别代表特定待确认输出与未成熟挖矿奖励。字段缺失或错误响应保持未知,不填零;这份余额结构也不能独立证明外部签名钱包的全部可支配资金。
检查结果:记录原始单位、类别与处理高度;没有把可信状态当确认数,缺数据没有记成资产归零。
6. 整理下一步需要的记录
输出所用版本、目标网络和钱包、恢复警告、节点与钱包高度、扫描起止范围以及分项余额。若扫描仍进行,观察同一钱包后续进度;若身份、历史范围或备份材料缺失,先解决相应缺口。不通过迁移、覆盖原文件、导出私钥或发送新交易验证恢复。
检查结果:能把问题定位到版本、钱包选择、链同步、钱包扫描或余额口径;仍缺证据的部分明确待核。
怎样确认完成
- 能够列出钱包身份、网络、节点/钱包处理高度、扫描区间和分项余额,并明确仍缺的恢复证据。
- 仅阅读官方文档及解释既有记录;未启动节点、恢复备份、操作账户、导出密钥、签名或广播。
常见错误与边界
- 用节点已同步或 scanning=false 推断钱包资产已完整恢复。
- 把 trusted 等同于链上确认,把缺失响应解释成真实零余额。
- 将历史30.0/30.1迁移示例当作当前无版本限制的恢复办法。