Merge #16079: wallet_balance.py: Prevent edge cases
bb41e632ca
wallet_balance.py: Prevent edge cases (Steven Roose)
Pull request description:
I ran into this edge case when running the test on Elements. I had a 0-value output as change.
ACKs for commit bb41e6:
Tree-SHA512: ef4c25289cafcdb4437f11ed537664dff5afedcefab75a46f985d3be70551de2d3bc8e9cfcb22c0f3d7d2eb95ff40df78b8d01dbacbf90c36bca00426937b0a2
This commit is contained in:
commit
b4223dd5f1
1 changed files with 7 additions and 2 deletions
|
@ -28,12 +28,17 @@ def create_transactions(node, address, amt, fees):
|
||||||
for utxo in utxos:
|
for utxo in utxos:
|
||||||
inputs.append({"txid": utxo["txid"], "vout": utxo["vout"]})
|
inputs.append({"txid": utxo["txid"], "vout": utxo["vout"]})
|
||||||
ins_total += utxo['amount']
|
ins_total += utxo['amount']
|
||||||
if ins_total + max(fees) > amt:
|
if ins_total >= amt + max(fees):
|
||||||
break
|
break
|
||||||
|
# make sure there was enough utxos
|
||||||
|
assert ins_total >= amt + max(fees)
|
||||||
|
|
||||||
txs = []
|
txs = []
|
||||||
for fee in fees:
|
for fee in fees:
|
||||||
outputs = {address: amt, node.getrawchangeaddress(): ins_total - amt - fee}
|
outputs = {address: amt}
|
||||||
|
# prevent 0 change output
|
||||||
|
if ins_total > amt + fee:
|
||||||
|
outputs[node.getrawchangeaddress()] = ins_total - amt - fee
|
||||||
raw_tx = node.createrawtransaction(inputs, outputs, 0, True)
|
raw_tx = node.createrawtransaction(inputs, outputs, 0, True)
|
||||||
raw_tx = node.signrawtransactionwithwallet(raw_tx)
|
raw_tx = node.signrawtransactionwithwallet(raw_tx)
|
||||||
assert_equal(raw_tx['complete'], True)
|
assert_equal(raw_tx['complete'], True)
|
||||||
|
|
Loading…
Reference in a new issue