
Bitcoin Core 旧钱包迁移到描述符钱包migratewallet 操作、核对与回退要点【免费下载链接】bitcoinBitcoin Core integration/staging tree项目地址: https://gitcode.com/GitHub_Trending/bi/bitcoin如果你用 Bitcoin Core 加载一个老钱包时收到legacy wallet 需要先迁移的提示或者想把加密的旧 HD 钱包统一进描述符Descriptor体系就需要做一次钱包迁移。这里以官方migratewallet命令为主线说明迁移前该确认什么、命令怎么跑、结果怎么核对以及万一失败如何用备份回退。迁移前先弄清钱包会变成什么样理解三件事能避免迁移后钱包数量对不上的困惑迁移会创建一个与原钱包同名的描述符钱包原来的地址和私钥都会被写入其中。描述符钱包不允许私钥和纯监控脚本混装所以原钱包里若有监控地址watch-only还会额外生成原名_watchonly若存在可解但未被监控的脚本则可能再多一个原名_solvables。如果旧钱包里只有监控脚本、没有任何私钥则只会创建_watchonly钱包不会有同名主钱包。另外两点值得提前知道新钱包生成地址沿用原来的 BIP 32 种子但改用 BIP 44/49/84/86 标准派生路径migratewallet官方说明可能需要很长时间完成建议调大 RPC 客户端超时跑起来没反应不代表卡死。执行步骤备份先行再跑 migratewallet迁移本身是尽力而为的过程——旧钱包里脚本组合形态极多官方工具只保证尽力覆盖。所以稳妥顺序是先留一份自己的备份再迁移。# 第 1 步在旧钱包上手工备份一份存到安全位置 bitcoin-cli -rpcwalletlegacy-wallet backupwallet legacy-wallet-backup.dat # 第 2 步执行迁移加密钱包必须把口令作为第二个参数传入 bitcoin-cli migratewallet legacy-wallet 你的钱包口令预期结果命令正常返回包含四段信息——主钱包名wallet_name、视情况出现的watchonly_name/solvables_name以及backup_path。这个路径指向工具自动生成的钱包名-时间戳.legacy.bak它就在钱包目录里是迁移失败时的回退凭据先记下来。常见报错只有一类需要特别注意钱包是加密的但没提供口令或口令不对。这种情况下没有产生迁移结果直接补上正确口令重跑即可旧钱包原封不动。迁移后如何核对新钱包确实完整核对分四步全部通过才算完成钱包名对得上对同名新钱包执行getwalletinfo确认钱包名、加密状态与迁移前记录一致。余额对得上执行getbalance与迁移前手工记录的可用余额比对。若旧钱包含监控脚本还需对_watchonly钱包各核对一次。描述符覆盖对得上执行listdescriptors true确认钱包内的地址都能对应到描述符。发现某些老地址没有对应描述符说明该脚本没被迁移进来属于已知限制可在项目 issue 跟踪器中反馈。新备份已建立迁移完成后旧备份已失效于新钱包必须对新钱包重新执行一次backupwallet把备份文件放到独立存储位置。回退方案失败或异常时怎么退回⚠️ 在确认新钱包余额、描述符都无误、且新备份已建立之前不要删除自动备份文件也不要卸载它。迁移中途失败或结果异常用restorewallet从.legacy.bak恢复例如bitcoin-cli restorewallet legacy-wallet /钱包目录/xxx.legacy.bak即可恢复出原钱包。恢复后涉及重新扫描启动节点时加上-blockfilterindex1利用区块过滤器可显著加快重扫速度这是restorewallet帮助文档中的官方提示。迁移完成但漏了个别脚本先确认该脚本是否重要重要且无法通过其他途径恢复的同样可用.legacy.bak回退再等待后续版本修复或寻求社区协助。只想验证流程、不想动生产钱包先在测试网Testnet上完整走一遍备份—迁移—核对—回退确认口令、路径、超时都没问题后再操作主网钱包。附用基准测试量化迁移耗时如果你对迁移耗时没有概念或者想验证自己节点上是否出现性能回归可以用仓库自带的专项基准src/bench/wallet_migration.cpp会构造一个含监控地址、500 个私钥及对应交易的模拟旧钱包然后完整跑一遍迁移并计时。cmake -B build -DBUILD_BENCHON cmake --build build -t bench_bitcoin build/bin/bench_bitcoin -filterwallet_migration它给出的是你自己机器上的参考耗时。钱包越大私钥数、交易数越多耗时越长拿它和迁移生产钱包前的预期做对比即可不必追求某个固定数字。收尾清单迁移前手工backupwallet一份 ✅加密钱包迁移时带入口令 ✅迁移返回后记下backup_path✅新钱包getbalance、listdescriptors核对通过 ✅新钱包重新备份、旧备份暂不删除 ✅做到这五步迁移就处在最坏情况可回退的安全状态之后无论钱包规模多大流程都是一样的。【免费下载链接】bitcoinBitcoin Core integration/staging tree项目地址: https://gitcode.com/GitHub_Trending/bi/bitcoin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考