@@ -91,6 +91,7 @@ def script_verification_error_test(self):
9191 # 5) Script verification errors have certain properties
9292 assert 'txid' in rawTxSigned ['errors' ][0 ]
9393 assert 'vout' in rawTxSigned ['errors' ][0 ]
94+ assert 'txinwitness' in rawTxSigned ['errors' ][0 ]
9495 assert 'scriptSig' in rawTxSigned ['errors' ][0 ]
9596 assert 'sequence' in rawTxSigned ['errors' ][0 ]
9697 assert 'error' in rawTxSigned ['errors' ][0 ]
@@ -100,6 +101,32 @@ def script_verification_error_test(self):
100101 assert_equal (rawTxSigned ['errors' ][0 ]['vout' ], inputs [1 ]['vout' ])
101102 assert_equal (rawTxSigned ['errors' ][1 ]['txid' ], inputs [2 ]['txid' ])
102103 assert_equal (rawTxSigned ['errors' ][1 ]['vout' ], inputs [2 ]['vout' ])
104+ assert not rawTxSigned ['errors' ][0 ]['txinwitness' ]
105+
106+ # Now test signing failure for transaction with input witnesses
107+ p2wpkh_raw_tx = "01000000000102fff7f7881a8099afa6940d42d1e7f6362bec38171ea3edf433541db4e4ad969f00000000494830450221008b9d1dc26ba6a9cb62127b02742fa9d754cd3bebf337f7a55d114c8e5cdd30be022040529b194ba3f9281a99f2b1c0a19c0489bc22ede944ccf4ecbab4cc618ef3ed01eeffffffef51e1b804cc89d182d279655c3aa89e815b1b309fe287d9b2b55d57b90ec68a0100000000ffffffff02202cb206000000001976a9148280b37df378db99f66f85c95a783a76ac7a6d5988ac9093510d000000001976a9143bde42dbee7e4dbe6a21b2d50ce2f0167faa815988ac000247304402203609e17b84f6a7d30c80bfa610b5b4542f32a8a0d5447a12fb1366d7f01cc44a0220573a954c4518331561406f90300e8f3358f51928d43c212a8caed02de67eebee0121025476c2e83188368da1ff3e292e7acafcdb3566bb0ad253f62fc70f07aeee635711000000"
108+
109+ rawTxSigned = self .nodes [0 ].signrawtransaction (p2wpkh_raw_tx )
110+
111+ # 7) The transaction has no complete set of signatures
112+ assert 'complete' in rawTxSigned
113+ assert_equal (rawTxSigned ['complete' ], False )
114+
115+ # 8) Two script verification errors occurred
116+ assert 'errors' in rawTxSigned
117+ assert_equal (len (rawTxSigned ['errors' ]), 2 )
118+
119+ # 9) Script verification errors have certain properties
120+ assert 'txid' in rawTxSigned ['errors' ][0 ]
121+ assert 'vout' in rawTxSigned ['errors' ][0 ]
122+ assert 'txinwitness' in rawTxSigned ['errors' ][0 ]
123+ assert 'scriptSig' in rawTxSigned ['errors' ][0 ]
124+ assert 'sequence' in rawTxSigned ['errors' ][0 ]
125+ assert 'error' in rawTxSigned ['errors' ][0 ]
126+
127+ # Non-empty witness checked here
128+ assert_equal (rawTxSigned ['errors' ][1 ]['txinwitness' ], ["304402203609e17b84f6a7d30c80bfa610b5b4542f32a8a0d5447a12fb1366d7f01cc44a0220573a954c4518331561406f90300e8f3358f51928d43c212a8caed02de67eebee01" , "025476c2e83188368da1ff3e292e7acafcdb3566bb0ad253f62fc70f07aeee6357" ])
129+ assert not rawTxSigned ['errors' ][0 ]['txinwitness' ]
103130
104131 def run_test (self ):
105132 self .successful_signing_test ()
0 commit comments