mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-10 11:57:28 -03:00
test: refactor: take use of create_block
txlist parameter
Passing a list of transactions `txlist` to `create_block` appends them to the block, hence we don't need to do that manually anymore. The merkle root calculation can also be removed, since this is done in the end of the helper.
This commit is contained in:
parent
ae9df4ef93
commit
df5d783aef
11 changed files with 19 additions and 56 deletions
|
@ -122,10 +122,8 @@ class AssumeValidTest(BitcoinTestFramework):
|
|||
tx.vout.append(CTxOut(49 * 100000000, CScript([OP_TRUE])))
|
||||
tx.calc_sha256()
|
||||
|
||||
block102 = create_block(self.tip, create_coinbase(height), self.block_time)
|
||||
block102 = create_block(self.tip, create_coinbase(height), self.block_time, txlist=[tx])
|
||||
self.block_time += 1
|
||||
block102.vtx.extend([tx])
|
||||
block102.hashMerkleRoot = block102.calc_merkle_root()
|
||||
block102.solve()
|
||||
self.blocks.append(block102)
|
||||
self.tip = block102.sha256
|
||||
|
|
|
@ -388,9 +388,7 @@ class BIP68Test(BitcoinTestFramework):
|
|||
assert_raises_rpc_error(-26, NOT_FINAL_ERROR, self.nodes[0].sendrawtransaction, tx3.serialize().hex())
|
||||
|
||||
# make a block that violates bip68; ensure that the tip updates
|
||||
block = create_block(tmpl=self.nodes[0].getblocktemplate(NORMAL_GBT_REQUEST_PARAMS))
|
||||
block.vtx.extend([tx1, tx2, tx3])
|
||||
block.hashMerkleRoot = block.calc_merkle_root()
|
||||
block = create_block(tmpl=self.nodes[0].getblocktemplate(NORMAL_GBT_REQUEST_PARAMS), txlist=[tx1, tx2, tx3])
|
||||
add_witness_commitment(block)
|
||||
block.solve()
|
||||
|
||||
|
|
|
@ -1361,11 +1361,10 @@ class FullBlockTest(BitcoinTestFramework):
|
|||
else:
|
||||
coinbase.vout[0].nValue += spend.vout[0].nValue - 1 # all but one satoshi to fees
|
||||
coinbase.rehash()
|
||||
block = create_block(base_block_hash, coinbase, block_time, version=version)
|
||||
tx = self.create_tx(spend, 0, 1, script) # spend 1 satoshi
|
||||
self.sign_tx(tx, spend)
|
||||
self.add_transactions_to_block(block, [tx])
|
||||
block.hashMerkleRoot = block.calc_merkle_root()
|
||||
tx.rehash()
|
||||
block = create_block(base_block_hash, coinbase, block_time, version=version, txlist=[tx])
|
||||
# Block is created. Find a valid nonce.
|
||||
block.solve()
|
||||
self.tip = block
|
||||
|
|
|
@ -120,9 +120,7 @@ class BIP65Test(BitcoinTestFramework):
|
|||
|
||||
tip = self.nodes[0].getbestblockhash()
|
||||
block_time = self.nodes[0].getblockheader(tip)['mediantime'] + 1
|
||||
block = create_block(int(tip, 16), create_coinbase(CLTV_HEIGHT - 1), block_time, version=3)
|
||||
block.vtx.extend(invalid_cltv_txs)
|
||||
block.hashMerkleRoot = block.calc_merkle_root()
|
||||
block = create_block(int(tip, 16), create_coinbase(CLTV_HEIGHT - 1), block_time, version=3, txlist=invalid_cltv_txs)
|
||||
block.solve()
|
||||
|
||||
self.test_cltv_info(is_active=False) # Not active as of current tip and next block does not need to obey rules
|
||||
|
|
|
@ -173,9 +173,7 @@ class BIP68_112_113Test(BitcoinTestFramework):
|
|||
return test_blocks
|
||||
|
||||
def create_test_block(self, txs):
|
||||
block = create_block(self.tip, create_coinbase(self.tipheight + 1), self.last_block_time + 600)
|
||||
block.vtx.extend(txs)
|
||||
block.hashMerkleRoot = block.calc_merkle_root()
|
||||
block = create_block(self.tip, create_coinbase(self.tipheight + 1), self.last_block_time + 600, txlist=txs)
|
||||
block.solve()
|
||||
return block
|
||||
|
||||
|
|
|
@ -85,9 +85,7 @@ class BIP66Test(BitcoinTestFramework):
|
|||
|
||||
tip = self.nodes[0].getbestblockhash()
|
||||
block_time = self.nodes[0].getblockheader(tip)['mediantime'] + 1
|
||||
block = create_block(int(tip, 16), create_coinbase(DERSIG_HEIGHT - 1), block_time)
|
||||
block.vtx.append(spendtx)
|
||||
block.hashMerkleRoot = block.calc_merkle_root()
|
||||
block = create_block(int(tip, 16), create_coinbase(DERSIG_HEIGHT - 1), block_time, txlist=[spendtx])
|
||||
block.solve()
|
||||
|
||||
assert_equal(self.nodes[0].getblockcount(), DERSIG_HEIGHT - 2)
|
||||
|
|
|
@ -1266,11 +1266,8 @@ class TaprootTest(BitcoinTestFramework):
|
|||
# transactions.
|
||||
extra_output_script = CScript([OP_CHECKSIG]*((MAX_BLOCK_SIGOPS_WEIGHT - sigops_weight) // WITNESS_SCALE_FACTOR))
|
||||
|
||||
block = create_block(self.tip, create_coinbase(self.lastblockheight + 1, pubkey=cb_pubkey, extra_output_script=extra_output_script, fees=fees), self.lastblocktime + 1)
|
||||
for tx in txs:
|
||||
tx.rehash()
|
||||
block.vtx.append(tx)
|
||||
block.hashMerkleRoot = block.calc_merkle_root()
|
||||
coinbase_tx = create_coinbase(self.lastblockheight + 1, pubkey=cb_pubkey, extra_output_script=extra_output_script, fees=fees)
|
||||
block = create_block(self.tip, coinbase_tx, self.lastblocktime + 1, txlist=txs)
|
||||
witness and add_witness_commitment(block)
|
||||
block.solve()
|
||||
block_response = node.submitblock(block.serialize().hex())
|
||||
|
|
|
@ -18,7 +18,6 @@ from test_framework.test_framework import BitcoinTestFramework
|
|||
from test_framework.messages import (
|
||||
CTransaction,
|
||||
hash256,
|
||||
tx_from_hex,
|
||||
)
|
||||
from test_framework.util import (
|
||||
assert_equal,
|
||||
|
@ -402,12 +401,8 @@ class ZMQTest (BitcoinTestFramework):
|
|||
raw_tx = self.nodes[0].getrawtransaction(orig_txid)
|
||||
bump_info = self.nodes[0].bumpfee(orig_txid)
|
||||
# Mine the pre-bump tx
|
||||
block = create_block(int(self.nodes[0].getbestblockhash(), 16), create_coinbase(self.nodes[0].getblockcount()+1))
|
||||
tx = tx_from_hex(raw_tx)
|
||||
block.vtx.append(tx)
|
||||
for txid in more_tx:
|
||||
tx = tx_from_hex(self.nodes[0].getrawtransaction(txid))
|
||||
block.vtx.append(tx)
|
||||
txs_to_add = [raw_tx] + [self.nodes[0].getrawtransaction(txid) for txid in more_tx]
|
||||
block = create_block(int(self.nodes[0].getbestblockhash(), 16), create_coinbase(self.nodes[0].getblockcount()+1), txlist=txs_to_add)
|
||||
add_witness_commitment(block)
|
||||
block.solve()
|
||||
assert_equal(self.nodes[0].submitblock(block.serialize().hex()), None)
|
||||
|
|
|
@ -66,15 +66,11 @@ class InvalidBlockRequestTest(BitcoinTestFramework):
|
|||
# For more information on merkle-root malleability see src/consensus/merkle.cpp.
|
||||
self.log.info("Test merkle root malleability.")
|
||||
|
||||
block2 = create_block(tip, create_coinbase(height), block_time)
|
||||
block_time += 1
|
||||
|
||||
# b'0x51' is OP_TRUE
|
||||
tx1 = create_tx_with_script(block1.vtx[0], 0, script_sig=b'\x51', amount=50 * COIN)
|
||||
tx2 = create_tx_with_script(tx1, 0, script_sig=b'\x51', amount=50 * COIN)
|
||||
|
||||
block2.vtx.extend([tx1, tx2])
|
||||
block2.hashMerkleRoot = block2.calc_merkle_root()
|
||||
block2 = create_block(tip, create_coinbase(height), block_time, txlist=[tx1, tx2])
|
||||
block_time += 1
|
||||
block2.solve()
|
||||
orig_hash = block2.sha256
|
||||
block2_orig = copy.deepcopy(block2)
|
||||
|
@ -99,12 +95,8 @@ class InvalidBlockRequestTest(BitcoinTestFramework):
|
|||
|
||||
self.log.info("Test very broken block.")
|
||||
|
||||
block3 = create_block(tip, create_coinbase(height), block_time)
|
||||
block3 = create_block(tip, create_coinbase(height, nValue=100), block_time)
|
||||
block_time += 1
|
||||
block3.vtx[0].vout[0].nValue = 100 * COIN # Too high!
|
||||
block3.vtx[0].sha256 = None
|
||||
block3.vtx[0].calc_sha256()
|
||||
block3.hashMerkleRoot = block3.calc_merkle_root()
|
||||
block3.solve()
|
||||
|
||||
peer.send_blocks_and_test([block3], node, success=False, reject_reason='bad-cb-amount')
|
||||
|
@ -123,14 +115,10 @@ class InvalidBlockRequestTest(BitcoinTestFramework):
|
|||
|
||||
# Complete testing of CVE-2018-17144, by checking for the inflation bug.
|
||||
# Create a block that spends the output of a tx in a previous block.
|
||||
block4 = create_block(tip, create_coinbase(height), block_time)
|
||||
tx3 = create_tx_with_script(tx2, 0, script_sig=b'\x51', amount=50 * COIN)
|
||||
|
||||
# Duplicates input
|
||||
tx3.vin.append(tx3.vin[0])
|
||||
tx3.vin.append(tx3.vin[0]) # Duplicates input
|
||||
tx3.rehash()
|
||||
block4.vtx.append(tx3)
|
||||
block4.hashMerkleRoot = block4.calc_merkle_root()
|
||||
block4 = create_block(tip, create_coinbase(height), block_time, txlist=[tx3])
|
||||
block4.solve()
|
||||
self.log.info("Test inflation by duplicating input")
|
||||
peer.send_blocks_and_test([block4], node, success=False, reject_reason='bad-txns-inputs-duplicate')
|
||||
|
@ -140,7 +128,6 @@ class InvalidBlockRequestTest(BitcoinTestFramework):
|
|||
node.setmocktime(t)
|
||||
# Set block time +1 second past max future validity
|
||||
block = create_block(tip, create_coinbase(height), t + MAX_FUTURE_BLOCK_TIME + 1)
|
||||
block.hashMerkleRoot = block.calc_merkle_root()
|
||||
block.solve()
|
||||
# Need force_send because the block will get rejected without a getdata otherwise
|
||||
peer.send_blocks_and_test([block], node, force_send=True, success=False, reject_reason='time-too-new')
|
||||
|
|
|
@ -225,10 +225,9 @@ class AcceptBlockTest(BitcoinTestFramework):
|
|||
block_289f.solve()
|
||||
block_290f = create_block(block_289f.sha256, create_coinbase(290), block_289f.nTime+1)
|
||||
block_290f.solve()
|
||||
block_291 = create_block(block_290f.sha256, create_coinbase(291), block_290f.nTime+1)
|
||||
# block_291 spends a coinbase below maturity!
|
||||
block_291.vtx.append(create_tx_with_script(block_290f.vtx[0], 0, script_sig=b"42", amount=1))
|
||||
block_291.hashMerkleRoot = block_291.calc_merkle_root()
|
||||
tx_to_add = create_tx_with_script(block_290f.vtx[0], 0, script_sig=b"42", amount=1)
|
||||
block_291 = create_block(block_290f.sha256, create_coinbase(291), block_290f.nTime+1, txlist=[tx_to_add])
|
||||
block_291.solve()
|
||||
block_292 = create_block(block_291.sha256, create_coinbase(292), block_291.nTime+1)
|
||||
block_292.solve()
|
||||
|
|
|
@ -24,7 +24,6 @@ from test_framework.blocktools import (
|
|||
)
|
||||
from test_framework.messages import (
|
||||
BIP125_SEQUENCE_NUMBER,
|
||||
tx_from_hex,
|
||||
)
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import (
|
||||
|
@ -588,13 +587,10 @@ def spend_one_input(node, dest_address, change_size=Decimal("0.00049000")):
|
|||
|
||||
|
||||
def submit_block_with_tx(node, tx):
|
||||
ctx = tx_from_hex(tx)
|
||||
tip = node.getbestblockhash()
|
||||
height = node.getblockcount() + 1
|
||||
block_time = node.getblockheader(tip)["mediantime"] + 1
|
||||
block = create_block(int(tip, 16), create_coinbase(height), block_time)
|
||||
block.vtx.append(ctx)
|
||||
block.hashMerkleRoot = block.calc_merkle_root()
|
||||
block = create_block(int(tip, 16), create_coinbase(height), block_time, txlist=[tx])
|
||||
add_witness_commitment(block)
|
||||
block.solve()
|
||||
node.submitblock(block.serialize().hex())
|
||||
|
|
Loading…
Reference in a new issue