首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python bitcoinlib中使用多个输入创建和广播tx?

如何在python bitcoinlib中使用多个输入创建和广播tx?
EN

Stack Overflow用户
提问于 2022-03-28 18:28:09
回答 1查看 405关注 0票数 -1

我试图在bitcoinlib中创建一个具有多个输入的事务。我从bitcoinlib回购中的示例上粘贴了一个例子

代码语言:javascript
复制
from bitcoinlib.transactions import *
from bitcoinlib.services.services import *
import requests

amount = 19605 # in satoshis
t = Transaction(fee=5000, outputs=[Output(amount, address="to address")])
transaction_inputs = [
    ("b0514d3d47bffdf588e14e0324c88e4934a36423f011d634b4e379b3a65c5207", 0, "wif private key"),
    ("4e831f9221470f93cc0cd2e0ef0e2f731c5bbfde0e8fc2ae430b31149ffd25bb", 1, "wif private key")
]
for ti in transaction_inputs:
    ki = Key(ti[2])
    t.add_input(prev_txid=ti[0], output_n=ti[1], keys=ki.public())
icount = 0
for ti in transaction_inputs:
    ki = Key(ti[2])
    t.sign(ki.private_byte, icount)
    icount += 1

print(t.verify())
rawhextx = t.raw_hex()
tx = Service().sendrawtransaction(rawhextx)
print(tx)

sendrawtransaction返回False。t.verify()是真。此外,我还试图通过POST请求向blockchain.info广播tx:

代码语言:javascript
复制
>>> resp = requests.post("https://blockchain.info/pushtx", data={"tx": rawhextx})
>>> resp.text
'Code: -25, Error: bad-txns-inputs-missingorspent'

据我所知,这个错误意味着我的UTXO已经被使用了,但它们不是(我用上面的UTXO指定了txs )。我想使用这个库,但是如果这个库不适合我的任务,我愿意接受其他的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-31 11:15:01

我解决了。"output_n“是输出的索引,与"prev_txid”tx中的发送方地址有关,而不是tx输入的索引。将元组中的所有第二个值更改为0会有所帮助,因为对其地址的输出有第一个索引。

代码语言:javascript
复制
from bitcoinlib.transactions import *
from bitcoinlib.services.services import *
import requests

amount = 19605 # in satoshis
t = Transaction(fee=5000, outputs=[Output(amount, address="to address")])
transaction_inputs = [
    ("b0514d3d47bffdf588e14e0324c88e4934a36423f011d634b4e379b3a65c5207", 0, "wif private key"),
    ("4e831f9221470f93cc0cd2e0ef0e2f731c5bbfde0e8fc2ae430b31149ffd25bb", 0, "wif private key")
]
for ti in transaction_inputs:
    ki = Key(ti[2])
    t.add_input(prev_txid=ti[0], output_n=ti[1], keys=ki.public())
icount = 0
for ti in transaction_inputs:
    ki = Key(ti[2])
    t.sign(ki.private_byte, icount)
    icount += 1

print(t.verify())
rawhextx = t.raw_hex()
tx = Service().sendrawtransaction(rawhextx)
print(tx)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71652047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档