mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-02 09:46:52 -05:00
tests: Test that external inputs of txs in wallet is handled correctly
This commit is contained in:
parent
eb879634db
commit
ef8e2a5b09
1 changed files with 17 additions and 6 deletions
|
@ -1079,17 +1079,28 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||
self.nodes[2].createwallet("test_weight_calculation")
|
||||
wallet = self.nodes[2].get_wallet_rpc("test_weight_calculation")
|
||||
|
||||
addr = wallet.getnewaddress()
|
||||
txid = self.nodes[0].sendtoaddress(addr, 5)
|
||||
addr = wallet.getnewaddress(address_type="bech32")
|
||||
ext_addr = self.nodes[0].getnewaddress(address_type="bech32")
|
||||
txid = self.nodes[0].send([{addr: 5}, {ext_addr: 5}])["txid"]
|
||||
vout = find_vout_for_address(self.nodes[0], txid, addr)
|
||||
ext_vout = find_vout_for_address(self.nodes[0], txid, ext_addr)
|
||||
|
||||
self.nodes[0].sendtoaddress(wallet.getnewaddress(), 5)
|
||||
self.nodes[0].sendtoaddress(wallet.getnewaddress(address_type="bech32"), 5)
|
||||
self.generate(self.nodes[0], 1)
|
||||
|
||||
rawtx = wallet.createrawtransaction([{'txid': txid, 'vout': vout}], [{self.nodes[0].getnewaddress(): 9.999}])
|
||||
fundedtx = wallet.fundrawtransaction(rawtx, {'fee_rate': 10})
|
||||
rawtx = wallet.createrawtransaction([{'txid': txid, 'vout': vout}], [{self.nodes[0].getnewaddress(address_type="bech32"): 8}])
|
||||
fundedtx = wallet.fundrawtransaction(rawtx, {'fee_rate': 10, "change_type": "bech32"})
|
||||
# with 71-byte signatures we should expect following tx size
|
||||
tx_size = 10 + 41*2 + 31*2 + (2 + 107*2)/4
|
||||
# tx overhead (10) + 2 inputs (41 each) + 2 p2wpkh (31 each) + (segwit marker and flag (2) + 2 p2wpkh 71 byte sig witnesses (107 each)) / witness scaling factor (4)
|
||||
tx_size = ceil(10 + 41*2 + 31*2 + (2 + 107*2)/4)
|
||||
assert_equal(fundedtx['fee'] * COIN, tx_size * 10)
|
||||
|
||||
# Using the other output should have 72 byte sigs
|
||||
rawtx = wallet.createrawtransaction([{'txid': txid, 'vout': ext_vout}], [{self.nodes[0].getnewaddress(): 13}])
|
||||
ext_desc = self.nodes[0].getaddressinfo(ext_addr)["desc"]
|
||||
fundedtx = wallet.fundrawtransaction(rawtx, {'fee_rate': 10, "change_type": "bech32", "solving_data": {"descriptors": [ext_desc]}})
|
||||
# tx overhead (10) + 3 inputs (41 each) + 2 p2wpkh(31 each) + (segwit marker and flag (2) + 2 p2wpkh 71 bytes sig witnesses (107 each) + p2wpkh 72 byte sig witness (108)) / witness scaling factor (4)
|
||||
tx_size = ceil(10 + 41*3 + 31*2 + (2 + 107*2 + 108)/4)
|
||||
assert_equal(fundedtx['fee'] * COIN, tx_size * 10)
|
||||
|
||||
self.nodes[2].unloadwallet("test_weight_calculation")
|
||||
|
|
Loading…
Add table
Reference in a new issue