Skip to content

Commit f154699

Browse files
achow101Claude Code
authored andcommitted
Merge bitcoin#27325: test: various converttopsbt check cleanups in rpc_psbt.py
afc2dd5 test: various `converttopsbt` check cleanups in rpc_psbt.py (Sebastian Falbesoner) Pull request description: In the functional test rpc_psbt.py, some comments around the `converttopsbt` RPC checks are wrong or outdated and can be removed: > _Error could be either "TX decode failed" (segwit inputs causes > parsing to fail) or "Inputs must not have scriptSigs and > scriptWitnesses"_ Decoding a valid TX with at least one input always succeeds with the [heuristic](https://github.com/bitcoin/bitcoin/blob/e352f5ab6b60ec1cc549997275e945238508cdee/src/core_read.cpp#L126), i.e. this comment is not right and we can assert for the error string "Inputs must not have scriptSigs and scriptWitnesses" on the calls below. > _We must set iswitness=True because the serialized transaction has > inputs and is therefore a witness transaction_ This is also unneeded (and confusing, w.r.t. "is therefore a witness transaction"?), for a TX with one input there is no need to set the `iswitness` parameter. For sake of completeness, we still keep one variant where iswitness is explicitly set to true. Lastly, there is a superflous `converttopsbt` call on the raw tx which is the same as just [about ~10 lines above](https://github.com/bitcoin/bitcoin/blob/master/test/functional/rpc_psbt.py#L393-L397), so it can be removed. ACKs for top commit: ismaelsadeeq: tested ACK afc2dd5 achow101: ACK afc2dd5 Tree-SHA512: 467efefdb3f61efdb79145044b90fc8dc2f0c425f078117a99112b0074e7d4a32c34e464f665fbf8de70d06caaa5d4ad5908c1d75d2e7607eccb0837480afab3
1 parent c186614 commit f154699

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

test/functional/rpc_psbt.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -225,16 +225,14 @@ def run_test(self):
225225
new_psbt = self.nodes[0].converttopsbt(rawtx['hex'])
226226
self.nodes[0].decodepsbt(new_psbt)
227227

228-
# Make sure that a psbt with signatures cannot be converted
228+
# Make sure that a non-psbt with signatures cannot be converted
229229
signedtx = self.nodes[0].signrawtransactionwithwallet(rawtx['hex'])
230-
assert_raises_rpc_error(-22, "Inputs must not have scriptSigs", self.nodes[0].converttopsbt, hexstring=signedtx['hex'])
231-
assert_raises_rpc_error(-22, "Inputs must not have scriptSigs", self.nodes[0].converttopsbt, hexstring=signedtx['hex'], permitsigdata=False)
230+
assert_raises_rpc_error(-22, "Inputs must not have scriptSigs",
231+
self.nodes[0].converttopsbt, hexstring=signedtx['hex']) # permitsigdata=False by default
232+
assert_raises_rpc_error(-22, "Inputs must not have scriptSigs",
233+
self.nodes[0].converttopsbt, hexstring=signedtx['hex'], permitsigdata=False)
232234
# Unless we allow it to convert and strip signatures
233-
self.nodes[0].converttopsbt(signedtx['hex'], True)
234-
235-
# Explicitly allow converting non-empty txs
236-
new_psbt = self.nodes[0].converttopsbt(rawtx['hex'])
237-
self.nodes[0].decodepsbt(new_psbt)
235+
self.nodes[0].converttopsbt(hexstring=signedtx['hex'], permitsigdata=True)
238236

239237
# Create outputs to nodes 1 and 2
240238
node1_addr = self.nodes[1].getnewaddress()

0 commit comments

Comments
 (0)