You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

bitcoinlib报WalletError:指定钱包未找到,求技术解决方案

解决bitcoinlib Wallet实例化错误问题

问题背景

已安装bitcoinlib模块,运行以下代码时触发WalletError:

运行代码

from bitcoinlib.wallets import Wallet

# Set up sender and recipient wallet addresses
sender_wallet = Wallet('L3ZoqFs7WYDUdCrzeNgY6ThKP8hEY2ozrpHgk4auDLpNbfeTaxyi')
recipient_wallet = 'bc1q98p7r9uqsg3xjwaj6e04d99c5u5rue6kvfl3yu'

# Set up transaction details
fee = 0.0001  # transaction fee
amount = 0.1  # amount to send
change = 0.0  # amount to send back to sender
data = None  # transaction data
message = "This is a test transaction"  # transaction message

# Create transaction and sign with sender's private key
tx = sender_wallet.send_to(recipient_wallet, amount, fee, change, data, message)
tx.sign(sender_wallet)

# Broadcast transaction to Bitcoin network
tx.broadcast()

报错信息

Traceback (most recent call last):
  File "C:\Users\Admin\Desktop\BTC Flashing\sendcrypto.py", line 4, in <module>
    sender_wallet = Wallet('L3ZoqFs7WYDUdCrzeNgY6ThKP8hEY2ozrpHgk4auDLpNbfeTaxyi')
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Admin\AppData\Roaming\Python\Python311\site-packages\bitcoinlib\wallets.py", line 1408, in __init__
    raise WalletError("Wallet '%s' not found, please specify correct wallet ID or name." % wallet)
bitcoinlib.wallets.WalletError: Wallet 'L3ZoqFs7WYDUdCrzeNgY6ThKP8hEY2ozrpHgk4auDLpNbfeTaxyi' not found, please specify correct wallet ID or name.

用户明确知晓公开私钥的风险,需解决该错误。

解决方法

错误原因

bitcoinlib的Wallet类初始化时,参数接受的是钱包名称、ID或数据库中已存在的钱包标识,而非私钥。直接传入私钥会导致库无法匹配到对应钱包,触发错误。

正确实现代码

使用Wallet.create()方法从私钥导入并创建钱包实例:

from bitcoinlib.wallets import Wallet

# 你的私钥
private_key = 'L3ZoqFs7WYDUdCrzeNgY6ThKP8hEY2ozrpHgk4auDLpNbfeTaxyi'
recipient_addr = 'bc1q98p7r9uqsg3xjwaj6e04d99c5u5rue6kvfl3yu'

# 从私钥创建/加载钱包
# 第一个参数为钱包名称,若已存在则直接加载,不存在则创建并导入私钥
sender_wallet = Wallet.create('my_sender_wallet', keys=private_key, network='bitcoin')

# 设置交易参数
fee = 0.0001
send_amount = 0.1
change_amount = 0.0
tx_data = None
tx_message = "This is a test transaction"

# 创建交易并自动签名(send_to方法会自动用钱包内的密钥完成签名)
tx = sender_wallet.send_to(recipient_addr, send_amount, fee, change_amount, tx_data, tx_message)

# 广播交易到比特币网络
tx.broadcast()

关键注意事项

  • Wallet.create()会自动处理钱包的创建与加载:若指定名称的钱包已存在,直接加载;不存在则创建新钱包并导入私钥。
  • send_to方法默认会使用钱包内的私钥完成交易签名,无需额外调用tx.sign(),重复调用可能引发签名冲突错误。
  • network='bitcoin'指定使用比特币主网,若使用测试网可改为'testnet'。

内容的提问来源于stack exchange,提问作者Pranav Suchak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:57:52