使用btcd rpcClient调用ListUnspent主网节点报“未指定钱包文件”错误
解决btcd主网节点调用ListUnspent时的钱包路径错误
问题根因
btcd主网模式的钱包RPC路由规则和Signet测试网存在差异:主网要求所有钱包相关RPC请求必须通过/wallet/<钱包文件名>的URI路径明确指定目标钱包,即便已执行加载钱包操作,默认RPC根路径也不会自动关联已加载的钱包;而Signet测试网允许默认路径关联已加载钱包,因此不会触发该错误。
具体解决步骤
- 使用rpcClient时:修改RPC请求的基础URL,在原有地址后追加
/wallet/<你的钱包文件名>。比如原本的RPC地址是http://localhost:8334,需改为http://localhost:8334/wallet/mywallet.db(替换为实际钱包文件名),后续ListUnspent等钱包操作请求都要通过这个带钱包路径的地址发送。 - 使用curl复现时:调整请求URL添加钱包路径参数,示例命令如下:
curl --user rpcuser:rpcpass --data-binary '{"jsonrpc":"1.0","id":"curltest","method":"listunspent","params":[]}' http://localhost:8334/wallet/your-wallet-file.db - 验证钱包加载状态:执行加载钱包操作后,可通过
listwalletsRPC命令确认钱包已成功加载,确保后续请求的钱包文件名与加载的完全一致。
额外注意事项
- 确认主网节点的btcd配置未禁用钱包路径路由功能,默认配置即可支持该路由。
- 主网和Signet的钱包文件默认存储路径不同,需确保主网节点加载的是主网目录下的目标钱包文件(通常主网钱包路径为
~/.btcd/wallets/,Signet为~/.btcd/signet/wallets/)。
内容的提问来源于stack exchange,提问作者Валентин Стайков
相关产品推荐
相关产品推荐

