|
|
@ -30,6 +30,7 @@ class RawTransactionsTest(BitcoinTestFramework): |
|
|
|
feeTolerance = Decimal(0.00000002) #if the fee's positive delta is higher than this value tests will fail, neg. delta always fail the tests |
|
|
|
feeTolerance = Decimal(0.00000002) #if the fee's positive delta is higher than this value tests will fail, neg. delta always fail the tests |
|
|
|
|
|
|
|
|
|
|
|
self.nodes[2].generate(1) |
|
|
|
self.nodes[2].generate(1) |
|
|
|
|
|
|
|
self.sync_all() |
|
|
|
self.nodes[0].generate(101) |
|
|
|
self.nodes[0].generate(101) |
|
|
|
self.sync_all() |
|
|
|
self.sync_all() |
|
|
|
self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(),1.5); |
|
|
|
self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(),1.5); |
|
|
@ -46,17 +47,10 @@ class RawTransactionsTest(BitcoinTestFramework): |
|
|
|
outputs = { self.nodes[0].getnewaddress() : 1.0 } |
|
|
|
outputs = { self.nodes[0].getnewaddress() : 1.0 } |
|
|
|
rawtx = self.nodes[2].createrawtransaction(inputs, outputs) |
|
|
|
rawtx = self.nodes[2].createrawtransaction(inputs, outputs) |
|
|
|
dec_tx = self.nodes[2].decoderawtransaction(rawtx) |
|
|
|
dec_tx = self.nodes[2].decoderawtransaction(rawtx) |
|
|
|
|
|
|
|
|
|
|
|
rawtxfund = self.nodes[2].fundrawtransaction(rawtx) |
|
|
|
rawtxfund = self.nodes[2].fundrawtransaction(rawtx) |
|
|
|
fee = rawtxfund['fee'] |
|
|
|
fee = rawtxfund['fee'] |
|
|
|
dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) |
|
|
|
dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) |
|
|
|
totalOut = 0 |
|
|
|
assert_equal(len(dec_tx['vin']) > 0, True) #test if we have enought inputs |
|
|
|
for out in dec_tx['vout']: |
|
|
|
|
|
|
|
totalOut += out['value'] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assert_equal(len(dec_tx['vin']), 1) #one vin coin |
|
|
|
|
|
|
|
assert_equal(dec_tx['vin'][0]['scriptSig']['hex'], '') |
|
|
|
|
|
|
|
assert_equal(fee + totalOut, 1.5) #the 1.5BTC coin must be taken |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
############################## |
|
|
|
############################## |
|
|
|
# simple test with two coins # |
|
|
|
# simple test with two coins # |
|
|
@ -69,14 +63,7 @@ class RawTransactionsTest(BitcoinTestFramework): |
|
|
|
rawtxfund = self.nodes[2].fundrawtransaction(rawtx) |
|
|
|
rawtxfund = self.nodes[2].fundrawtransaction(rawtx) |
|
|
|
fee = rawtxfund['fee'] |
|
|
|
fee = rawtxfund['fee'] |
|
|
|
dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) |
|
|
|
dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) |
|
|
|
totalOut = 0 |
|
|
|
assert_equal(len(dec_tx['vin']) > 0, True) #test if we have enought inputs |
|
|
|
for out in dec_tx['vout']: |
|
|
|
|
|
|
|
totalOut += out['value'] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assert_equal(len(dec_tx['vin']), 2) #one vin coin |
|
|
|
|
|
|
|
assert_equal(dec_tx['vin'][0]['scriptSig']['hex'], '') |
|
|
|
|
|
|
|
assert_equal(dec_tx['vin'][1]['scriptSig']['hex'], '') |
|
|
|
|
|
|
|
assert_equal(fee + totalOut, 2.5) #the 1.5BTC+1.0BTC coins must have be taken |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
############################## |
|
|
|
############################## |
|
|
|
# simple test with two coins # |
|
|
|
# simple test with two coins # |
|
|
@ -89,13 +76,8 @@ class RawTransactionsTest(BitcoinTestFramework): |
|
|
|
rawtxfund = self.nodes[2].fundrawtransaction(rawtx) |
|
|
|
rawtxfund = self.nodes[2].fundrawtransaction(rawtx) |
|
|
|
fee = rawtxfund['fee'] |
|
|
|
fee = rawtxfund['fee'] |
|
|
|
dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) |
|
|
|
dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) |
|
|
|
totalOut = 0 |
|
|
|
assert_equal(len(dec_tx['vin']) > 0, True) |
|
|
|
for out in dec_tx['vout']: |
|
|
|
|
|
|
|
totalOut += out['value'] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assert_equal(len(dec_tx['vin']), 1) #one vin coin |
|
|
|
|
|
|
|
assert_equal(dec_tx['vin'][0]['scriptSig']['hex'], '') |
|
|
|
assert_equal(dec_tx['vin'][0]['scriptSig']['hex'], '') |
|
|
|
assert_equal(fee + totalOut, 5.0) #the 5.0BTC coin must have be taken |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
################################ |
|
|
|
################################ |
|
|
@ -113,11 +95,8 @@ class RawTransactionsTest(BitcoinTestFramework): |
|
|
|
for out in dec_tx['vout']: |
|
|
|
for out in dec_tx['vout']: |
|
|
|
totalOut += out['value'] |
|
|
|
totalOut += out['value'] |
|
|
|
|
|
|
|
|
|
|
|
assert_equal(len(dec_tx['vin']), 2) #one vin coin |
|
|
|
assert_equal(len(dec_tx['vin']) > 0, True) |
|
|
|
assert_equal(dec_tx['vin'][0]['scriptSig']['hex'], '') |
|
|
|
assert_equal(dec_tx['vin'][0]['scriptSig']['hex'], '') |
|
|
|
assert_equal(dec_tx['vin'][1]['scriptSig']['hex'], '') |
|
|
|
|
|
|
|
assert_equal(fee + totalOut, 6.0) #the 5.0BTC + 1.0BTC coins must have be taken |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
######################################################################### |
|
|
|
######################################################################### |
|
|
@ -220,8 +199,6 @@ class RawTransactionsTest(BitcoinTestFramework): |
|
|
|
assert_equal(matchingOuts, 1) |
|
|
|
assert_equal(matchingOuts, 1) |
|
|
|
assert_equal(len(dec_tx['vout']), 2) |
|
|
|
assert_equal(len(dec_tx['vout']), 2) |
|
|
|
|
|
|
|
|
|
|
|
assert_equal(fee + totalOut, 2.5) #this tx must use the 1.0BTC and the 1.5BTC coin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
########################################### |
|
|
|
########################################### |
|
|
|
# test a fundrawtransaction with two VINs # |
|
|
|
# test a fundrawtransaction with two VINs # |
|
|
@ -264,8 +241,6 @@ class RawTransactionsTest(BitcoinTestFramework): |
|
|
|
matchingIns+=1 |
|
|
|
matchingIns+=1 |
|
|
|
|
|
|
|
|
|
|
|
assert_equal(matchingIns, 2) #we now must see two vins identical to vins given as params |
|
|
|
assert_equal(matchingIns, 2) #we now must see two vins identical to vins given as params |
|
|
|
assert_equal(fee + totalOut, 7.5) #this tx must use the 1.0BTC and the 1.5BTC coin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
######################################################### |
|
|
|
######################################################### |
|
|
|
# test a fundrawtransaction with two VINs and two vOUTs # |
|
|
|
# test a fundrawtransaction with two VINs and two vOUTs # |
|
|
@ -300,8 +275,6 @@ class RawTransactionsTest(BitcoinTestFramework): |
|
|
|
|
|
|
|
|
|
|
|
assert_equal(matchingOuts, 2) |
|
|
|
assert_equal(matchingOuts, 2) |
|
|
|
assert_equal(len(dec_tx['vout']), 3) |
|
|
|
assert_equal(len(dec_tx['vout']), 3) |
|
|
|
assert_equal(fee + totalOut, 7.5) #this tx must use the 1.0BTC and the 1.5BTC coin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
############################################## |
|
|
|
############################################## |
|
|
|
# test a fundrawtransaction with invalid vin # |
|
|
|
# test a fundrawtransaction with invalid vin # |
|
|
|