往比特币核心钱包里导一把旧私钥,曾是运维教程里出现频率最高的一幕:importprivkey 敲下去,等扫描,完事。但如果你现在用的是 v30 或更新的节点,这一幕不会再出现——随着 Berkeley DB 旧式钱包被彻底移除,十一条配套 RPC 在同一版里集体退役。本文把清单点齐,再给每条旧动线找到新走法。
退役名单:v30 一次请走了谁
按 v30.0 发布说明,同批移除的 legacy 专用 RPC 共十一条:addmultisigaddress、dumpprivkey、dumpwallet、importaddress、importmulti、importprivkey、importpubkey、importwallet、newkeypool、sethdseed、upgradewallet。同批动刀的还有命令行工具 bitcoin-wallet:-withinternalbdb、-legacy、-descriptors 这些围绕旧格式存在的选项被当作冗余删除。发布说明同时交代了旧钱包的处境:BDB legacy 钱包既不能创建也不能加载,只能迁移到新格式。

为什么是这一批
这些命令有一个共同点:它们服务的是”钱包知道自己装过什么地址”的旧记账方式。描述符钱包把同样的信息压缩成一行行可验证的输出描述,导入动作统一成”把一段描述符加进来”,于是按地址、按私钥、按公钥、按多签分别开口子的十条 import 系命令失去了存在必要;upgradewallet 与 sethdseed 操作的字段属于旧格式特有的账本结构,格式本身没了,命令也就没了归宿。
旧动线的新走法
导私钥:过去 importprivkey,现在用 importdescriptors 导入带私钥的描述符,例如以 wpkh(priv(派生路径/...)) 形态给出的那一行;派生信息、扫描起点都由描述符与时间戳参数一并交代。导脚本地址(只看不动):过去 importaddress,现在导入 addr(地址) 或 pkh()、sh() 形态的观察描述符。导公钥:过去 importpubkey,现在换成 wpkh(公钥) 这类描述符。建多签收款:过去 addmultisigaddress,现在用 multi(k,公钥...) 或 sortedmulti() 描述符,建钱包时用 createwallet 带出,老钱包想追加则用 createwalletdescriptor。dumpwallet 的替代思路是 listdescriptors 导出全套描述符,再配合钱包备份文件本身。newkeypool 对应回 keypoolrefill,sethdseed 与 upgradewallet 的职责则分别由建钱包参数与 migratewallet 时代的一次性迁移覆盖。
别只盯着这十一条
同一版发布说明里还有几处容易踩的暗坎。include_watchonly 选项及其变体从所有带它的 RPC 上移除,iswatchonly 字段从所有返回它的 RPC 上消失——原因是描述符钱包不允许观察型与含私钥的描述符混住,旁观内容早已被拆进独立钱包。另外两条是错误语义的收敛:unloadwallet 在两个参数都缺时改报 RPC_INVALID_PARAMETER 而不是 JSON 解析错误;getdescriptoractivity 的两个入参被明确标为必填,缺参时能拿到清楚的帮助文本。自动化脚本遇到”以前能跑现在报错”,多半出在这些字段与选项上,而不是你的币出了事。
给两类人的建议
还在跑旧钱包的用户:先用 migratewallet 完成迁移,把主钱包、watchonly 钱包、只读备份三件套核对一遍再谈升级习惯。已经在新版上的用户:把手头脚本里出现上述十一条命令的位置逐一改写,遇到不确定的替代命令,优先查 help 命令名 的当期帮助,而不是搜索引擎里的老教程。
一个自查小流程
升级到 v30 及以上后,用十分钟做一遍命令体检:把你所有运维脚本、备份任务、监控告警里的 RPC 调用名逐条抄出来,对照退役清单打勾;没打勾的再拿去 help 命令名 问一遍当期版本,命令还在的记下它的新参数语义,不在的当场改掉。这个流程的意义在于,RPC 的移除大多不是当天报错——有些命令的替代者会先以”参数被忽略”的灰度形态存在几版,等你的脚本终于报错时,中间几周的账可能已经记岔了。主动对账比被动排错便宜得多。
风险提示:本文依据比特币核心 v30.0 发布说明整理,命令与参数的存废可能随版本进一步调整,请以你实际运行版本的官方文档为准。内容为技术说明,不构成任何投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。