diff --git a/contrib/signet/miner b/contrib/signet/miner index b9a01080f1..922cf23bc9 100755 --- a/contrib/signet/miner +++ b/contrib/signet/miner @@ -40,7 +40,6 @@ def signet_txs(block, challenge): txs[0].vout[-1].scriptPubKey += CScriptOp.encode_op_pushdata(SIGNET_HEADER) hashes = [] for tx in txs: - tx.rehash() hashes.append(ser_uint256(tx.sha256)) mroot = block.get_merkle_root(hashes) @@ -55,7 +54,6 @@ def signet_txs(block, challenge): to_spend.nLockTime = 0 to_spend.vin = [CTxIn(COutPoint(0, 0xFFFFFFFF), b"\x00" + CScriptOp.encode_op_pushdata(sd), 0)] to_spend.vout = [CTxOut(0, challenge)] - to_spend.rehash() spend = CTransaction() spend.version = 0 @@ -88,7 +86,6 @@ def finish_block(block, signet_solution, grind_cmd): pass # Don't need to add a signet commitment if there's no signet signature needed else: block.vtx[0].vout[-1].scriptPubKey += CScriptOp.encode_op_pushdata(SIGNET_HEADER + signet_solution) - block.vtx[0].rehash() block.hashMerkleRoot = block.calc_merkle_root() if grind_cmd is None: block.solve() @@ -111,7 +108,6 @@ def new_block(tmpl, reward_spk, *, blocktime=None, poolid=None): cbtx.vin = [CTxIn(COutPoint(0, 0xffffffff), scriptSig, MAX_SEQUENCE_NONFINAL)] cbtx.vout = [CTxOut(tmpl["coinbasevalue"], reward_spk)] cbtx.vin[0].nSequence = 2**32-2 - cbtx.rehash() block = CBlock() block.nVersion = tmpl["version"] @@ -130,7 +126,6 @@ def new_block(tmpl, reward_spk, *, blocktime=None, poolid=None): block.vtx[0].wit.vtxinwit = [cbwit] block.vtx[0].vout.append(CTxOut(0, bytes(get_witness_script(witroot, witnonce)))) - block.vtx[0].rehash() block.hashMerkleRoot = block.calc_merkle_root() return block diff --git a/test/functional/data/invalid_txs.py b/test/functional/data/invalid_txs.py index 99c01abb2f..25c484dc4b 100644 --- a/test/functional/data/invalid_txs.py +++ b/test/functional/data/invalid_txs.py @@ -98,7 +98,6 @@ class OutputMissing(BadTxTemplate): def get_tx(self): tx = CTransaction() tx.vin.append(self.valid_txin) - tx.calc_sha256() return tx @@ -113,7 +112,6 @@ class InputMissing(BadTxTemplate): # rather than the input count check. def get_tx(self): tx = CTransaction() - tx.calc_sha256() return tx @@ -130,7 +128,6 @@ class SizeTooSmall(BadTxTemplate): tx.vout.append(CTxOut(0, CScript([OP_RETURN] + ([OP_0] * (MIN_PADDING - 2))))) assert len(tx.serialize_without_witness()) == 64 assert MIN_STANDARD_TX_NONWITNESS_SIZE - 1 == 64 - tx.calc_sha256() return tx @@ -149,7 +146,6 @@ class BadInputOutpointIndex(BadTxTemplate): tx = CTransaction() tx.vin.append(CTxIn(COutPoint(self.spend_tx.sha256, bad_idx), b"", SEQUENCE_FINAL)) tx.vout.append(CTxOut(0, basic_p2sh)) - tx.calc_sha256() return tx @@ -162,7 +158,6 @@ class DuplicateInput(BadTxTemplate): tx.vin.append(self.valid_txin) tx.vin.append(self.valid_txin) tx.vout.append(CTxOut(1, basic_p2sh)) - tx.calc_sha256() return tx @@ -175,7 +170,6 @@ class PrevoutNullInput(BadTxTemplate): tx.vin.append(self.valid_txin) tx.vin.append(CTxIn(COutPoint(hash=0, n=0xffffffff))) tx.vout.append(CTxOut(1, basic_p2sh)) - tx.calc_sha256() return tx @@ -190,7 +184,6 @@ class NonexistentInput(BadTxTemplate): tx.vin.append(CTxIn(COutPoint(self.spend_tx.sha256 + 1, 0), b"", SEQUENCE_FINAL)) tx.vin.append(self.valid_txin) tx.vout.append(CTxOut(1, basic_p2sh)) - tx.calc_sha256() return tx @@ -226,7 +219,6 @@ class CreateSumTooLarge(BadTxTemplate): def get_tx(self): tx = create_tx_with_script(self.spend_tx, 0, amount=MAX_MONEY) tx.vout = [tx.vout[0]] * 2 - tx.calc_sha256() return tx @@ -274,7 +266,6 @@ def getDisabledOpcodeTemplate(opcode): vin.scriptSig = CScript([opcode]) tx.vin.append(vin) tx.vout.append(CTxOut(1, basic_p2sh)) - tx.calc_sha256() return tx return type('DisabledOpcode_' + str(opcode), (BadTxTemplate,), { diff --git a/test/functional/feature_assumevalid.py b/test/functional/feature_assumevalid.py index 2f67ef8536..b5cca6e99a 100755 --- a/test/functional/feature_assumevalid.py +++ b/test/functional/feature_assumevalid.py @@ -119,7 +119,6 @@ class AssumeValidTest(BitcoinTestFramework): tx = CTransaction() tx.vin.append(CTxIn(COutPoint(self.block1.vtx[0].sha256, 0), scriptSig=b"")) tx.vout.append(CTxOut(49 * 100000000, CScript([OP_TRUE]))) - tx.calc_sha256() block102 = create_block(self.tip, create_coinbase(height), self.block_time, txlist=[tx]) self.block_time += 1 diff --git a/test/functional/feature_bip68_sequence.py b/test/functional/feature_bip68_sequence.py index d8c28c7203..2623285709 100755 --- a/test/functional/feature_bip68_sequence.py +++ b/test/functional/feature_bip68_sequence.py @@ -110,7 +110,6 @@ class BIP68Test(BitcoinTestFramework): tx2.wit.vtxinwit = [CTxInWitness()] tx2.wit.vtxinwit[0].scriptWitness.stack = [CScript([OP_TRUE])] tx2.vout = [CTxOut(int(value - self.relayfee * COIN), SCRIPT_W0_SH_OP_TRUE)] - tx2.rehash() assert_raises_rpc_error(-26, NOT_FINAL_ERROR, self.wallet.sendrawtransaction, from_node=self.nodes[0], tx_hex=tx2.serialize().hex()) @@ -220,7 +219,6 @@ class BIP68Test(BitcoinTestFramework): # Create a mempool tx. self.wallet.rescan_utxos() tx1 = self.wallet.send_self_transfer(from_node=self.nodes[0])["tx"] - tx1.rehash() # Anyone-can-spend mempool tx. # Sequence lock of 0 should pass. @@ -230,7 +228,6 @@ class BIP68Test(BitcoinTestFramework): tx2.vout = [CTxOut(int(tx1.vout[0].nValue - self.relayfee * COIN), SCRIPT_W0_SH_OP_TRUE)] self.wallet.sign_tx(tx=tx2) tx2_raw = tx2.serialize().hex() - tx2.rehash() self.wallet.sendrawtransaction(from_node=self.nodes[0], tx_hex=tx2_raw) @@ -248,7 +245,6 @@ class BIP68Test(BitcoinTestFramework): tx.wit.vtxinwit = [CTxInWitness()] tx.wit.vtxinwit[0].scriptWitness.stack = [CScript([OP_TRUE])] tx.vout = [CTxOut(int(orig_tx.vout[0].nValue - relayfee * COIN), SCRIPT_W0_SH_OP_TRUE)] - tx.rehash() if (orig_tx.hash in node.getrawmempool()): # sendrawtransaction should fail if the tx is in the mempool @@ -353,7 +349,6 @@ class BIP68Test(BitcoinTestFramework): assert not softfork_active(self.nodes[0], 'csv') tx1 = self.wallet.send_self_transfer(from_node=self.nodes[0])["tx"] - tx1.rehash() # Make an anyone-can-spend transaction tx2 = CTransaction() @@ -365,7 +360,6 @@ class BIP68Test(BitcoinTestFramework): self.wallet.sign_tx(tx=tx2) tx2_raw = tx2.serialize().hex() tx2 = tx_from_hex(tx2_raw) - tx2.rehash() self.wallet.sendrawtransaction(from_node=self.nodes[0], tx_hex=tx2_raw) @@ -378,7 +372,6 @@ class BIP68Test(BitcoinTestFramework): tx3.wit.vtxinwit = [CTxInWitness()] tx3.wit.vtxinwit[0].scriptWitness.stack = [CScript([OP_TRUE])] tx3.vout = [CTxOut(int(tx2.vout[0].nValue - self.relayfee * COIN), SCRIPT_W0_SH_OP_TRUE)] - tx3.rehash() assert_raises_rpc_error(-26, NOT_FINAL_ERROR, self.wallet.sendrawtransaction, from_node=self.nodes[0], tx_hex=tx3.serialize().hex()) diff --git a/test/functional/feature_block.py b/test/functional/feature_block.py index 1c38b227dd..3e00b9fb9d 100755 --- a/test/functional/feature_block.py +++ b/test/functional/feature_block.py @@ -109,7 +109,6 @@ class FullBlockTest(BitcoinTestFramework): # Create a new block b_dup_cb = self.next_block('dup_cb') b_dup_cb.vtx[0].vin[0].scriptSig = DUPLICATE_COINBASE_SCRIPT_SIG - b_dup_cb.vtx[0].rehash() duplicate_tx = b_dup_cb.vtx[0] b_dup_cb = self.update_block('dup_cb', []) self.send_blocks([b_dup_cb]) @@ -194,7 +193,6 @@ class FullBlockTest(BitcoinTestFramework): badtx = template.get_tx() if TxTemplate != invalid_txs.InputMissing: self.sign_tx(badtx, attempt_spend_tx) - badtx.rehash() badblock = self.update_block(blockname, [badtx]) self.send_blocks( [badblock], success=False, @@ -385,7 +383,6 @@ class FullBlockTest(BitcoinTestFramework): self.move_tip(15) b26 = self.next_block(26, spend=out[6]) b26.vtx[0].vin[0].scriptSig = b'\x00' - b26.vtx[0].rehash() # update_block causes the merkle root to get updated, even with no new # transactions, and updates the required state. b26 = self.update_block(26, []) @@ -399,7 +396,6 @@ class FullBlockTest(BitcoinTestFramework): self.move_tip(15) b28 = self.next_block(28, spend=out[6]) b28.vtx[0].vin[0].scriptSig = b'\x00' * 101 - b28.vtx[0].rehash() b28 = self.update_block(28, []) self.send_blocks([b28], success=False, reject_reason='bad-cb-length', reconnect=True) @@ -413,7 +409,6 @@ class FullBlockTest(BitcoinTestFramework): b30.vtx[0].vin[0].scriptSig = bytes(b30.vtx[0].vin[0].scriptSig) # Convert CScript to raw bytes b30.vtx[0].vin[0].scriptSig += b'\x00' * (100 - len(b30.vtx[0].vin[0].scriptSig)) # Fill with 0s assert_equal(len(b30.vtx[0].vin[0].scriptSig), 100) - b30.vtx[0].rehash() b30 = self.update_block(30, []) self.send_blocks([b30], True) self.save_spendable_output() @@ -516,7 +511,6 @@ class FullBlockTest(BitcoinTestFramework): tx = self.create_tx(spend, 0, 1, p2sh_script) tx.vout.append(CTxOut(spend.vout[0].nValue - 1, CScript([OP_TRUE]))) self.sign_tx(tx, spend) - tx.rehash() b39 = self.update_block(39, [tx]) b39_outputs += 1 @@ -527,7 +521,6 @@ class FullBlockTest(BitcoinTestFramework): while total_weight < MAX_BLOCK_WEIGHT: tx_new = self.create_tx(tx_last, 1, 1, p2sh_script) tx_new.vout.append(CTxOut(tx_last.vout[1].nValue - 1, CScript([OP_TRUE]))) - tx_new.rehash() total_weight += tx_new.get_weight() if total_weight >= MAX_BLOCK_WEIGHT: break @@ -579,7 +572,6 @@ class FullBlockTest(BitcoinTestFramework): tx = CTransaction() tx.vin.append(CTxIn(lastOutpoint, b'')) tx.vout.append(CTxOut(1, CScript([OP_CHECKSIG] * b40_sigops_to_fill))) - tx.rehash() new_txs.append(tx) self.update_block(40, new_txs) self.send_blocks([b40], success=False, reject_reason='bad-blk-sigops', reconnect=True) @@ -593,7 +585,6 @@ class FullBlockTest(BitcoinTestFramework): tx = CTransaction() tx.vin.append(CTxIn(lastOutpoint, b'')) tx.vout.append(CTxOut(1, CScript([OP_CHECKSIG] * b41_sigops_to_fill))) - tx.rehash() self.update_block(41, [tx]) self.send_blocks([b41], True) @@ -833,7 +824,6 @@ class FullBlockTest(BitcoinTestFramework): assert len(out[17].vout) < 42 tx.vin.append(CTxIn(COutPoint(out[17].sha256, 42), CScript([OP_TRUE]), SEQUENCE_FINAL)) tx.vout.append(CTxOut(0, b"")) - tx.calc_sha256() b58 = self.update_block(58, [tx]) self.send_blocks([b58], success=False, reject_reason='bad-txns-inputs-missingorspent', reconnect=True) @@ -865,7 +855,6 @@ class FullBlockTest(BitcoinTestFramework): b61 = self.next_block(61) b61.vtx[0].nLockTime = 0 b61.vtx[0].vin[0].scriptSig = DUPLICATE_COINBASE_SCRIPT_SIG - b61.vtx[0].rehash() b61 = self.update_block(61, []) assert_equal(duplicate_tx.serialize(), b61.vtx[0].serialize()) # BIP30 is always checked on regtest, regardless of the BIP34 activation height @@ -882,13 +871,11 @@ class FullBlockTest(BitcoinTestFramework): tx.vin.append(CTxIn(COutPoint(duplicate_tx.sha256, 0))) tx.vout.append(CTxOut(0, CScript([OP_TRUE]))) self.sign_tx(tx, duplicate_tx) - tx.rehash() b_spend_dup_cb = self.update_block('spend_dup_cb', [tx]) b_dup_2 = self.next_block('dup_2') b_dup_2.vtx[0].nLockTime = 0 b_dup_2.vtx[0].vin[0].scriptSig = DUPLICATE_COINBASE_SCRIPT_SIG - b_dup_2.vtx[0].rehash() b_dup_2 = self.update_block('dup_2', []) assert_equal(duplicate_tx.serialize(), b_dup_2.vtx[0].serialize()) assert_equal(self.nodes[0].gettxout(txid=duplicate_tx.hash, n=0)['confirmations'], 119) @@ -909,7 +896,6 @@ class FullBlockTest(BitcoinTestFramework): tx.vin.append(CTxIn(COutPoint(out[18].sha256, 0))) # don't set nSequence tx.vout.append(CTxOut(0, CScript([OP_TRUE]))) assert_greater_than(SEQUENCE_FINAL, tx.vin[0].nSequence) - tx.calc_sha256() b62 = self.update_block(62, [tx]) self.send_blocks([b62], success=False, reject_reason='bad-txns-nonfinal', reconnect=True) @@ -923,7 +909,6 @@ class FullBlockTest(BitcoinTestFramework): b63 = self.next_block(63) b63.vtx[0].nLockTime = 0xffffffff b63.vtx[0].vin[0].nSequence = 0xDEADBEEF - b63.vtx[0].rehash() b63 = self.update_block(63, []) self.send_blocks([b63], success=False, reject_reason='bad-txns-nonfinal', reconnect=True) @@ -1241,7 +1226,6 @@ class FullBlockTest(BitcoinTestFramework): tx2 = self.create_and_sign_transaction(tx1, 0, CScript([OP_TRUE])) tx2.vin[0].scriptSig = CScript([OP_FALSE]) - tx2.rehash() b83 = self.update_block(83, [tx1, tx2]) self.send_blocks([b83], True) @@ -1259,9 +1243,7 @@ class FullBlockTest(BitcoinTestFramework): tx1.vout.append(CTxOut(0, CScript([OP_TRUE]))) tx1.vout.append(CTxOut(0, CScript([OP_TRUE]))) tx1.vout.append(CTxOut(0, CScript([OP_TRUE]))) - tx1.calc_sha256() self.sign_tx(tx1, out[29]) - tx1.rehash() tx2 = self.create_tx(tx1, 1, 0, CScript([OP_RETURN])) tx2.vout.append(CTxOut(0, CScript([OP_RETURN]))) tx3 = self.create_tx(tx1, 2, 0, CScript([OP_RETURN])) @@ -1347,7 +1329,6 @@ class FullBlockTest(BitcoinTestFramework): self.move_tip(chain1_tip + 2) b_cb34 = self.next_block('b_cb34') b_cb34.vtx[0].vin[0].scriptSig = b_cb34.vtx[0].vin[0].scriptSig[:-1] - b_cb34.vtx[0].rehash() b_cb34.hashMerkleRoot = b_cb34.calc_merkle_root() b_cb34.solve() self.send_blocks([b_cb34], success=False, reject_reason='bad-cb-height', reconnect=True) @@ -1356,7 +1337,6 @@ class FullBlockTest(BitcoinTestFramework): ################ def add_transactions_to_block(self, block, tx_list): - [tx.rehash() for tx in tx_list] block.vtx.extend(tx_list) # this is a little handier to use than the version in blocktools.py @@ -1379,7 +1359,6 @@ class FullBlockTest(BitcoinTestFramework): output_script = CScript([OP_TRUE]) tx = self.create_tx(spend_tx, 0, value, output_script=output_script) self.sign_tx(tx, spend_tx) - tx.rehash() return tx def next_block(self, number, spend=None, additional_coinbase_value=0, *, script=None, version=4, additional_output_scripts=None): @@ -1399,15 +1378,12 @@ class FullBlockTest(BitcoinTestFramework): coinbase.vout[0].nValue += additional_coinbase_value for additional_script in additional_output_scripts: coinbase.vout.append(CTxOut(0, additional_script)) - coinbase.rehash() if spend is None: block = create_block(base_block_hash, coinbase, block_time, version=version) else: coinbase.vout[0].nValue += spend.vout[0].nValue - 1 # all but one satoshi to fees - coinbase.rehash() tx = self.create_tx(spend, 0, 1, output_script=script) # spend 1 satoshi self.sign_tx(tx, spend) - tx.rehash() block = create_block(base_block_hash, coinbase, block_time, version=version, txlist=[tx]) # Block is created. Find a valid nonce. block.solve() diff --git a/test/functional/feature_cltv.py b/test/functional/feature_cltv.py index 60b3fb4e20..fb9387b0a0 100755 --- a/test/functional/feature_cltv.py +++ b/test/functional/feature_cltv.py @@ -43,7 +43,6 @@ def cltv_modify_tx(tx, prepend_scriptsig, nsequence=None, nlocktime=None): tx.nLockTime = nlocktime tx.vin[0].scriptSig = CScript(prepend_scriptsig + list(CScript(tx.vin[0].scriptSig))) - tx.rehash() def cltv_invalidate(tx, failure_reason): diff --git a/test/functional/feature_coinstatsindex.py b/test/functional/feature_coinstatsindex.py index a2363c4acf..7d43d06649 100755 --- a/test/functional/feature_coinstatsindex.py +++ b/test/functional/feature_coinstatsindex.py @@ -191,7 +191,6 @@ class CoinStatsIndexTest(BitcoinTestFramework): # has two outputs cb = create_coinbase(109, nValue=35) cb.vout.append(CTxOut(5 * COIN, CScript([OP_FALSE]))) - cb.rehash() # Generate a block that includes previous coinbase tip = self.nodes[0].getbestblockhash() diff --git a/test/functional/feature_csv_activation.py b/test/functional/feature_csv_activation.py index d5b6d0dba9..92a4895f88 100755 --- a/test/functional/feature_csv_activation.py +++ b/test/functional/feature_csv_activation.py @@ -112,7 +112,6 @@ class BIP68_112_113Test(BitcoinTestFramework): tx.version = txversion self.miniwallet.sign_tx(tx) tx.vin[0].scriptSig = CScript([-1, OP_CHECKSEQUENCEVERIFY, OP_DROP] + list(CScript(tx.vin[0].scriptSig))) - tx.rehash() return tx def create_bip112emptystack(self, input, txversion): @@ -120,7 +119,6 @@ class BIP68_112_113Test(BitcoinTestFramework): tx.version = txversion self.miniwallet.sign_tx(tx) tx.vin[0].scriptSig = CScript([OP_CHECKSEQUENCEVERIFY] + list(CScript(tx.vin[0].scriptSig))) - tx.rehash() return tx def send_generic_input_tx(self, coinbases): @@ -159,7 +157,6 @@ class BIP68_112_113Test(BitcoinTestFramework): tx.vin[0].scriptSig = CScript([locktime, OP_CHECKSEQUENCEVERIFY, OP_DROP] + list(CScript(tx.vin[0].scriptSig))) else: tx.vin[0].scriptSig = CScript([BASE_RELATIVE_LOCKTIME, OP_CHECKSEQUENCEVERIFY, OP_DROP] + list(CScript(tx.vin[0].scriptSig))) - tx.rehash() txs.append({'tx': tx, 'sdf': sdf, 'stf': stf}) return txs diff --git a/test/functional/feature_dersig.py b/test/functional/feature_dersig.py index 0c3b0f1224..48eae38e31 100755 --- a/test/functional/feature_dersig.py +++ b/test/functional/feature_dersig.py @@ -81,7 +81,6 @@ class BIP66Test(BitcoinTestFramework): spendtx = self.create_tx(self.coinbase_txids[0]) unDERify(spendtx) - spendtx.rehash() tip = self.nodes[0].getbestblockhash() block_time = self.nodes[0].getblockheader(tip)['mediantime'] + 1 @@ -112,7 +111,6 @@ class BIP66Test(BitcoinTestFramework): coin_txid = self.coinbase_txids[1] spendtx = self.create_tx(coin_txid) unDERify(spendtx) - spendtx.rehash() # First we show that this tx is valid except for DERSIG by getting it # rejected from the mempool for exactly that reason. diff --git a/test/functional/feature_fee_estimation.py b/test/functional/feature_fee_estimation.py index 61db186de1..3fef30df05 100755 --- a/test/functional/feature_fee_estimation.py +++ b/test/functional/feature_fee_estimation.py @@ -61,7 +61,6 @@ def small_txpuzzle_randfee( tx.vout[0].nValue = int((total_in - amount - fee) * COIN) tx.vout.append(deepcopy(tx.vout[0])) tx.vout[1].nValue = int(amount * COIN) - tx.rehash() txid = tx.hash tx_hex = tx.serialize().hex() diff --git a/test/functional/feature_nulldummy.py b/test/functional/feature_nulldummy.py index 885bc4855b..a1ccb9775b 100755 --- a/test/functional/feature_nulldummy.py +++ b/test/functional/feature_nulldummy.py @@ -45,7 +45,6 @@ def invalidate_nulldummy_tx(tx): to be non-NULLDUMMY compliant by replacing the dummy with OP_TRUE""" assert_equal(tx.vin[0].scriptSig[0], OP_0) tx.vin[0].scriptSig = bytes([OP_TRUE]) + tx.vin[0].scriptSig[1:] - tx.rehash() class NULLDUMMYTest(BitcoinTestFramework): diff --git a/test/functional/feature_rbf.py b/test/functional/feature_rbf.py index ee79a27392..df305b885d 100755 --- a/test/functional/feature_rbf.py +++ b/test/functional/feature_rbf.py @@ -106,7 +106,6 @@ class ReplaceByFeeTest(BitcoinTestFramework): # Should fail because we haven't changed the fee tx.vout[0].scriptPubKey[-1] ^= 1 - tx.rehash() tx_hex = tx.serialize().hex() # This will raise an exception due to insufficient fee diff --git a/test/functional/feature_segwit.py b/test/functional/feature_segwit.py index d1316976f8..d5f794c241 100755 --- a/test/functional/feature_segwit.py +++ b/test/functional/feature_segwit.py @@ -277,7 +277,6 @@ class SegWitTest(BitcoinTestFramework): tx = CTransaction() tx.vin.append(CTxIn(COutPoint(int(txid2, 16), 0), b"")) tx.vout.append(CTxOut(int(49.95 * COIN), CScript([OP_TRUE, OP_DROP] * 15 + [OP_TRUE]))) # Huge fee - tx.calc_sha256() txid3 = self.nodes[0].sendrawtransaction(hexstring=tx.serialize().hex(), maxfeerate=0) assert tx.wit.is_null() assert txid3 in self.nodes[0].getrawmempool() @@ -305,7 +304,6 @@ class SegWitTest(BitcoinTestFramework): tx.vin.append(CTxIn(COutPoint(int('0x' + utxo['txid'], 0), utxo['vout']))) for i in script_list: tx.vout.append(CTxOut(10000000, i)) - tx.rehash() signresults = self.nodes[0].signrawtransactionwithwallet(tx.serialize_without_witness().hex())['hex'] txid = self.nodes[0].sendrawtransaction(hexstring=signresults, maxfeerate=0) txs_mined[txid] = self.generate(self.nodes[0], 1)[0] @@ -354,7 +352,6 @@ class SegWitTest(BitcoinTestFramework): for j in range(len(txtmp.vout)): tx.vin.append(CTxIn(COutPoint(int('0x' + i, 0), j))) tx.vout.append(CTxOut(0, CScript())) - tx.rehash() signresults = self.nodes[0].signrawtransactionwithwallet(tx.serialize_without_witness().hex())['hex'] self.nodes[0].sendrawtransaction(hexstring=signresults, maxfeerate=0) self.generate(self.nodes[0], 1) diff --git a/test/functional/feature_taproot.py b/test/functional/feature_taproot.py index 1911e75dc8..621ca70df2 100755 --- a/test/functional/feature_taproot.py +++ b/test/functional/feature_taproot.py @@ -1423,7 +1423,6 @@ class TaprootTest(BitcoinTestFramework): # Ask the wallet to sign fund_tx = tx_from_hex(node.signrawtransactionwithwallet(fund_tx.serialize().hex())["hex"]) # Construct UTXOData entries - fund_tx.rehash() for i in range(count_this_tx): utxodata = UTXOData(outpoint=COutPoint(fund_tx.sha256, i), output=fund_tx.vout[i], spender=spenders[done]) if utxodata.spender.need_vin_vout_mismatch: @@ -1538,7 +1537,6 @@ class TaprootTest(BitcoinTestFramework): and (all(utxo.spender.is_standard for utxo in input_utxos)) # All inputs must be standard and tx.version >= 1 # The tx version must be standard and tx.version <= 2) - tx.rehash() msg = ','.join(utxo.spender.comment + ("*" if n == fail_input else "") for n, utxo in enumerate(input_utxos)) if is_standard_tx: node.sendrawtransaction(tx.serialize().hex(), 0) @@ -1568,7 +1566,6 @@ class TaprootTest(BitcoinTestFramework): coinbase.vin = [CTxIn(COutPoint(0, 0xffffffff), CScript([OP_1, OP_1]), SEQUENCE_FINAL)] coinbase.vout = [CTxOut(5000000000, CScript([OP_1]))] coinbase.nLockTime = 0 - coinbase.rehash() assert coinbase.hash == "f60c73405d499a956d3162e3483c395526ef78286458a4cb17b125aa92e49b20" # Mine it block = create_block(hashprev=int(self.nodes[0].getbestblockhash(), 16), coinbase=coinbase) @@ -1662,7 +1659,6 @@ class TaprootTest(BitcoinTestFramework): if i & 1: tx.vout = list(reversed(tx.vout)) tx.nLockTime = 0 - tx.rehash() amount -= val lasttxid = tx.sha256 txn.append(tx) diff --git a/test/functional/interface_zmq.py b/test/functional/interface_zmq.py index 96e701a7fd..472939cc3b 100755 --- a/test/functional/interface_zmq.py +++ b/test/functional/interface_zmq.py @@ -212,7 +212,6 @@ class ZMQTest (BitcoinTestFramework): # Should receive the coinbase raw transaction. tx = tx_from_hex(rawtx.receive().hex()) - tx.calc_sha256() assert_equal(tx.hash, txid.hex()) # Should receive the generated raw block. diff --git a/test/functional/mempool_accept.py b/test/functional/mempool_accept.py index d9c0116186..8a597a20f6 100755 --- a/test/functional/mempool_accept.py +++ b/test/functional/mempool_accept.py @@ -435,7 +435,6 @@ class MempoolAcceptanceTest(BitcoinTestFramework): anchor_nonempty_wit_spend.vout.append(CTxOut(anchor_value - int(fee*COIN), script_to_p2wsh_script(CScript([OP_TRUE])))) anchor_nonempty_wit_spend.wit.vtxinwit.append(CTxInWitness()) anchor_nonempty_wit_spend.wit.vtxinwit[0].scriptWitness.stack.append(b"f") - anchor_nonempty_wit_spend.rehash() self.check_mempool_result( result_expected=[{'txid': anchor_nonempty_wit_spend.rehash(), 'allowed': False, 'reject-reason': 'bad-witness-nonstandard'}], @@ -466,14 +465,12 @@ class MempoolAcceptanceTest(BitcoinTestFramework): self.log.info('But cannot be spent if nested sh()') nested_anchor_tx = self.wallet.create_self_transfer(sequence=SEQUENCE_FINAL)['tx'] nested_anchor_tx.vout[0].scriptPubKey = script_to_p2sh_script(PAY_TO_ANCHOR) - nested_anchor_tx.rehash() self.generateblock(node, self.wallet.get_address(), [nested_anchor_tx.serialize().hex()]) nested_anchor_spend = CTransaction() nested_anchor_spend.vin.append(CTxIn(COutPoint(nested_anchor_tx.sha256, 0), b"")) nested_anchor_spend.vin[0].scriptSig = CScript([bytes(PAY_TO_ANCHOR)]) nested_anchor_spend.vout.append(CTxOut(nested_anchor_tx.vout[0].nValue - int(fee*COIN), script_to_p2wsh_script(CScript([OP_TRUE])))) - nested_anchor_spend.rehash() self.check_mempool_result( result_expected=[{'txid': nested_anchor_spend.rehash(), 'allowed': False, 'reject-reason': 'non-mandatory-script-verify-flag (Witness version reserved for soft-fork upgrades)'}], @@ -488,12 +485,10 @@ class MempoolAcceptanceTest(BitcoinTestFramework): tx = tx_from_hex(raw_tx_reference) privkey, pubkey = generate_keypair() tx.vout[0].scriptPubKey = keys_to_multisig_script([pubkey] * 3, k=1) # Some bare multisig script (1-of-3) - tx.rehash() self.generateblock(node, address, [tx.serialize().hex()]) tx_spend = CTransaction() tx_spend.vin.append(CTxIn(COutPoint(tx.sha256, 0), b"")) tx_spend.vout.append(CTxOut(tx.vout[0].nValue - int(fee*COIN), script_to_p2wsh_script(CScript([OP_TRUE])))) - tx_spend.rehash() sign_input_legacy(tx_spend, 0, tx.vout[0].scriptPubKey, privkey, sighash_type=SIGHASH_ALL) tx_spend.vin[0].scriptSig = bytes(CScript([OP_0])) + tx_spend.vin[0].scriptSig self.check_mempool_result( diff --git a/test/functional/mempool_accept_wtxid.py b/test/functional/mempool_accept_wtxid.py index 87fd436e52..84ac294dac 100755 --- a/test/functional/mempool_accept_wtxid.py +++ b/test/functional/mempool_accept_wtxid.py @@ -58,7 +58,6 @@ class MempoolWtxidTest(BitcoinTestFramework): parent = CTransaction() parent.vin.append(CTxIn(COutPoint(int(txid, 16), 0), b"")) parent.vout.append(CTxOut(int(9.99998 * COIN), script_pubkey)) - parent.rehash() privkeys = [node.get_deterministic_priv_key().key] raw_parent = node.signrawtransactionwithkey(hexstring=parent.serialize().hex(), privkeys=privkeys)['hex'] diff --git a/test/functional/mining_basic.py b/test/functional/mining_basic.py index 12f1a4ddf5..2807ef01b8 100755 --- a/test/functional/mining_basic.py +++ b/test/functional/mining_basic.py @@ -425,7 +425,6 @@ class MiningTest(BitcoinTestFramework): coinbase_tx = create_coinbase(height=next_height) # sequence numbers must not be max for nLockTime to have effect coinbase_tx.vin[0].nSequence = 2**32 - 2 - coinbase_tx.rehash() block = CBlock() block.nVersion = tmpl["version"] @@ -447,7 +446,6 @@ class MiningTest(BitcoinTestFramework): self.log.info("getblocktemplate: Test bad input hash for coinbase transaction") bad_block = copy.deepcopy(block) bad_block.vtx[0].vin[0].prevout.hash += 1 - bad_block.vtx[0].rehash() assert_template(node, bad_block, 'bad-cb-missing') self.log.info("submitblock: Test bad input hash for coinbase transaction") @@ -481,7 +479,6 @@ class MiningTest(BitcoinTestFramework): bad_block = copy.deepcopy(block) bad_tx = copy.deepcopy(bad_block.vtx[0]) bad_tx.vin[0].prevout.hash = 255 - bad_tx.rehash() bad_block.vtx.append(bad_tx) assert_template(node, bad_block, 'bad-txns-inputs-missingorspent') assert_submitblock(bad_block, 'bad-txns-inputs-missingorspent') @@ -489,7 +486,6 @@ class MiningTest(BitcoinTestFramework): self.log.info("getblocktemplate: Test nonfinal transaction") bad_block = copy.deepcopy(block) bad_block.vtx[0].nLockTime = 2**32 - 1 - bad_block.vtx[0].rehash() assert_template(node, bad_block, 'bad-txns-nonfinal') assert_submitblock(bad_block, 'bad-txns-nonfinal') @@ -563,7 +559,6 @@ class MiningTest(BitcoinTestFramework): bad_block_lock = copy.deepcopy(block) bad_block_lock.vtx[0].nLockTime = 2**32 - 1 - bad_block_lock.vtx[0].rehash() bad_block_lock.hashMerkleRoot = bad_block_lock.calc_merkle_root() bad_block_lock.solve() assert_equal(node.submitblock(hexdata=bad_block_lock.serialize().hex()), 'bad-txns-nonfinal') diff --git a/test/functional/mining_mainnet.py b/test/functional/mining_mainnet.py index 4f95696f78..25632fbc8e 100755 --- a/test/functional/mining_mainnet.py +++ b/test/functional/mining_mainnet.py @@ -65,7 +65,6 @@ class MiningMainnetTest(BitcoinTestFramework): # The alternate mainnet chain was mined with non-timelocked coinbase txs. block.vtx[0].nLockTime = 0 block.vtx[0].vin[0].nSequence = SEQUENCE_FINAL - block.vtx[0].rehash() block.hashMerkleRoot = block.calc_merkle_root() block.rehash() block_hex = block.serialize(with_witness=False).hex() diff --git a/test/functional/p2p_compactblocks.py b/test/functional/p2p_compactblocks.py index c207515d28..005076dc1e 100755 --- a/test/functional/p2p_compactblocks.py +++ b/test/functional/p2p_compactblocks.py @@ -169,7 +169,6 @@ class CompactBlocksTest(BitcoinTestFramework): tx.vin.append(CTxIn(COutPoint(block.vtx[0].sha256, 0), b'')) for _ in range(10): tx.vout.append(CTxOut(out_value, CScript([OP_TRUE]))) - tx.rehash() block2 = self.build_block_on_tip(self.nodes[0]) block2.vtx.append(tx) @@ -309,8 +308,6 @@ class CompactBlocksTest(BitcoinTestFramework): # Store the raw block in our internal format. block = from_hex(CBlock(), node.getblock("%064x" % block_hash, False)) - for tx in block.vtx: - tx.calc_sha256() block.rehash() # Wait until the block was announced (via compact blocks) @@ -423,7 +420,6 @@ class CompactBlocksTest(BitcoinTestFramework): tx = CTransaction() tx.vin.append(CTxIn(COutPoint(utxo[0], utxo[1]), b'')) tx.vout.append(CTxOut(utxo[2] - 1000, CScript([OP_TRUE, OP_DROP] * 15 + [OP_TRUE]))) - tx.rehash() utxo = [tx.sha256, 0, tx.vout[0].nValue] block.vtx.append(tx) @@ -583,7 +579,6 @@ class CompactBlocksTest(BitcoinTestFramework): test_node.send_without_ping(msg) test_node.wait_until(lambda: "blocktxn" in test_node.last_message, timeout=10) - [tx.calc_sha256() for tx in block.vtx] with p2p_lock: assert_equal(test_node.last_message["blocktxn"].block_transactions.blockhash, int(block_hash, 16)) all_indices = msg.block_txn_request.to_absolute() diff --git a/test/functional/p2p_invalid_block.py b/test/functional/p2p_invalid_block.py index c28ee47f9c..8b177542dc 100755 --- a/test/functional/p2p_invalid_block.py +++ b/test/functional/p2p_invalid_block.py @@ -93,7 +93,6 @@ class InvalidBlockRequestTest(BitcoinTestFramework): block2_dup = copy.deepcopy(block2_orig) block2_dup.vtx[2].vin.append(block2_dup.vtx[2].vin[0]) - block2_dup.vtx[2].rehash() block2_dup.hashMerkleRoot = block2_dup.calc_merkle_root() block2_dup.solve() peer.send_blocks_and_test([block2_dup], node, success=False, reject_reason='bad-txns-inputs-duplicate') @@ -122,7 +121,6 @@ class InvalidBlockRequestTest(BitcoinTestFramework): # Create a block that spends the output of a tx in a previous block. tx3 = create_tx_with_script(tx2, 0, script_sig=bytes([OP_TRUE]), amount=50 * COIN) tx3.vin.append(tx3.vin[0]) # Duplicates input - tx3.rehash() block4 = create_block(tip, create_coinbase(height), block_time, txlist=[tx3]) block4.solve() self.log.info("Test inflation by duplicating input") diff --git a/test/functional/p2p_invalid_tx.py b/test/functional/p2p_invalid_tx.py index ee8c6c16ca..fc7be88f8a 100755 --- a/test/functional/p2p_invalid_tx.py +++ b/test/functional/p2p_invalid_tx.py @@ -93,13 +93,11 @@ class InvalidTxRequestTest(BitcoinTestFramework): tx_withhold = CTransaction() tx_withhold.vin.append(CTxIn(outpoint=COutPoint(block1.vtx[0].sha256, 0))) tx_withhold.vout = [CTxOut(nValue=25 * COIN - 12000, scriptPubKey=SCRIPT_PUB_KEY_OP_TRUE)] * 2 - tx_withhold.calc_sha256() # Our first orphan tx with some outputs to create further orphan txs tx_orphan_1 = CTransaction() tx_orphan_1.vin.append(CTxIn(outpoint=COutPoint(tx_withhold.sha256, 0))) tx_orphan_1.vout = [CTxOut(nValue=8 * COIN, scriptPubKey=SCRIPT_PUB_KEY_OP_TRUE)] * 3 - tx_orphan_1.calc_sha256() # A valid transaction with low fee tx_orphan_2_no_fee = CTransaction() @@ -110,13 +108,11 @@ class InvalidTxRequestTest(BitcoinTestFramework): tx_orphan_2_valid = CTransaction() tx_orphan_2_valid.vin.append(CTxIn(outpoint=COutPoint(tx_orphan_1.sha256, 1))) tx_orphan_2_valid.vout.append(CTxOut(nValue=8 * COIN - 12000, scriptPubKey=SCRIPT_PUB_KEY_OP_TRUE)) - tx_orphan_2_valid.calc_sha256() # An invalid transaction with negative fee tx_orphan_2_invalid = CTransaction() tx_orphan_2_invalid.vin.append(CTxIn(outpoint=COutPoint(tx_orphan_1.sha256, 2))) tx_orphan_2_invalid.vout.append(CTxOut(nValue=11 * COIN, scriptPubKey=SCRIPT_PUB_KEY_OP_TRUE)) - tx_orphan_2_invalid.calc_sha256() self.log.info('Send the orphans ... ') # Send valid orphan txs from p2ps[0] @@ -160,7 +156,6 @@ class InvalidTxRequestTest(BitcoinTestFramework): rejected_parent = CTransaction() rejected_parent.vin.append(CTxIn(outpoint=COutPoint(tx_orphan_2_invalid.sha256, 0))) rejected_parent.vout.append(CTxOut(nValue=11 * COIN, scriptPubKey=SCRIPT_PUB_KEY_OP_TRUE)) - rejected_parent.rehash() with node.assert_debug_log(['not keeping orphan with rejected parents {}'.format(rejected_parent.hash)]): node.p2ps[0].send_txs_and_test([rejected_parent], node, success=False) @@ -172,12 +167,10 @@ class InvalidTxRequestTest(BitcoinTestFramework): tx_withhold_until_block_A = CTransaction() tx_withhold_until_block_A.vin.append(CTxIn(outpoint=COutPoint(tx_withhold.sha256, 1))) tx_withhold_until_block_A.vout = [CTxOut(nValue=12 * COIN, scriptPubKey=SCRIPT_PUB_KEY_OP_TRUE)] * 2 - tx_withhold_until_block_A.calc_sha256() tx_orphan_include_by_block_A = CTransaction() tx_orphan_include_by_block_A.vin.append(CTxIn(outpoint=COutPoint(tx_withhold_until_block_A.sha256, 0))) tx_orphan_include_by_block_A.vout.append(CTxOut(nValue=12 * COIN - 12000, scriptPubKey=SCRIPT_PUB_KEY_OP_TRUE)) - tx_orphan_include_by_block_A.calc_sha256() self.log.info('Send the orphan ... ') node.p2ps[0].send_txs_and_test([tx_orphan_include_by_block_A], node, success=False) @@ -197,17 +190,14 @@ class InvalidTxRequestTest(BitcoinTestFramework): tx_withhold_until_block_B = CTransaction() tx_withhold_until_block_B.vin.append(CTxIn(outpoint=COutPoint(tx_withhold_until_block_A.sha256, 1))) tx_withhold_until_block_B.vout.append(CTxOut(nValue=11 * COIN, scriptPubKey=SCRIPT_PUB_KEY_OP_TRUE)) - tx_withhold_until_block_B.calc_sha256() tx_orphan_include_by_block_B = CTransaction() tx_orphan_include_by_block_B.vin.append(CTxIn(outpoint=COutPoint(tx_withhold_until_block_B.sha256, 0))) tx_orphan_include_by_block_B.vout.append(CTxOut(nValue=10 * COIN, scriptPubKey=SCRIPT_PUB_KEY_OP_TRUE)) - tx_orphan_include_by_block_B.calc_sha256() tx_orphan_conflict_by_block_B = CTransaction() tx_orphan_conflict_by_block_B.vin.append(CTxIn(outpoint=COutPoint(tx_withhold_until_block_B.sha256, 0))) tx_orphan_conflict_by_block_B.vout.append(CTxOut(nValue=9 * COIN, scriptPubKey=SCRIPT_PUB_KEY_OP_TRUE)) - tx_orphan_conflict_by_block_B.calc_sha256() self.log.info('Send the orphan ... ') node.p2ps[0].send_txs_and_test([tx_orphan_conflict_by_block_B], node, success=False) diff --git a/test/functional/p2p_segwit.py b/test/functional/p2p_segwit.py index 37c2827ba6..656c39e805 100755 --- a/test/functional/p2p_segwit.py +++ b/test/functional/p2p_segwit.py @@ -313,7 +313,6 @@ class SegWitTest(BitcoinTestFramework): tx = CTransaction() tx.vin.append(CTxIn(COutPoint(txid, 0), b"")) tx.vout.append(CTxOut(49 * 100000000, CScript([OP_TRUE, OP_DROP] * 15 + [OP_TRUE]))) - tx.calc_sha256() # Check that serializing it with or without witness is the same # This is a sanity check of our testing framework. @@ -471,7 +470,6 @@ class SegWitTest(BitcoinTestFramework): tx.vin = [CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b'')] tx.vout = [CTxOut(value, script_pubkey), CTxOut(value, p2sh_script_pubkey)] tx.vout.append(CTxOut(value, CScript([OP_TRUE]))) - tx.rehash() txid = tx.sha256 # Add it to a block @@ -489,14 +487,12 @@ class SegWitTest(BitcoinTestFramework): p2wsh_tx.vout = [CTxOut(value, CScript([OP_TRUE]))] p2wsh_tx.wit.vtxinwit.append(CTxInWitness()) p2wsh_tx.wit.vtxinwit[0].scriptWitness.stack = [CScript([OP_TRUE])] - p2wsh_tx.rehash() p2sh_p2wsh_tx = CTransaction() p2sh_p2wsh_tx.vin = [CTxIn(COutPoint(txid, 1), CScript([script_pubkey]))] p2sh_p2wsh_tx.vout = [CTxOut(value, CScript([OP_TRUE]))] p2sh_p2wsh_tx.wit.vtxinwit.append(CTxInWitness()) p2sh_p2wsh_tx.wit.vtxinwit[0].scriptWitness.stack = [CScript([OP_TRUE])] - p2sh_p2wsh_tx.rehash() for tx in [p2wsh_tx, p2sh_p2wsh_tx]: @@ -527,7 +523,6 @@ class SegWitTest(BitcoinTestFramework): tx.vout.append(CTxOut(self.utxo[0].nValue - 1000, CScript([OP_TRUE, OP_DROP] * 15 + [OP_TRUE]))) tx.wit.vtxinwit.append(CTxInWitness()) tx.wit.vtxinwit[0].scriptWitness.stack = [b'a'] - tx.rehash() tx_hash = tx.sha256 tx_value = tx.vout[0].nValue @@ -573,7 +568,6 @@ class SegWitTest(BitcoinTestFramework): p2sh_tx = CTransaction() p2sh_tx.vin = [CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b"")] p2sh_tx.vout = [CTxOut(self.utxo[0].nValue - 1000, p2sh_script_pubkey)] - p2sh_tx.rehash() # Mine it on test_node to create the confirmed output. test_transaction_acceptance(self.nodes[0], self.test_node, p2sh_tx, with_witness=True, accepted=True) @@ -586,7 +580,6 @@ class SegWitTest(BitcoinTestFramework): tx.vout = [CTxOut(p2sh_tx.vout[0].nValue - 10000, script_pubkey)] tx.vout.append(CTxOut(8000, script_pubkey)) # Might burn this later tx.vin[0].nSequence = MAX_BIP125_RBF_SEQUENCE # Just to have the option to bump this tx from the mempool - tx.rehash() # This is always accepted, since the mempool policy is to consider segwit as always active # and thus allow segwit outputs @@ -601,7 +594,6 @@ class SegWitTest(BitcoinTestFramework): tx2.vout = [CTxOut(7000, script_pubkey)] tx2.wit.vtxinwit.append(CTxInWitness()) tx2.wit.vtxinwit[0].scriptWitness.stack = [witness_script] - tx2.rehash() test_transaction_acceptance(self.nodes[1], self.std_node, tx2, with_witness=True, accepted=True) @@ -614,7 +606,6 @@ class SegWitTest(BitcoinTestFramework): tx3.vout = [CTxOut(tx.vout[0].nValue - 1000, CScript([OP_TRUE, OP_DROP] * 15 + [OP_TRUE]))] tx3.wit.vtxinwit.append(CTxInWitness()) tx3.wit.vtxinwit[0].scriptWitness.stack = [witness_script] - tx3.rehash() if not self.segwit_active: # Just check mempool acceptance, but don't add the transaction to the mempool, since witness is disallowed # in blocks and the tx is impossible to mine right now. @@ -636,7 +627,6 @@ class SegWitTest(BitcoinTestFramework): tx3_out = tx3.vout[0] tx3 = tx tx3.vout = [tx3_out] - tx3.rehash() testres3_replaced = self.nodes[0].testmempoolaccept([tx3.serialize_with_witness().hex()]) testres3_replaced[0]["fees"].pop("effective-feerate") testres3_replaced[0]["fees"].pop("effective-includes") @@ -683,7 +673,6 @@ class SegWitTest(BitcoinTestFramework): tx = CTransaction() tx.vin.append(CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b"")) tx.vout.append(CTxOut(self.utxo[0].nValue - 1000, script_pubkey)) - tx.rehash() # Verify mempool acceptance and block validity test_transaction_acceptance(self.nodes[0], self.test_node, tx, with_witness=False, accepted=True) @@ -696,7 +685,6 @@ class SegWitTest(BitcoinTestFramework): spend_tx = CTransaction() spend_tx.vin.append(CTxIn(COutPoint(tx.sha256, 0), script_sig)) spend_tx.vout.append(CTxOut(tx.vout[0].nValue - 1000, CScript([OP_TRUE]))) - spend_tx.rehash() # This transaction should not be accepted into the mempool pre- or # post-segwit. Mempool acceptance will use SCRIPT_VERIFY_WITNESS which @@ -709,7 +697,6 @@ class SegWitTest(BitcoinTestFramework): # Try to put the witness script in the scriptSig, should also fail. spend_tx.vin[0].scriptSig = CScript([p2wsh_pubkey, b'a']) - spend_tx.rehash() with self.nodes[0].assert_debug_log( expected_msgs=[spend_tx.hash, 'was not accepted: mandatory-script-verify-flag-failed (Script evaluated without error but finished with a false/empty top stack element)']): test_transaction_acceptance(self.nodes[0], self.test_node, spend_tx, with_witness=False, accepted=False) @@ -717,7 +704,6 @@ class SegWitTest(BitcoinTestFramework): # Now put the witness script in the witness, should succeed after # segwit activates. spend_tx.vin[0].scriptSig = script_sig - spend_tx.rehash() spend_tx.wit.vtxinwit.append(CTxInWitness()) spend_tx.wit.vtxinwit[0].scriptWitness.stack = [b'a', witness_script] @@ -772,7 +758,6 @@ class SegWitTest(BitcoinTestFramework): witness_script = CScript([OP_TRUE]) script_pubkey = script_to_p2wsh_script(witness_script) tx.vout.append(CTxOut(self.utxo[0].nValue - 1000, script_pubkey)) - tx.rehash() # tx2 will spend tx1, and send back to a regular anyone-can-spend address tx2 = CTransaction() @@ -780,7 +765,6 @@ class SegWitTest(BitcoinTestFramework): tx2.vout.append(CTxOut(tx.vout[0].nValue - 1000, witness_script)) tx2.wit.vtxinwit.append(CTxInWitness()) tx2.wit.vtxinwit[0].scriptWitness.stack = [witness_script] - tx2.rehash() block_3 = self.build_next_block() self.update_witness_block_with_transactions(block_3, [tx, tx2], nonce=1) @@ -788,7 +772,6 @@ class SegWitTest(BitcoinTestFramework): # even though it has extra data after the incorrect commitment. # This block should fail. block_3.vtx[0].vout.append(CTxOut(0, CScript([OP_RETURN, WITNESS_COMMITMENT_HEADER + ser_uint256(2), 10]))) - block_3.vtx[0].rehash() block_3.hashMerkleRoot = block_3.calc_merkle_root() block_3.solve() @@ -801,7 +784,6 @@ class SegWitTest(BitcoinTestFramework): add_witness_commitment(block_3, nonce=0) block_3.vtx[0].vout[0].nValue -= 1 block_3.vtx[0].vout[-1].nValue += 1 - block_3.vtx[0].rehash() block_3.hashMerkleRoot = block_3.calc_merkle_root() assert len(block_3.vtx[0].vout) == 4 # 3 OP_returns block_3.solve() @@ -813,7 +795,6 @@ class SegWitTest(BitcoinTestFramework): tx3 = CTransaction() tx3.vin.append(CTxIn(COutPoint(tx2.sha256, 0), b"")) tx3.vout.append(CTxOut(tx.vout[0].nValue - 1000, witness_script)) - tx3.rehash() block_4.vtx.append(tx3) block_4.hashMerkleRoot = block_4.calc_merkle_root() block_4.solve() @@ -893,7 +874,6 @@ class SegWitTest(BitcoinTestFramework): parent_tx.vout.append(CTxOut(child_value, script_pubkey)) parent_tx.vout[0].nValue -= 50000 assert parent_tx.vout[0].nValue > 0 - parent_tx.rehash() child_tx = CTransaction() for i in range(NUM_OUTPUTS): @@ -902,7 +882,6 @@ class SegWitTest(BitcoinTestFramework): for _ in range(NUM_OUTPUTS): child_tx.wit.vtxinwit.append(CTxInWitness()) child_tx.wit.vtxinwit[-1].scriptWitness.stack = [b'a' * 195] * (2 * NUM_DROPS) + [witness_script] - child_tx.rehash() self.update_witness_block_with_transactions(block, [parent_tx, child_tx]) additional_bytes = MAX_BLOCK_WEIGHT - block.get_weight() @@ -990,7 +969,6 @@ class SegWitTest(BitcoinTestFramework): tx.vout.append(CTxOut(1000, CScript([OP_TRUE]))) # non-witness output tx.wit.vtxinwit.append(CTxInWitness()) tx.wit.vtxinwit[0].scriptWitness.stack = [CScript([])] - tx.rehash() self.update_witness_block_with_transactions(block, [tx]) # Extra witness data should not be allowed. @@ -1000,7 +978,6 @@ class SegWitTest(BitcoinTestFramework): # Try extra signature data. Ok if we're not spending a witness output. block.vtx[1].wit.vtxinwit = [] block.vtx[1].vin[0].scriptSig = CScript([OP_0]) - block.vtx[1].rehash() add_witness_commitment(block) block.solve() @@ -1028,7 +1005,6 @@ class SegWitTest(BitcoinTestFramework): tx2.vin[1].scriptSig = CScript([OP_TRUE]) tx2.wit.vtxinwit[0].scriptWitness.stack.pop(0) tx2.wit.vtxinwit[1].scriptWitness.stack = [] - tx2.rehash() add_witness_commitment(block) block.solve() @@ -1039,7 +1015,6 @@ class SegWitTest(BitcoinTestFramework): # Now get rid of the extra scriptsig on the witness input, and verify # success (even with extra scriptsig data in the non-witness input) tx2.vin[0].scriptSig = b"" - tx2.rehash() add_witness_commitment(block) block.solve() @@ -1061,7 +1036,6 @@ class SegWitTest(BitcoinTestFramework): tx = CTransaction() tx.vin.append(CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b"")) tx.vout.append(CTxOut(self.utxo[0].nValue - 1000, script_pubkey)) - tx.rehash() tx2 = CTransaction() tx2.vin.append(CTxIn(COutPoint(tx.sha256, 0), b"")) @@ -1069,7 +1043,6 @@ class SegWitTest(BitcoinTestFramework): tx2.wit.vtxinwit.append(CTxInWitness()) # First try a 521-byte stack element tx2.wit.vtxinwit[0].scriptWitness.stack = [b'a' * (MAX_SCRIPT_ELEMENT_SIZE + 1), witness_script] - tx2.rehash() self.update_witness_block_with_transactions(block, [tx, tx2]) test_witness_block(self.nodes[0], self.test_node, block, accepted=False, @@ -1102,14 +1075,12 @@ class SegWitTest(BitcoinTestFramework): tx = CTransaction() tx.vin.append(CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b"")) tx.vout.append(CTxOut(self.utxo[0].nValue - 1000, long_script_pubkey)) - tx.rehash() tx2 = CTransaction() tx2.vin.append(CTxIn(COutPoint(tx.sha256, 0), b"")) tx2.vout.append(CTxOut(tx.vout[0].nValue - 1000, CScript([OP_TRUE]))) tx2.wit.vtxinwit.append(CTxInWitness()) tx2.wit.vtxinwit[0].scriptWitness.stack = [b'a'] * 44 + [long_witness_script] - tx2.rehash() self.update_witness_block_with_transactions(block, [tx, tx2]) @@ -1122,10 +1093,8 @@ class SegWitTest(BitcoinTestFramework): script_pubkey = script_to_p2wsh_script(witness_script) tx.vout[0] = CTxOut(tx.vout[0].nValue, script_pubkey) - tx.rehash() tx2.vin[0].prevout.hash = tx.sha256 tx2.wit.vtxinwit[0].scriptWitness.stack = [b'a'] * 43 + [witness_script] - tx2.rehash() block.vtx = [block.vtx[0]] self.update_witness_block_with_transactions(block, [tx, tx2]) test_witness_block(self.nodes[0], self.test_node, block, accepted=True) @@ -1234,7 +1203,6 @@ class SegWitTest(BitcoinTestFramework): tx.vout.append(CTxOut(self.utxo[0].nValue - 1000, CScript([OP_TRUE, OP_DROP] * 15 + [OP_TRUE]))) tx.wit.vtxinwit.append(CTxInWitness()) tx.wit.vtxinwit[0].scriptWitness.stack = [b'a'] - tx.rehash() tx_hash = tx.sha256 @@ -1252,7 +1220,6 @@ class SegWitTest(BitcoinTestFramework): tx2 = CTransaction() tx2.vin.append(CTxIn(COutPoint(tx_hash, 0), b"")) tx2.vout.append(CTxOut(tx.vout[0].nValue - 1000, script_pubkey)) - tx2.rehash() tx3 = CTransaction() tx3.vin.append(CTxIn(COutPoint(tx2.sha256, 0), b"")) @@ -1263,7 +1230,6 @@ class SegWitTest(BitcoinTestFramework): witness_script2 = CScript([b'a' * 400000]) tx3.vout.append(CTxOut(tx2.vout[0].nValue - 1000, script_to_p2sh_script(p2sh_script))) tx3.wit.vtxinwit[0].scriptWitness.stack = [witness_script2] - tx3.rehash() # Node will not be blinded to the transaction, requesting it any number of times # if it is being announced via txid relay. @@ -1277,7 +1243,6 @@ class SegWitTest(BitcoinTestFramework): # Remove witness stuffing, instead add extra witness push on stack tx3.vout[0] = CTxOut(tx2.vout[0].nValue - 1000, CScript([OP_TRUE, OP_DROP] * 15 + [OP_TRUE])) tx3.wit.vtxinwit[0].scriptWitness.stack = [CScript([CScriptNum(1)]), witness_script] - tx3.rehash() test_transaction_acceptance(self.nodes[0], self.test_node, tx2, with_witness=True, accepted=True) test_transaction_acceptance(self.nodes[0], self.test_node, tx3, with_witness=True, accepted=False) @@ -1324,7 +1289,6 @@ class SegWitTest(BitcoinTestFramework): split_value = (self.utxo[0].nValue - 4000) // NUM_SEGWIT_VERSIONS for _ in range(NUM_SEGWIT_VERSIONS): tx.vout.append(CTxOut(split_value, CScript([OP_TRUE]))) - tx.rehash() block = self.build_next_block() self.update_witness_block_with_transactions(block, [tx]) test_witness_block(self.nodes[0], self.test_node, block, accepted=True) @@ -1347,7 +1311,6 @@ class SegWitTest(BitcoinTestFramework): script_pubkey = CScript([CScriptOp(version), witness_hash]) tx.vin = [CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b"")] tx.vout = [CTxOut(self.utxo[0].nValue - 1000, script_pubkey)] - tx.rehash() test_transaction_acceptance(self.nodes[1], self.std_node, tx, with_witness=True, accepted=False) test_transaction_acceptance(self.nodes[0], self.test_node, tx, with_witness=True, accepted=True) self.utxo.pop(0) @@ -1364,7 +1327,6 @@ class SegWitTest(BitcoinTestFramework): tx2.vout = [CTxOut(tx.vout[0].nValue - 1000, script_pubkey)] tx2.wit.vtxinwit.append(CTxInWitness()) tx2.wit.vtxinwit[0].scriptWitness.stack = [witness_script] - tx2.rehash() # Gets accepted to both policy-enforcing nodes and others. test_transaction_acceptance(self.nodes[0], self.test_node, tx2, with_witness=True, accepted=True) test_transaction_acceptance(self.nodes[1], self.std_node, tx2, with_witness=True, accepted=True) @@ -1380,7 +1342,6 @@ class SegWitTest(BitcoinTestFramework): total_value += i.nValue tx3.wit.vtxinwit[-1].scriptWitness.stack = [witness_script] tx3.vout.append(CTxOut(total_value - 1000, script_pubkey)) - tx3.rehash() # First we test this transaction against std_node # making sure the txid is added to the reject filter @@ -1420,7 +1381,6 @@ class SegWitTest(BitcoinTestFramework): spend_tx.vout = [CTxOut(block.vtx[0].vout[0].nValue, witness_script)] spend_tx.wit.vtxinwit.append(CTxInWitness()) spend_tx.wit.vtxinwit[0].scriptWitness.stack = [witness_script] - spend_tx.rehash() # Now test a premature spend. self.generate(self.nodes[0], 98) @@ -1456,7 +1416,6 @@ class SegWitTest(BitcoinTestFramework): tx = CTransaction() tx.vin.append(CTxIn(COutPoint(utxo.sha256, utxo.n), b"")) tx.vout.append(CTxOut(utxo.nValue - 1000, script_pkh)) - tx.rehash() # Confirm it in a block. block = self.build_next_block() @@ -1542,7 +1501,6 @@ class SegWitTest(BitcoinTestFramework): tx = CTransaction() tx.vin.append(CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b"")) tx.vout.append(CTxOut(self.utxo[0].nValue - 1000, script_pubkey)) - tx.rehash() test_transaction_acceptance(self.nodes[0], self.test_node, tx, with_witness=True, accepted=True) # Mine this transaction in preparation for following tests. @@ -1637,7 +1595,6 @@ class SegWitTest(BitcoinTestFramework): sign_p2pk_witness_input(witness_script, tx, i, hashtype, temp_utxos[i].nValue, key) if (hashtype == SIGHASH_SINGLE and i >= num_outputs): used_sighash_single_out_of_bounds = True - tx.rehash() for i in range(num_outputs): temp_utxos.append(UTXO(tx.sha256, i, split_value)) temp_utxos = temp_utxos[num_inputs:] @@ -1676,7 +1633,6 @@ class SegWitTest(BitcoinTestFramework): # Check that we can't have a scriptSig tx2.vin[0].scriptSig = CScript([signature, pubkey]) - tx2.rehash() block = self.build_next_block() self.update_witness_block_with_transactions(block, [tx, tx2]) test_witness_block(self.nodes[0], self.test_node, block, accepted=False, @@ -1687,7 +1643,6 @@ class SegWitTest(BitcoinTestFramework): tx2.wit.vtxinwit.append(CTxInWitness()) tx2.wit.vtxinwit[0].scriptWitness.stack = [signature, pubkey] tx2.vin[0].scriptSig = b"" - tx2.rehash() self.update_witness_block_with_transactions(block, [tx2]) test_witness_block(self.nodes[0], self.test_node, block, accepted=True) @@ -1731,7 +1686,6 @@ class SegWitTest(BitcoinTestFramework): tx = CTransaction() tx.vin.append(CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b"")) tx.vout.append(CTxOut(self.utxo[0].nValue - 1000, script_pubkey)) - tx.rehash() test_transaction_acceptance(self.nodes[0], self.test_node, tx, False, True) self.generate(self.nodes[0], 1) @@ -1745,7 +1699,6 @@ class SegWitTest(BitcoinTestFramework): tx2.vout.append(CTxOut(tx.vout[0].nValue - 1000, script_pubkey)) tx2.wit.vtxinwit.append(CTxInWitness()) tx2.wit.vtxinwit[0].scriptWitness.stack = [b'a' * 400] - tx2.rehash() # This will be rejected due to a policy check: # No witness is allowed, since it is not a witness program but a p2sh program test_transaction_acceptance(self.nodes[1], self.std_node, tx2, True, False, 'bad-witness-nonstandard') @@ -1757,7 +1710,6 @@ class SegWitTest(BitcoinTestFramework): tx3 = CTransaction() tx3.vin.append(CTxIn(COutPoint(tx2.sha256, 0), CScript([p2sh_program]))) tx3.vout.append(CTxOut(tx2.vout[0].nValue - 1000, CScript([OP_TRUE, OP_DROP] * 15 + [OP_TRUE]))) - tx3.rehash() test_transaction_acceptance(self.nodes[0], self.test_node, tx2, False, True) test_transaction_acceptance(self.nodes[0], self.test_node, tx3, False, True) @@ -1791,7 +1743,6 @@ class SegWitTest(BitcoinTestFramework): p2wsh_scripts.append(p2wsh) tx.vout.append(CTxOut(outputvalue, p2wsh)) tx.vout.append(CTxOut(outputvalue, script_to_p2sh_script(p2wsh))) - tx.rehash() txid = tx.sha256 test_transaction_acceptance(self.nodes[0], self.test_node, tx, with_witness=False, accepted=True) @@ -1805,13 +1756,11 @@ class SegWitTest(BitcoinTestFramework): p2wsh_tx.vin.append(CTxIn(COutPoint(txid, i * 2))) p2wsh_tx.vout.append(CTxOut(outputvalue - 5000, CScript([OP_0, hash160(b"")]))) p2wsh_tx.wit.vtxinwit.append(CTxInWitness()) - p2wsh_tx.rehash() p2wsh_txs.append(p2wsh_tx) p2sh_tx = CTransaction() p2sh_tx.vin.append(CTxIn(COutPoint(txid, i * 2 + 1), CScript([p2wsh_scripts[i]]))) p2sh_tx.vout.append(CTxOut(outputvalue - 5000, CScript([OP_0, hash160(b"")]))) p2sh_tx.wit.vtxinwit.append(CTxInWitness()) - p2sh_tx.rehash() p2sh_txs.append(p2sh_tx) # Testing native P2WSH @@ -1902,7 +1851,6 @@ class SegWitTest(BitcoinTestFramework): tx.vout.append(CTxOut(split_value, script_pubkey)) tx.vout[-2].scriptPubKey = script_pubkey_toomany tx.vout[-1].scriptPubKey = script_pubkey_justright - tx.rehash() block_1 = self.build_next_block() self.update_witness_block_with_transactions(block_1, [tx]) @@ -1919,7 +1867,6 @@ class SegWitTest(BitcoinTestFramework): total_value += tx.vout[i].nValue tx2.wit.vtxinwit[-1].scriptWitness.stack = [witness_script_toomany] tx2.vout.append(CTxOut(total_value, CScript([OP_TRUE]))) - tx2.rehash() block_2 = self.build_next_block() self.update_witness_block_with_transactions(block_2, [tx2]) @@ -1933,7 +1880,6 @@ class SegWitTest(BitcoinTestFramework): tx2.vin.pop() tx2.wit.vtxinwit.pop() tx2.vout[0].nValue -= tx.vout[-2].nValue - tx2.rehash() block_3 = self.build_next_block() self.update_witness_block_with_transactions(block_3, [tx2]) test_witness_block(self.nodes[0], self.test_node, block_3, accepted=False, reason='bad-blk-sigops') @@ -1941,7 +1887,6 @@ class SegWitTest(BitcoinTestFramework): # If we drop the last checksig in this output, the tx should succeed. block_4 = self.build_next_block() tx2.vout[-1].scriptPubKey = CScript([OP_CHECKSIG] * (checksig_count - 1)) - tx2.rehash() self.update_witness_block_with_transactions(block_4, [tx2]) test_witness_block(self.nodes[0], self.test_node, block_4, accepted=True) @@ -1957,7 +1902,6 @@ class SegWitTest(BitcoinTestFramework): tx2.vin.append(CTxIn(COutPoint(tx.sha256, outputs - 1), b"")) tx2.wit.vtxinwit.append(CTxInWitness()) tx2.wit.vtxinwit[-1].scriptWitness.stack = [witness_script_justright] - tx2.rehash() self.update_witness_block_with_transactions(block_5, [tx2]) test_witness_block(self.nodes[0], self.test_node, block_5, accepted=True) @@ -2022,7 +1966,6 @@ class SegWitTest(BitcoinTestFramework): tx = CTransaction() tx.vin.append(CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b"")) tx.vout.append(CTxOut(self.utxo[0].nValue - 1000, script_pubkey)) - tx.rehash() # Create a Segwit transaction tx2 = CTransaction() @@ -2030,7 +1973,6 @@ class SegWitTest(BitcoinTestFramework): tx2.vout.append(CTxOut(tx.vout[0].nValue - 1000, script_pubkey)) tx2.wit.vtxinwit.append(CTxInWitness()) tx2.wit.vtxinwit[0].scriptWitness.stack = [witness_script] - tx2.rehash() # Announce Segwit transaction with wtxid # and wait for getdata diff --git a/test/functional/test_framework/blocktools.py b/test/functional/test_framework/blocktools.py index 182befd59c..d2655efd03 100644 --- a/test/functional/test_framework/blocktools.py +++ b/test/functional/test_framework/blocktools.py @@ -134,7 +134,6 @@ def add_witness_commitment(block, nonce=0): # witness commitment is the last OP_RETURN output in coinbase block.vtx[0].vout.append(CTxOut(0, get_witness_script(witness_root, witness_nonce))) - block.vtx[0].rehash() block.hashMerkleRoot = block.calc_merkle_root() block.rehash() @@ -176,7 +175,6 @@ def create_coinbase(height, pubkey=None, *, script_pubkey=None, extra_output_scr coinbaseoutput2.nValue = 0 coinbaseoutput2.scriptPubKey = extra_output_script coinbase.vout.append(coinbaseoutput2) - coinbase.calc_sha256() return coinbase def create_tx_with_script(prevtx, n, script_sig=b"", *, amount, output_script=None): @@ -191,7 +189,6 @@ def create_tx_with_script(prevtx, n, script_sig=b"", *, amount, output_script=No assert n < len(prevtx.vout) tx.vin.append(CTxIn(COutPoint(prevtx.sha256, n), script_sig, SEQUENCE_FINAL)) tx.vout.append(CTxOut(amount, output_script)) - tx.calc_sha256() return tx def get_legacy_sigopcount_block(block, accurate=True): diff --git a/test/functional/test_framework/messages.py b/test/functional/test_framework/messages.py index 90830cb71a..f83cb7a53d 100755 --- a/test/functional/test_framework/messages.py +++ b/test/functional/test_framework/messages.py @@ -682,7 +682,6 @@ class CTransaction: return uint256_from_str(hash256(self.serialize_with_witness())) def is_valid(self): - self.calc_sha256() for tout in self.vout: if tout.nValue < 0 or tout.nValue > 21000000 * COIN: return False @@ -810,7 +809,6 @@ class CBlock(CBlockHeader): def calc_merkle_root(self): hashes = [] for tx in self.vtx: - tx.calc_sha256() hashes.append(ser_uint256(tx.sha256)) return self.get_merkle_root(hashes) diff --git a/test/functional/test_framework/script.py b/test/functional/test_framework/script.py index b7783eb3a8..f3cee7c66d 100644 --- a/test/functional/test_framework/script.py +++ b/test/functional/test_framework/script.py @@ -694,7 +694,6 @@ def sign_input_legacy(tx, input_index, input_scriptpubkey, privkey, sighash_type assert err is None der_sig = privkey.sign_ecdsa(sighash) tx.vin[input_index].scriptSig = bytes(CScript([der_sig + bytes([sighash_type])])) + tx.vin[input_index].scriptSig - tx.rehash() def sign_input_segwitv0(tx, input_index, input_scriptpubkey, input_amount, privkey, sighash_type=SIGHASH_ALL): """Add segwitv0 ECDSA signature for a given transaction input. Note that the signature @@ -703,7 +702,6 @@ def sign_input_segwitv0(tx, input_index, input_scriptpubkey, input_amount, privk sighash = SegwitV0SignatureHash(input_scriptpubkey, tx, input_index, sighash_type, input_amount) der_sig = privkey.sign_ecdsa(sighash) tx.wit.vtxinwit[input_index].scriptWitness.stack.insert(0, der_sig + bytes([sighash_type])) - tx.rehash() # TODO: Allow cached hashPrevouts/hashSequence/hashOutputs to be provided. # Performance optimization probably not necessary for python tests, however.