@@ -114,6 +114,7 @@ def script_verification_error_test(self):
114
114
# 5) Script verification errors have certain properties
115
115
assert 'txid' in rawTxSigned ['errors' ][0 ]
116
116
assert 'vout' in rawTxSigned ['errors' ][0 ]
117
+ assert 'witness' in rawTxSigned ['errors' ][0 ]
117
118
assert 'scriptSig' in rawTxSigned ['errors' ][0 ]
118
119
assert 'sequence' in rawTxSigned ['errors' ][0 ]
119
120
assert 'error' in rawTxSigned ['errors' ][0 ]
@@ -123,6 +124,32 @@ def script_verification_error_test(self):
123
124
assert_equal (rawTxSigned ['errors' ][0 ]['vout' ], inputs [1 ]['vout' ])
124
125
assert_equal (rawTxSigned ['errors' ][1 ]['txid' ], inputs [2 ]['txid' ])
125
126
assert_equal (rawTxSigned ['errors' ][1 ]['vout' ], inputs [2 ]['vout' ])
127
+ assert not rawTxSigned ['errors' ][0 ]['witness' ]
128
+
129
+ # Now test signing failure for transaction with input witnesses
130
+ p2wpkh_raw_tx = "01000000000102fff7f7881a8099afa6940d42d1e7f6362bec38171ea3edf433541db4e4ad969f00000000494830450221008b9d1dc26ba6a9cb62127b02742fa9d754cd3bebf337f7a55d114c8e5cdd30be022040529b194ba3f9281a99f2b1c0a19c0489bc22ede944ccf4ecbab4cc618ef3ed01eeffffffef51e1b804cc89d182d279655c3aa89e815b1b309fe287d9b2b55d57b90ec68a0100000000ffffffff02202cb206000000001976a9148280b37df378db99f66f85c95a783a76ac7a6d5988ac9093510d000000001976a9143bde42dbee7e4dbe6a21b2d50ce2f0167faa815988ac000247304402203609e17b84f6a7d30c80bfa610b5b4542f32a8a0d5447a12fb1366d7f01cc44a0220573a954c4518331561406f90300e8f3358f51928d43c212a8caed02de67eebee0121025476c2e83188368da1ff3e292e7acafcdb3566bb0ad253f62fc70f07aeee635711000000"
131
+
132
+ rawTxSigned = self .nodes [0 ].signrawtransaction (p2wpkh_raw_tx )
133
+
134
+ # 7) The transaction has no complete set of signatures
135
+ assert 'complete' in rawTxSigned
136
+ assert_equal (rawTxSigned ['complete' ], False )
137
+
138
+ # 8) Two script verification errors occurred
139
+ assert 'errors' in rawTxSigned
140
+ assert_equal (len (rawTxSigned ['errors' ]), 2 )
141
+
142
+ # 9) Script verification errors have certain properties
143
+ assert 'txid' in rawTxSigned ['errors' ][0 ]
144
+ assert 'vout' in rawTxSigned ['errors' ][0 ]
145
+ assert 'witness' in rawTxSigned ['errors' ][0 ]
146
+ assert 'scriptSig' in rawTxSigned ['errors' ][0 ]
147
+ assert 'sequence' in rawTxSigned ['errors' ][0 ]
148
+ assert 'error' in rawTxSigned ['errors' ][0 ]
149
+
150
+ # Non-empty witness checked here
151
+ assert_equal (rawTxSigned ['errors' ][1 ]['witness' ], ["304402203609e17b84f6a7d30c80bfa610b5b4542f32a8a0d5447a12fb1366d7f01cc44a0220573a954c4518331561406f90300e8f3358f51928d43c212a8caed02de67eebee01" , "025476c2e83188368da1ff3e292e7acafcdb3566bb0ad253f62fc70f07aeee6357" ])
152
+ assert not rawTxSigned ['errors' ][0 ]['witness' ]
126
153
127
154
def run_test (self ):
128
155
self .successful_signing_test ()
0 commit comments