Skip to content

Commit 9b3dce2

Browse files
committed
test: remove bare CTransaction .rehash()/.calc_sha256() calls
Since the previous commit, CTransaction object calls to the methods `.rehash()` and `.calc_sha256()` are effectively no-ops if the returned value is not used, so we can just remove them.
1 parent a2724e3 commit 9b3dce2

26 files changed

+0
-158
lines changed

contrib/signet/miner

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ def signet_txs(block, challenge):
4040
txs[0].vout[-1].scriptPubKey += CScriptOp.encode_op_pushdata(SIGNET_HEADER)
4141
hashes = []
4242
for tx in txs:
43-
tx.rehash()
4443
hashes.append(ser_uint256(tx.sha256))
4544
mroot = block.get_merkle_root(hashes)
4645

@@ -55,7 +54,6 @@ def signet_txs(block, challenge):
5554
to_spend.nLockTime = 0
5655
to_spend.vin = [CTxIn(COutPoint(0, 0xFFFFFFFF), b"\x00" + CScriptOp.encode_op_pushdata(sd), 0)]
5756
to_spend.vout = [CTxOut(0, challenge)]
58-
to_spend.rehash()
5957

6058
spend = CTransaction()
6159
spend.version = 0
@@ -88,7 +86,6 @@ def finish_block(block, signet_solution, grind_cmd):
8886
pass # Don't need to add a signet commitment if there's no signet signature needed
8987
else:
9088
block.vtx[0].vout[-1].scriptPubKey += CScriptOp.encode_op_pushdata(SIGNET_HEADER + signet_solution)
91-
block.vtx[0].rehash()
9289
block.hashMerkleRoot = block.calc_merkle_root()
9390
if grind_cmd is None:
9491
block.solve()
@@ -111,7 +108,6 @@ def new_block(tmpl, reward_spk, *, blocktime=None, poolid=None):
111108
cbtx.vin = [CTxIn(COutPoint(0, 0xffffffff), scriptSig, MAX_SEQUENCE_NONFINAL)]
112109
cbtx.vout = [CTxOut(tmpl["coinbasevalue"], reward_spk)]
113110
cbtx.vin[0].nSequence = 2**32-2
114-
cbtx.rehash()
115111

116112
block = CBlock()
117113
block.nVersion = tmpl["version"]
@@ -130,7 +126,6 @@ def new_block(tmpl, reward_spk, *, blocktime=None, poolid=None):
130126
block.vtx[0].wit.vtxinwit = [cbwit]
131127
block.vtx[0].vout.append(CTxOut(0, bytes(get_witness_script(witroot, witnonce))))
132128

133-
block.vtx[0].rehash()
134129
block.hashMerkleRoot = block.calc_merkle_root()
135130

136131
return block

test/functional/data/invalid_txs.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ class OutputMissing(BadTxTemplate):
9898
def get_tx(self):
9999
tx = CTransaction()
100100
tx.vin.append(self.valid_txin)
101-
tx.calc_sha256()
102101
return tx
103102

104103

@@ -113,7 +112,6 @@ class InputMissing(BadTxTemplate):
113112
# rather than the input count check.
114113
def get_tx(self):
115114
tx = CTransaction()
116-
tx.calc_sha256()
117115
return tx
118116

119117

@@ -130,7 +128,6 @@ def get_tx(self):
130128
tx.vout.append(CTxOut(0, CScript([OP_RETURN] + ([OP_0] * (MIN_PADDING - 2)))))
131129
assert len(tx.serialize_without_witness()) == 64
132130
assert MIN_STANDARD_TX_NONWITNESS_SIZE - 1 == 64
133-
tx.calc_sha256()
134131
return tx
135132

136133

@@ -149,7 +146,6 @@ def get_tx(self):
149146
tx = CTransaction()
150147
tx.vin.append(CTxIn(COutPoint(self.spend_tx.sha256, bad_idx), b"", SEQUENCE_FINAL))
151148
tx.vout.append(CTxOut(0, basic_p2sh))
152-
tx.calc_sha256()
153149
return tx
154150

155151

@@ -162,7 +158,6 @@ def get_tx(self):
162158
tx.vin.append(self.valid_txin)
163159
tx.vin.append(self.valid_txin)
164160
tx.vout.append(CTxOut(1, basic_p2sh))
165-
tx.calc_sha256()
166161
return tx
167162

168163

@@ -175,7 +170,6 @@ def get_tx(self):
175170
tx.vin.append(self.valid_txin)
176171
tx.vin.append(CTxIn(COutPoint(hash=0, n=0xffffffff)))
177172
tx.vout.append(CTxOut(1, basic_p2sh))
178-
tx.calc_sha256()
179173
return tx
180174

181175

@@ -190,7 +184,6 @@ def get_tx(self):
190184
tx.vin.append(CTxIn(COutPoint(self.spend_tx.sha256 + 1, 0), b"", SEQUENCE_FINAL))
191185
tx.vin.append(self.valid_txin)
192186
tx.vout.append(CTxOut(1, basic_p2sh))
193-
tx.calc_sha256()
194187
return tx
195188

196189

@@ -226,7 +219,6 @@ class CreateSumTooLarge(BadTxTemplate):
226219
def get_tx(self):
227220
tx = create_tx_with_script(self.spend_tx, 0, amount=MAX_MONEY)
228221
tx.vout = [tx.vout[0]] * 2
229-
tx.calc_sha256()
230222
return tx
231223

232224

@@ -274,7 +266,6 @@ def get_tx(self):
274266
vin.scriptSig = CScript([opcode])
275267
tx.vin.append(vin)
276268
tx.vout.append(CTxOut(1, basic_p2sh))
277-
tx.calc_sha256()
278269
return tx
279270

280271
return type('DisabledOpcode_' + str(opcode), (BadTxTemplate,), {

test/functional/feature_assumevalid.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ def run_test(self):
119119
tx = CTransaction()
120120
tx.vin.append(CTxIn(COutPoint(self.block1.vtx[0].sha256, 0), scriptSig=b""))
121121
tx.vout.append(CTxOut(49 * 100000000, CScript([OP_TRUE])))
122-
tx.calc_sha256()
123122

124123
block102 = create_block(self.tip, create_coinbase(height), self.block_time, txlist=[tx])
125124
self.block_time += 1

test/functional/feature_bip68_sequence.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ def test_disable_flag(self):
110110
tx2.wit.vtxinwit = [CTxInWitness()]
111111
tx2.wit.vtxinwit[0].scriptWitness.stack = [CScript([OP_TRUE])]
112112
tx2.vout = [CTxOut(int(value - self.relayfee * COIN), SCRIPT_W0_SH_OP_TRUE)]
113-
tx2.rehash()
114113

115114
assert_raises_rpc_error(-26, NOT_FINAL_ERROR, self.wallet.sendrawtransaction, from_node=self.nodes[0], tx_hex=tx2.serialize().hex())
116115

@@ -220,7 +219,6 @@ def test_sequence_lock_unconfirmed_inputs(self):
220219
# Create a mempool tx.
221220
self.wallet.rescan_utxos()
222221
tx1 = self.wallet.send_self_transfer(from_node=self.nodes[0])["tx"]
223-
tx1.rehash()
224222

225223
# Anyone-can-spend mempool tx.
226224
# Sequence lock of 0 should pass.
@@ -230,7 +228,6 @@ def test_sequence_lock_unconfirmed_inputs(self):
230228
tx2.vout = [CTxOut(int(tx1.vout[0].nValue - self.relayfee * COIN), SCRIPT_W0_SH_OP_TRUE)]
231229
self.wallet.sign_tx(tx=tx2)
232230
tx2_raw = tx2.serialize().hex()
233-
tx2.rehash()
234231

235232
self.wallet.sendrawtransaction(from_node=self.nodes[0], tx_hex=tx2_raw)
236233

@@ -248,7 +245,6 @@ def test_nonzero_locks(orig_tx, node, relayfee, use_height_lock):
248245
tx.wit.vtxinwit = [CTxInWitness()]
249246
tx.wit.vtxinwit[0].scriptWitness.stack = [CScript([OP_TRUE])]
250247
tx.vout = [CTxOut(int(orig_tx.vout[0].nValue - relayfee * COIN), SCRIPT_W0_SH_OP_TRUE)]
251-
tx.rehash()
252248

253249
if (orig_tx.hash in node.getrawmempool()):
254250
# sendrawtransaction should fail if the tx is in the mempool
@@ -353,7 +349,6 @@ def test_bip68_not_consensus(self):
353349
assert not softfork_active(self.nodes[0], 'csv')
354350

355351
tx1 = self.wallet.send_self_transfer(from_node=self.nodes[0])["tx"]
356-
tx1.rehash()
357352

358353
# Make an anyone-can-spend transaction
359354
tx2 = CTransaction()
@@ -365,7 +360,6 @@ def test_bip68_not_consensus(self):
365360
self.wallet.sign_tx(tx=tx2)
366361
tx2_raw = tx2.serialize().hex()
367362
tx2 = tx_from_hex(tx2_raw)
368-
tx2.rehash()
369363

370364
self.wallet.sendrawtransaction(from_node=self.nodes[0], tx_hex=tx2_raw)
371365

@@ -378,7 +372,6 @@ def test_bip68_not_consensus(self):
378372
tx3.wit.vtxinwit = [CTxInWitness()]
379373
tx3.wit.vtxinwit[0].scriptWitness.stack = [CScript([OP_TRUE])]
380374
tx3.vout = [CTxOut(int(tx2.vout[0].nValue - self.relayfee * COIN), SCRIPT_W0_SH_OP_TRUE)]
381-
tx3.rehash()
382375

383376
assert_raises_rpc_error(-26, NOT_FINAL_ERROR, self.wallet.sendrawtransaction, from_node=self.nodes[0], tx_hex=tx3.serialize().hex())
384377

test/functional/feature_block.py

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ def run_test(self):
109109
# Create a new block
110110
b_dup_cb = self.next_block('dup_cb')
111111
b_dup_cb.vtx[0].vin[0].scriptSig = DUPLICATE_COINBASE_SCRIPT_SIG
112-
b_dup_cb.vtx[0].rehash()
113112
duplicate_tx = b_dup_cb.vtx[0]
114113
b_dup_cb = self.update_block('dup_cb', [])
115114
self.send_blocks([b_dup_cb])
@@ -194,7 +193,6 @@ def run_test(self):
194193
badtx = template.get_tx()
195194
if TxTemplate != invalid_txs.InputMissing:
196195
self.sign_tx(badtx, attempt_spend_tx)
197-
badtx.rehash()
198196
badblock = self.update_block(blockname, [badtx])
199197
self.send_blocks(
200198
[badblock], success=False,
@@ -385,7 +383,6 @@ def run_test(self):
385383
self.move_tip(15)
386384
b26 = self.next_block(26, spend=out[6])
387385
b26.vtx[0].vin[0].scriptSig = b'\x00'
388-
b26.vtx[0].rehash()
389386
# update_block causes the merkle root to get updated, even with no new
390387
# transactions, and updates the required state.
391388
b26 = self.update_block(26, [])
@@ -399,7 +396,6 @@ def run_test(self):
399396
self.move_tip(15)
400397
b28 = self.next_block(28, spend=out[6])
401398
b28.vtx[0].vin[0].scriptSig = b'\x00' * 101
402-
b28.vtx[0].rehash()
403399
b28 = self.update_block(28, [])
404400
self.send_blocks([b28], success=False, reject_reason='bad-cb-length', reconnect=True)
405401

@@ -413,7 +409,6 @@ def run_test(self):
413409
b30.vtx[0].vin[0].scriptSig = bytes(b30.vtx[0].vin[0].scriptSig) # Convert CScript to raw bytes
414410
b30.vtx[0].vin[0].scriptSig += b'\x00' * (100 - len(b30.vtx[0].vin[0].scriptSig)) # Fill with 0s
415411
assert_equal(len(b30.vtx[0].vin[0].scriptSig), 100)
416-
b30.vtx[0].rehash()
417412
b30 = self.update_block(30, [])
418413
self.send_blocks([b30], True)
419414
self.save_spendable_output()
@@ -516,7 +511,6 @@ def run_test(self):
516511
tx = self.create_tx(spend, 0, 1, p2sh_script)
517512
tx.vout.append(CTxOut(spend.vout[0].nValue - 1, CScript([OP_TRUE])))
518513
self.sign_tx(tx, spend)
519-
tx.rehash()
520514
b39 = self.update_block(39, [tx])
521515
b39_outputs += 1
522516

@@ -527,7 +521,6 @@ def run_test(self):
527521
while total_weight < MAX_BLOCK_WEIGHT:
528522
tx_new = self.create_tx(tx_last, 1, 1, p2sh_script)
529523
tx_new.vout.append(CTxOut(tx_last.vout[1].nValue - 1, CScript([OP_TRUE])))
530-
tx_new.rehash()
531524
total_weight += tx_new.get_weight()
532525
if total_weight >= MAX_BLOCK_WEIGHT:
533526
break
@@ -579,7 +572,6 @@ def run_test(self):
579572
tx = CTransaction()
580573
tx.vin.append(CTxIn(lastOutpoint, b''))
581574
tx.vout.append(CTxOut(1, CScript([OP_CHECKSIG] * b40_sigops_to_fill)))
582-
tx.rehash()
583575
new_txs.append(tx)
584576
self.update_block(40, new_txs)
585577
self.send_blocks([b40], success=False, reject_reason='bad-blk-sigops', reconnect=True)
@@ -593,7 +585,6 @@ def run_test(self):
593585
tx = CTransaction()
594586
tx.vin.append(CTxIn(lastOutpoint, b''))
595587
tx.vout.append(CTxOut(1, CScript([OP_CHECKSIG] * b41_sigops_to_fill)))
596-
tx.rehash()
597588
self.update_block(41, [tx])
598589
self.send_blocks([b41], True)
599590

@@ -833,7 +824,6 @@ def run_test(self):
833824
assert len(out[17].vout) < 42
834825
tx.vin.append(CTxIn(COutPoint(out[17].sha256, 42), CScript([OP_TRUE]), SEQUENCE_FINAL))
835826
tx.vout.append(CTxOut(0, b""))
836-
tx.calc_sha256()
837827
b58 = self.update_block(58, [tx])
838828
self.send_blocks([b58], success=False, reject_reason='bad-txns-inputs-missingorspent', reconnect=True)
839829

@@ -865,7 +855,6 @@ def run_test(self):
865855
b61 = self.next_block(61)
866856
b61.vtx[0].nLockTime = 0
867857
b61.vtx[0].vin[0].scriptSig = DUPLICATE_COINBASE_SCRIPT_SIG
868-
b61.vtx[0].rehash()
869858
b61 = self.update_block(61, [])
870859
assert_equal(duplicate_tx.serialize(), b61.vtx[0].serialize())
871860
# BIP30 is always checked on regtest, regardless of the BIP34 activation height
@@ -882,13 +871,11 @@ def run_test(self):
882871
tx.vin.append(CTxIn(COutPoint(duplicate_tx.sha256, 0)))
883872
tx.vout.append(CTxOut(0, CScript([OP_TRUE])))
884873
self.sign_tx(tx, duplicate_tx)
885-
tx.rehash()
886874
b_spend_dup_cb = self.update_block('spend_dup_cb', [tx])
887875

888876
b_dup_2 = self.next_block('dup_2')
889877
b_dup_2.vtx[0].nLockTime = 0
890878
b_dup_2.vtx[0].vin[0].scriptSig = DUPLICATE_COINBASE_SCRIPT_SIG
891-
b_dup_2.vtx[0].rehash()
892879
b_dup_2 = self.update_block('dup_2', [])
893880
assert_equal(duplicate_tx.serialize(), b_dup_2.vtx[0].serialize())
894881
assert_equal(self.nodes[0].gettxout(txid=duplicate_tx.hash, n=0)['confirmations'], 119)
@@ -909,7 +896,6 @@ def run_test(self):
909896
tx.vin.append(CTxIn(COutPoint(out[18].sha256, 0))) # don't set nSequence
910897
tx.vout.append(CTxOut(0, CScript([OP_TRUE])))
911898
assert_greater_than(SEQUENCE_FINAL, tx.vin[0].nSequence)
912-
tx.calc_sha256()
913899
b62 = self.update_block(62, [tx])
914900
self.send_blocks([b62], success=False, reject_reason='bad-txns-nonfinal', reconnect=True)
915901

@@ -923,7 +909,6 @@ def run_test(self):
923909
b63 = self.next_block(63)
924910
b63.vtx[0].nLockTime = 0xffffffff
925911
b63.vtx[0].vin[0].nSequence = 0xDEADBEEF
926-
b63.vtx[0].rehash()
927912
b63 = self.update_block(63, [])
928913
self.send_blocks([b63], success=False, reject_reason='bad-txns-nonfinal', reconnect=True)
929914

@@ -1241,7 +1226,6 @@ def run_test(self):
12411226

12421227
tx2 = self.create_and_sign_transaction(tx1, 0, CScript([OP_TRUE]))
12431228
tx2.vin[0].scriptSig = CScript([OP_FALSE])
1244-
tx2.rehash()
12451229

12461230
b83 = self.update_block(83, [tx1, tx2])
12471231
self.send_blocks([b83], True)
@@ -1259,9 +1243,7 @@ def run_test(self):
12591243
tx1.vout.append(CTxOut(0, CScript([OP_TRUE])))
12601244
tx1.vout.append(CTxOut(0, CScript([OP_TRUE])))
12611245
tx1.vout.append(CTxOut(0, CScript([OP_TRUE])))
1262-
tx1.calc_sha256()
12631246
self.sign_tx(tx1, out[29])
1264-
tx1.rehash()
12651247
tx2 = self.create_tx(tx1, 1, 0, CScript([OP_RETURN]))
12661248
tx2.vout.append(CTxOut(0, CScript([OP_RETURN])))
12671249
tx3 = self.create_tx(tx1, 2, 0, CScript([OP_RETURN]))
@@ -1347,7 +1329,6 @@ def run_test(self):
13471329
self.move_tip(chain1_tip + 2)
13481330
b_cb34 = self.next_block('b_cb34')
13491331
b_cb34.vtx[0].vin[0].scriptSig = b_cb34.vtx[0].vin[0].scriptSig[:-1]
1350-
b_cb34.vtx[0].rehash()
13511332
b_cb34.hashMerkleRoot = b_cb34.calc_merkle_root()
13521333
b_cb34.solve()
13531334
self.send_blocks([b_cb34], success=False, reject_reason='bad-cb-height', reconnect=True)
@@ -1356,7 +1337,6 @@ def run_test(self):
13561337
################
13571338

13581339
def add_transactions_to_block(self, block, tx_list):
1359-
[tx.rehash() for tx in tx_list]
13601340
block.vtx.extend(tx_list)
13611341

13621342
# this is a little handier to use than the version in blocktools.py
@@ -1379,7 +1359,6 @@ def create_and_sign_transaction(self, spend_tx, value, output_script=None):
13791359
output_script = CScript([OP_TRUE])
13801360
tx = self.create_tx(spend_tx, 0, value, output_script=output_script)
13811361
self.sign_tx(tx, spend_tx)
1382-
tx.rehash()
13831362
return tx
13841363

13851364
def next_block(self, number, spend=None, additional_coinbase_value=0, *, script=None, version=4, additional_output_scripts=None):
@@ -1399,15 +1378,12 @@ def next_block(self, number, spend=None, additional_coinbase_value=0, *, script=
13991378
coinbase.vout[0].nValue += additional_coinbase_value
14001379
for additional_script in additional_output_scripts:
14011380
coinbase.vout.append(CTxOut(0, additional_script))
1402-
coinbase.rehash()
14031381
if spend is None:
14041382
block = create_block(base_block_hash, coinbase, block_time, version=version)
14051383
else:
14061384
coinbase.vout[0].nValue += spend.vout[0].nValue - 1 # all but one satoshi to fees
1407-
coinbase.rehash()
14081385
tx = self.create_tx(spend, 0, 1, output_script=script) # spend 1 satoshi
14091386
self.sign_tx(tx, spend)
1410-
tx.rehash()
14111387
block = create_block(base_block_hash, coinbase, block_time, version=version, txlist=[tx])
14121388
# Block is created. Find a valid nonce.
14131389
block.solve()

test/functional/feature_cltv.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ def cltv_modify_tx(tx, prepend_scriptsig, nsequence=None, nlocktime=None):
4343
tx.nLockTime = nlocktime
4444

4545
tx.vin[0].scriptSig = CScript(prepend_scriptsig + list(CScript(tx.vin[0].scriptSig)))
46-
tx.rehash()
4746

4847

4948
def cltv_invalidate(tx, failure_reason):

test/functional/feature_coinstatsindex.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,6 @@ def _test_coin_stats_index(self):
191191
# has two outputs
192192
cb = create_coinbase(109, nValue=35)
193193
cb.vout.append(CTxOut(5 * COIN, CScript([OP_FALSE])))
194-
cb.rehash()
195194

196195
# Generate a block that includes previous coinbase
197196
tip = self.nodes[0].getbestblockhash()

test/functional/feature_csv_activation.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,15 +112,13 @@ def create_bip112special(self, input, txversion):
112112
tx.version = txversion
113113
self.miniwallet.sign_tx(tx)
114114
tx.vin[0].scriptSig = CScript([-1, OP_CHECKSEQUENCEVERIFY, OP_DROP] + list(CScript(tx.vin[0].scriptSig)))
115-
tx.rehash()
116115
return tx
117116

118117
def create_bip112emptystack(self, input, txversion):
119118
tx = self.create_self_transfer_from_utxo(input)
120119
tx.version = txversion
121120
self.miniwallet.sign_tx(tx)
122121
tx.vin[0].scriptSig = CScript([OP_CHECKSEQUENCEVERIFY] + list(CScript(tx.vin[0].scriptSig)))
123-
tx.rehash()
124122
return tx
125123

126124
def send_generic_input_tx(self, coinbases):
@@ -159,7 +157,6 @@ def create_bip112txs(self, bip112inputs, varyOP_CSV, txversion, locktime_delta=0
159157
tx.vin[0].scriptSig = CScript([locktime, OP_CHECKSEQUENCEVERIFY, OP_DROP] + list(CScript(tx.vin[0].scriptSig)))
160158
else:
161159
tx.vin[0].scriptSig = CScript([BASE_RELATIVE_LOCKTIME, OP_CHECKSEQUENCEVERIFY, OP_DROP] + list(CScript(tx.vin[0].scriptSig)))
162-
tx.rehash()
163160
txs.append({'tx': tx, 'sdf': sdf, 'stf': stf})
164161
return txs
165162

0 commit comments

Comments
 (0)