test: Return dict in MiniWallet::send_to

This commit is contained in:
MarcoFalke 2023-05-12 15:27:05 +02:00
parent 9d85c03620
commit faf4315c88
No known key found for this signature in database
8 changed files with 20 additions and 16 deletions

View file

@ -145,14 +145,14 @@ class CoinStatsIndexTest(BitcoinTestFramework):
self.block_sanity_check(res5['block_info']) self.block_sanity_check(res5['block_info'])
# Generate and send a normal tx with two outputs # Generate and send a normal tx with two outputs
tx1_txid, tx1_vout = self.wallet.send_to( tx1 = self.wallet.send_to(
from_node=node, from_node=node,
scriptPubKey=self.wallet.get_scriptPubKey(), scriptPubKey=self.wallet.get_scriptPubKey(),
amount=21 * COIN, amount=21 * COIN,
) )
# Find the right position of the 21 BTC output # Find the right position of the 21 BTC output
tx1_out_21 = self.wallet.get_utxo(txid=tx1_txid, vout=tx1_vout) tx1_out_21 = self.wallet.get_utxo(txid=tx1["txid"], vout=tx1["sent_vout"])
# Generate and send another tx with an OP_RETURN output (which is unspendable) # Generate and send another tx with an OP_RETURN output (which is unspendable)
tx2 = self.wallet.create_self_transfer(utxo_to_spend=tx1_out_21)['tx'] tx2 = self.wallet.create_self_transfer(utxo_to_spend=tx1_out_21)['tx']

View file

@ -93,7 +93,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
confirmed - txout created will be confirmed in the blockchain; confirmed - txout created will be confirmed in the blockchain;
unconfirmed otherwise. unconfirmed otherwise.
""" """
txid, n = self.wallet.send_to(from_node=node, scriptPubKey=scriptPubKey or self.wallet.get_scriptPubKey(), amount=amount) tx = self.wallet.send_to(from_node=node, scriptPubKey=scriptPubKey or self.wallet.get_scriptPubKey(), amount=amount)
if confirmed: if confirmed:
mempool_size = len(node.getrawmempool()) mempool_size = len(node.getrawmempool())
@ -105,7 +105,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
assert new_size < mempool_size assert new_size < mempool_size
mempool_size = new_size mempool_size = new_size
return self.wallet.get_utxo(txid=txid, vout=n) return self.wallet.get_utxo(txid=tx["txid"], vout=tx["sent_vout"])
def test_simple_doublespend(self): def test_simple_doublespend(self):
"""Simple doublespend""" """Simple doublespend"""

View file

@ -96,7 +96,7 @@ class RESTTest (BitcoinTestFramework):
self.wallet = MiniWallet(self.nodes[0]) self.wallet = MiniWallet(self.nodes[0])
self.log.info("Broadcast test transaction and sync nodes") self.log.info("Broadcast test transaction and sync nodes")
txid, _ = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=getnewdestination()[1], amount=int(0.1 * COIN)) txid = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=getnewdestination()[1], amount=int(0.1 * COIN))["txid"]
self.sync_all() self.sync_all()
self.log.info("Test the /tx URI") self.log.info("Test the /tx URI")
@ -173,7 +173,7 @@ class RESTTest (BitcoinTestFramework):
# found with or without /checkmempool. # found with or without /checkmempool.
# do a tx and don't sync # do a tx and don't sync
txid, _ = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=getnewdestination()[1], amount=int(0.1 * COIN)) txid = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=getnewdestination()[1], amount=int(0.1 * COIN))["txid"]
json_obj = self.test_rest_request(f"/tx/{txid}") json_obj = self.test_rest_request(f"/tx/{txid}")
# get the spent output to later check for utxo (should be spent by then) # get the spent output to later check for utxo (should be spent by then)
spent = (json_obj['vin'][0]['txid'], json_obj['vin'][0]['vout']) spent = (json_obj['vin'][0]['txid'], json_obj['vin'][0]['vout'])

View file

@ -350,7 +350,7 @@ class MempoolAcceptanceTest(BitcoinTestFramework):
self.log.info('A tiny transaction(in non-witness bytes) that is disallowed') self.log.info('A tiny transaction(in non-witness bytes) that is disallowed')
tx = CTransaction() tx = CTransaction()
tx.vin.append(CTxIn(COutPoint(int(seed_tx[0], 16), seed_tx[1]), b"", SEQUENCE_FINAL)) tx.vin.append(CTxIn(COutPoint(int(seed_tx["txid"], 16), seed_tx["sent_vout"]), b"", SEQUENCE_FINAL))
tx.wit.vtxinwit = [CTxInWitness()] tx.wit.vtxinwit = [CTxInWitness()]
tx.wit.vtxinwit[0].scriptWitness.stack = [CScript([OP_TRUE])] tx.wit.vtxinwit[0].scriptWitness.stack = [CScript([OP_TRUE])]
tx.vout.append(CTxOut(0, CScript([OP_RETURN] + ([OP_0] * (MIN_PADDING - 2))))) tx.vout.append(CTxOut(0, CScript([OP_RETURN] + ([OP_0] * (MIN_PADDING - 2)))))

View file

@ -49,7 +49,7 @@ class BytesPerSigOpTest(BitcoinTestFramework):
"""Create a 1-input-1-output P2WSH spending transaction with only the """Create a 1-input-1-output P2WSH spending transaction with only the
witness script in the witness stack and the given output script.""" witness script in the witness stack and the given output script."""
# create P2WSH address and fund it via MiniWallet first # create P2WSH address and fund it via MiniWallet first
txid, vout = self.wallet.send_to( fund = self.wallet.send_to(
from_node=self.nodes[0], from_node=self.nodes[0],
scriptPubKey=script_to_p2wsh_script(witness_script), scriptPubKey=script_to_p2wsh_script(witness_script),
amount=1000000, amount=1000000,
@ -57,7 +57,7 @@ class BytesPerSigOpTest(BitcoinTestFramework):
# create spending transaction # create spending transaction
tx = CTransaction() tx = CTransaction()
tx.vin = [CTxIn(COutPoint(int(txid, 16), vout))] tx.vin = [CTxIn(COutPoint(int(fund["txid"], 16), fund["sent_vout"]))]
tx.wit.vtxinwit = [CTxInWitness()] tx.wit.vtxinwit = [CTxInWitness()]
tx.wit.vtxinwit[0].scriptWitness.stack = [bytes(witness_script)] tx.wit.vtxinwit[0].scriptWitness.stack = [bytes(witness_script)]
tx.vout = [CTxOut(500000, output_script)] tx.vout = [CTxOut(500000, output_script)]

View file

@ -136,7 +136,7 @@ class FilterTest(BitcoinTestFramework):
filter_peer = P2PBloomFilter() filter_peer = P2PBloomFilter()
self.log.debug("Create a tx relevant to the peer before connecting") self.log.debug("Create a tx relevant to the peer before connecting")
txid, _ = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=filter_peer.watch_script_pubkey, amount=9 * COIN) txid = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=filter_peer.watch_script_pubkey, amount=9 * COIN)["txid"]
self.log.debug("Send a mempool msg after connecting and check that the tx is received") self.log.debug("Send a mempool msg after connecting and check that the tx is received")
self.nodes[0].add_p2p_connection(filter_peer) self.nodes[0].add_p2p_connection(filter_peer)
@ -183,14 +183,14 @@ class FilterTest(BitcoinTestFramework):
self.log.info('Check that we receive a tx if the filter matches a mempool tx') self.log.info('Check that we receive a tx if the filter matches a mempool tx')
filter_peer.merkleblock_received = False filter_peer.merkleblock_received = False
txid, _ = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=filter_peer.watch_script_pubkey, amount=9 * COIN) txid = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=filter_peer.watch_script_pubkey, amount=9 * COIN)["txid"]
filter_peer.wait_for_tx(txid) filter_peer.wait_for_tx(txid)
assert not filter_peer.merkleblock_received assert not filter_peer.merkleblock_received
self.log.info('Check that after deleting filter all txs get relayed again') self.log.info('Check that after deleting filter all txs get relayed again')
filter_peer.send_and_ping(msg_filterclear()) filter_peer.send_and_ping(msg_filterclear())
for _ in range(5): for _ in range(5):
txid, _ = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=getnewdestination()[1], amount=7 * COIN) txid = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=getnewdestination()[1], amount=7 * COIN)["txid"]
filter_peer.wait_for_tx(txid) filter_peer.wait_for_tx(txid)
self.log.info('Check that request for filtered blocks is ignored if no filter is set') self.log.info('Check that request for filtered blocks is ignored if no filter is set')

View file

@ -195,7 +195,7 @@ class RpcCreateMultiSigTest(BitcoinTestFramework):
wmulti.unloadwallet() wmulti.unloadwallet()
spk = address_to_scriptpubkey(madd) spk = address_to_scriptpubkey(madd)
txid, _ = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=spk, amount=1300) txid = self.wallet.send_to(from_node=self.nodes[0], scriptPubKey=spk, amount=1300)["txid"]
tx = node0.getrawtransaction(txid, True) tx = node0.getrawtransaction(txid, True)
vout = [v["n"] for v in tx["vout"] if madd == v["scriptPubKey"]["address"]] vout = [v["n"] for v in tx["vout"] if madd == v["scriptPubKey"]["address"]]
assert len(vout) == 1 assert len(vout) == 1

View file

@ -256,15 +256,19 @@ class MiniWallet:
Note that this method fails if there is no single internal utxo Note that this method fails if there is no single internal utxo
available that can cover the cost for the amount and the fixed fee available that can cover the cost for the amount and the fixed fee
(the utxo with the largest value is taken). (the utxo with the largest value is taken).
Returns a tuple (txid, n) referring to the created external utxo outpoint.
""" """
tx = self.create_self_transfer(fee_rate=0)["tx"] tx = self.create_self_transfer(fee_rate=0)["tx"]
assert_greater_than_or_equal(tx.vout[0].nValue, amount + fee) assert_greater_than_or_equal(tx.vout[0].nValue, amount + fee)
tx.vout[0].nValue -= (amount + fee) # change output -> MiniWallet tx.vout[0].nValue -= (amount + fee) # change output -> MiniWallet
tx.vout.append(CTxOut(amount, scriptPubKey)) # arbitrary output -> to be returned tx.vout.append(CTxOut(amount, scriptPubKey)) # arbitrary output -> to be returned
txid = self.sendrawtransaction(from_node=from_node, tx_hex=tx.serialize().hex()) txid = self.sendrawtransaction(from_node=from_node, tx_hex=tx.serialize().hex())
return txid, 1 return {
"sent_vout": 1,
"txid": txid,
"wtxid": tx.getwtxid(),
"hex": tx.serialize().hex(),
"tx": tx,
}
def send_self_transfer_multi(self, *, from_node, **kwargs): def send_self_transfer_multi(self, *, from_node, **kwargs):
"""Call create_self_transfer_multi and send the transaction.""" """Call create_self_transfer_multi and send the transaction."""