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

使用bitcoinlib发送比特币报错:Not enough unspent transaction outputs found

问题原因与解决办法

错误核心原因

你碰到的Not enough unspent transaction outputs found错误,主要是这几个情况导致:

  • 比特币转账必须支付矿工手续费,你要转出的0.00017984 BTC加上手续费后,已经超出钱包实际可支配余额;
  • 钱包未完成UTXO(未花费交易输出)同步,导致bitcoinlib无法识别到可用资金;
  • 若钱包内的UTXO是多个小额输出的总和,可能单个UTXO不足以覆盖转账金额+手续费,库未自动完成合并处理。

具体解决步骤

1. 先核查钱包UTXO与可用余额

先添加代码查看钱包的真实资金状态,确认UTXO和可支配余额:

from bitcoinlib.wallets import Wallet

w = Wallet('Wallet1')
# 打印所有未花费交易输出
print("钱包UTXO列表:")
for utxo in w.utxos():
    print(f"金额: {utxo.amount} BTC, 确认数: {utxo.confirmations}")
# 打印扣除预估手续费后的可支配余额
print(f"钱包可用余额(含手续费预留): {w.balance()} BTC")

注:w.balance()返回的是扣除手续费后的可转出金额,不是钱包总余额。

2. 调整转账金额,预留手续费空间

不要尝试全额转出,留足手续费和找零的空间。比如将转账金额改为0.00016 BTC:

from bitcoinlib.wallets import Wallet

w = Wallet('Wallet1')
# 指定转账金额,预留手续费
t = w.send_to('bc1qtrflvfw99jzqakvxt985d7jls6tm8mwtxjr652', '0.00016 BTC', offline=False)
print(f"交易已发送,交易ID: {t.txid}")

3. 自动转出最大可支配金额

如果想转出尽可能多的资金,直接用send_max方法,它会自动计算手续费并转出剩余所有可支配资金:

from bitcoinlib.wallets import Wallet

w = Wallet('Wallet1')
# 自动计算手续费,转出最大可支配金额
t = w.send_max('bc1qtrflvfw99jzqakvxt985d7jls6tm8mwtxjr652', offline=False)
print(f"交易已发送,交易ID: {t.txid}")

4. 强制同步钱包数据

如果查询UTXO时显示为空或金额不符,先强制同步钱包的区块链数据:

from bitcoinlib.wallets import Wallet

w = Wallet('Wallet1')
# 强制同步区块链
w.synchronize()
# 同步后再次查询UTXO
print("同步后UTXO列表:")
for utxo in w.utxos():
    print(f"金额: {utxo.amount} BTC, 确认数: {utxo.confirmations}")

注:同步需要网络连接,根据区块链数据量,可能需要几分钟时间。

额外注意事项

  • 确认目标地址bc1qtrflvfw99jzqakvxt985d7jls6tm8mwtxjr652是正确的SegWit地址,bitcoinlib支持该格式,但务必保证地址无误;
  • 若UTXO的确认数不足(比如小于1),部分节点不会认可该UTXO为可用资金,需等待确认完成后再操作。

内容的提问来源于stack exchange,提问作者Kellen Rippin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:27:21