|
|
|
@ -137,6 +137,61 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|
|
|
|
self.nodes[2].createrawtransaction(inputs=[{'txid': txid, 'vout': 9}], outputs=[{address: 99}, {'data': '99'}, {'data': '99'}]),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
for type in ["bech32", "p2sh-segwit", "legacy"]:
|
|
|
|
|
addr = self.nodes[0].getnewaddress("", type)
|
|
|
|
|
addrinfo = self.nodes[0].getaddressinfo(addr)
|
|
|
|
|
pubkey = addrinfo["scriptPubKey"]
|
|
|
|
|
|
|
|
|
|
self.log.info('sendrawtransaction with missing prevtx info (%s)' %(type))
|
|
|
|
|
|
|
|
|
|
# Test `signrawtransactionwithwallet` invalid `prevtxs`
|
|
|
|
|
inputs = [ {'txid' : txid, 'vout' : 3, 'sequence' : 1000}]
|
|
|
|
|
outputs = { self.nodes[0].getnewaddress() : 1 }
|
|
|
|
|
rawtx = self.nodes[0].createrawtransaction(inputs, outputs)
|
|
|
|
|
|
|
|
|
|
prevtx = dict(txid=txid, scriptPubKey=pubkey, vout=3, amount=1)
|
|
|
|
|
succ = self.nodes[0].signrawtransactionwithwallet(rawtx, [prevtx])
|
|
|
|
|
assert succ["complete"]
|
|
|
|
|
if type == "legacy":
|
|
|
|
|
del prevtx["amount"]
|
|
|
|
|
succ = self.nodes[0].signrawtransactionwithwallet(rawtx, [prevtx])
|
|
|
|
|
assert succ["complete"]
|
|
|
|
|
|
|
|
|
|
if type != "legacy":
|
|
|
|
|
assert_raises_rpc_error(-3, "Missing amount", self.nodes[0].signrawtransactionwithwallet, rawtx, [
|
|
|
|
|
{
|
|
|
|
|
"txid": txid,
|
|
|
|
|
"scriptPubKey": pubkey,
|
|
|
|
|
"vout": 3,
|
|
|
|
|
}
|
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
assert_raises_rpc_error(-3, "Missing vout", self.nodes[0].signrawtransactionwithwallet, rawtx, [
|
|
|
|
|
{
|
|
|
|
|
"txid": txid,
|
|
|
|
|
"scriptPubKey": pubkey,
|
|
|
|
|
"amount": 1,
|
|
|
|
|
}
|
|
|
|
|
])
|
|
|
|
|
assert_raises_rpc_error(-3, "Missing txid", self.nodes[0].signrawtransactionwithwallet, rawtx, [
|
|
|
|
|
{
|
|
|
|
|
"scriptPubKey": pubkey,
|
|
|
|
|
"vout": 3,
|
|
|
|
|
"amount": 1,
|
|
|
|
|
}
|
|
|
|
|
])
|
|
|
|
|
assert_raises_rpc_error(-3, "Missing scriptPubKey", self.nodes[0].signrawtransactionwithwallet, rawtx, [
|
|
|
|
|
{
|
|
|
|
|
"txid": txid,
|
|
|
|
|
"vout": 3,
|
|
|
|
|
"amount": 1
|
|
|
|
|
}
|
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
#########################################
|
|
|
|
|
# sendrawtransaction with missing input #
|
|
|
|
|
#########################################
|
|
|
|
|
|
|
|
|
|
self.log.info('sendrawtransaction with missing input')
|
|
|
|
|
inputs = [ {'txid' : "1d1d4e24ed99057e84c3f80fd8fbec79ed9e1acee37da269356ecea000000000", 'vout' : 1}] #won't exists
|
|
|
|
|
outputs = { self.nodes[0].getnewaddress() : 4.998 }
|
|
|
|
|