diff options
| author | Sebastian Falbesoner <[email protected]> | 2020-07-26 13:07:45 +0200 |
|---|---|---|
| committer | Sebastian Falbesoner <[email protected]> | 2020-07-26 13:25:16 +0200 |
| commit | 82dee87933ed0714976ff4eb9657acfc13c6de84 (patch) | |
| tree | 57960ba3575bea25943a38b11bef8a7558065226 | |
| parent | Merge #19472: [net processing] Reduce cs_main scope in MaybeDiscourageAndDisc... (diff) | |
| download | discoin-82dee87933ed0714976ff4eb9657acfc13c6de84.tar.xz discoin-82dee87933ed0714976ff4eb9657acfc13c6de84.zip | |
test: test decodepsbt fee calculation (count input value only once per UTXO)
Checks that the RPC decodepsbt calculates the fee correctly, in particular for
PSBTs with segwit inputs that have both a witness- and a non-witness-UTXO type
set. Before commit 75122780e2c46505d977e24c5612dfa9442ab754 ("Increment input
value sum only once per UTXO in decodepsbt") the values for those inputs were
double counted.
| -rwxr-xr-x | test/functional/rpc_psbt.py | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/test/functional/rpc_psbt.py b/test/functional/rpc_psbt.py index e5e62fd64..4d985dd1b 100755 --- a/test/functional/rpc_psbt.py +++ b/test/functional/rpc_psbt.py @@ -155,12 +155,14 @@ class PSBTTest(BitcoinTestFramework): p2pkh_pos = out['n'] # spend single key from node 1 - rawtx = self.nodes[1].walletcreatefundedpsbt([{"txid":txid,"vout":p2wpkh_pos},{"txid":txid,"vout":p2sh_p2wpkh_pos},{"txid":txid,"vout":p2pkh_pos}], {self.nodes[1].getnewaddress():29.99})['psbt'] - walletprocesspsbt_out = self.nodes[1].walletprocesspsbt(rawtx) + created_psbt = self.nodes[1].walletcreatefundedpsbt([{"txid":txid,"vout":p2wpkh_pos},{"txid":txid,"vout":p2sh_p2wpkh_pos},{"txid":txid,"vout":p2pkh_pos}], {self.nodes[1].getnewaddress():29.99}) + walletprocesspsbt_out = self.nodes[1].walletprocesspsbt(created_psbt['psbt']) # Make sure it has both types of UTXOs decoded = self.nodes[1].decodepsbt(walletprocesspsbt_out['psbt']) assert 'non_witness_utxo' in decoded['inputs'][0] assert 'witness_utxo' in decoded['inputs'][0] + # Check decodepsbt fee calculation (input values shall only be counted once per UTXO) + assert_equal(decoded['fee'], created_psbt['fee']) assert_equal(walletprocesspsbt_out['complete'], True) self.nodes[1].sendrawtransaction(self.nodes[1].finalizepsbt(walletprocesspsbt_out['psbt'])['hex']) |