Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F14864885
D17691.id52749.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
40 KB
Subscribers
None
D17691.id52749.diff
View Options
diff --git a/test/functional/abc-minimaldata.py b/test/functional/abc-minimaldata.py
--- a/test/functional/abc-minimaldata.py
+++ b/test/functional/abc-minimaldata.py
@@ -16,7 +16,6 @@
create_block,
create_coinbase,
create_tx_with_script,
- make_conform_to_ctor,
)
from test_framework.messages import (
CBlock,
@@ -73,10 +72,12 @@
block_height = self.block_heights[parent.sha256] + 1
block_time = (parent.nTime + 1) if nTime is None else nTime
- block = create_block(parent.sha256, create_coinbase(block_height), block_time)
- block.vtx.extend(transactions)
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(
+ parent.sha256,
+ create_coinbase(block_height),
+ block_time,
+ txlist=transactions,
+ )
block.solve()
self.block_heights[block.sha256] = block_height
return block
diff --git a/test/functional/abc-schnorr.py b/test/functional/abc-schnorr.py
--- a/test/functional/abc-schnorr.py
+++ b/test/functional/abc-schnorr.py
@@ -14,7 +14,6 @@
create_block,
create_coinbase,
create_tx_with_script,
- make_conform_to_ctor,
)
from test_framework.key import ECKey
from test_framework.messages import (
@@ -91,10 +90,12 @@
block_height = self.block_heights[parent.sha256] + 1
block_time = (parent.nTime + 1) if nTime is None else nTime
- block = create_block(parent.sha256, create_coinbase(block_height), block_time)
- block.vtx.extend(transactions)
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(
+ parent.sha256,
+ create_coinbase(block_height),
+ block_time,
+ txlist=transactions,
+ )
block.solve()
self.block_heights[block.sha256] = block_height
return block
diff --git a/test/functional/abc-schnorrmultisig.py b/test/functional/abc-schnorrmultisig.py
--- a/test/functional/abc-schnorrmultisig.py
+++ b/test/functional/abc-schnorrmultisig.py
@@ -17,7 +17,6 @@
create_block,
create_coinbase,
create_tx_with_script,
- make_conform_to_ctor,
)
from test_framework.key import ECKey
from test_framework.messages import (
@@ -88,10 +87,12 @@
block_height = self.block_heights[parent.sha256] + 1
block_time = (parent.nTime + 1) if nTime is None else nTime
- block = create_block(parent.sha256, create_coinbase(block_height), block_time)
- block.vtx.extend(transactions)
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(
+ parent.sha256,
+ create_coinbase(block_height),
+ block_time,
+ txlist=transactions,
+ )
block.solve()
self.block_heights[block.sha256] = block_height
return block
diff --git a/test/functional/chronik_block_info.py b/test/functional/chronik_block_info.py
--- a/test/functional/chronik_block_info.py
+++ b/test/functional/chronik_block_info.py
@@ -11,12 +11,7 @@
P2SH_OP_TRUE,
SCRIPTSIG_OP_TRUE,
)
-from test_framework.blocktools import (
- COINBASE_MATURITY,
- create_block,
- create_coinbase,
- make_conform_to_ctor,
-)
+from test_framework.blocktools import COINBASE_MATURITY, create_block, create_coinbase
from test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut
from test_framework.p2p import P2PDataStore
from test_framework.script import OP_RETURN, CScript
@@ -102,11 +97,11 @@
tx2.rehash()
block = create_block(
- int(prev_hash, 16), create_coinbase(102, b"\x03" * 33), 1300000500
+ int(prev_hash, 16),
+ create_coinbase(102, b"\x03" * 33),
+ 1300000500,
+ txlist=[tx, tx2],
)
- block.vtx += [tx, tx2]
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
node.syncwithvalidationinterfacequeue()
diff --git a/test/functional/chronik_block_txs.py b/test/functional/chronik_block_txs.py
--- a/test/functional/chronik_block_txs.py
+++ b/test/functional/chronik_block_txs.py
@@ -16,7 +16,6 @@
GENESIS_BLOCK_HASH,
create_block,
create_coinbase,
- make_conform_to_ctor,
)
from test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut
from test_framework.p2p import P2PDataStore
@@ -126,10 +125,7 @@
tx_coinbase = create_coinbase(102, b"\x03" * 33)
- block = create_block(int(tip, 16), tx_coinbase, 1300000500)
- block.vtx += [tx1, tx2]
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(int(tip, 16), tx_coinbase, 1300000500, txlist=[tx1, tx2])
block.solve()
peer.send_blocks_and_test([block], node)
node.syncwithvalidationinterfacequeue()
diff --git a/test/functional/chronik_lokad_id_group.py b/test/functional/chronik_lokad_id_group.py
--- a/test/functional/chronik_lokad_id_group.py
+++ b/test/functional/chronik_lokad_id_group.py
@@ -180,9 +180,12 @@
]
tx3_conflict.rehash()
- block = create_block(int(blockhash, 16), create_coinbase(103), mocktime + 100)
- block.vtx += [tx3_conflict]
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(
+ int(blockhash, 16),
+ create_coinbase(103),
+ mocktime + 100,
+ txlist=[tx3_conflict],
+ )
block.solve()
peer.send_blocks_and_test([block], node)
node.syncwithvalidationinterfacequeue()
diff --git a/test/functional/chronik_mempool_conflicts.py b/test/functional/chronik_mempool_conflicts.py
--- a/test/functional/chronik_mempool_conflicts.py
+++ b/test/functional/chronik_mempool_conflicts.py
@@ -88,9 +88,8 @@
block = create_block(
int(block_hashes[-1], 16),
create_coinbase(block_height, b"\x03" * 33),
+ txlist=[conflict_tx],
)
- block.vtx += [conflict_tx]
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
node.syncwithvalidationinterfacequeue()
diff --git a/test/functional/chronik_plugin_groups.py b/test/functional/chronik_plugin_groups.py
--- a/test/functional/chronik_plugin_groups.py
+++ b/test/functional/chronik_plugin_groups.py
@@ -13,12 +13,7 @@
P2SH_OP_TRUE,
SCRIPTSIG_OP_TRUE,
)
-from test_framework.blocktools import (
- COINBASE_MATURITY,
- create_block,
- create_coinbase,
- make_conform_to_ctor,
-)
+from test_framework.blocktools import COINBASE_MATURITY, create_block, create_coinbase
from test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut
from test_framework.p2p import P2PDataStore
from test_framework.script import OP_RETURN, CScript
@@ -294,10 +289,8 @@
block = create_block(
int(block_hashes[-1], 16),
create_coinbase(block_height, b"\x03" * 33),
+ txlist=[tx1, tx2, tx3] + extra_txs,
)
- block.vtx += [tx1, tx2, tx3] + extra_txs
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
diff --git a/test/functional/chronik_script_history.py b/test/functional/chronik_script_history.py
--- a/test/functional/chronik_script_history.py
+++ b/test/functional/chronik_script_history.py
@@ -10,12 +10,7 @@
P2SH_OP_TRUE,
SCRIPTSIG_OP_TRUE,
)
-from test_framework.blocktools import (
- GENESIS_CB_PK,
- create_block,
- create_coinbase,
- make_conform_to_ctor,
-)
+from test_framework.blocktools import GENESIS_CB_PK, create_block, create_coinbase
from test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut
from test_framework.p2p import P2PDataStore
from test_framework.script import OP_RETURN, CScript
@@ -263,11 +258,13 @@
coinbase_tx = create_coinbase(height)
coinbase_tx.vout[0].scriptPubKey = P2SH_OP_TRUE
coinbase_tx.rehash()
- block = create_block(int(blockhashes[-1], 16), coinbase_tx, mocktime + 1100)
- block.nVersion = 5
- block.vtx += mine_txs
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(
+ int(blockhashes[-1], 16),
+ coinbase_tx,
+ mocktime + 1100,
+ version=5,
+ txlist=mine_txs,
+ )
block.solve()
peer.send_blocks_and_test([block], node)
diff --git a/test/functional/chronik_script_unconfirmed_txs.py b/test/functional/chronik_script_unconfirmed_txs.py
--- a/test/functional/chronik_script_unconfirmed_txs.py
+++ b/test/functional/chronik_script_unconfirmed_txs.py
@@ -10,12 +10,7 @@
P2SH_OP_TRUE,
SCRIPTSIG_OP_TRUE,
)
-from test_framework.blocktools import (
- GENESIS_CB_PK,
- create_block,
- create_coinbase,
- make_conform_to_ctor,
-)
+from test_framework.blocktools import GENESIS_CB_PK, create_block, create_coinbase
from test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut
from test_framework.p2p import P2PDataStore
from test_framework.script import OP_RETURN, CScript
@@ -203,10 +198,9 @@
coinbase_tx = create_coinbase(height)
coinbase_tx.vout[0].scriptPubKey = P2SH_OP_TRUE
coinbase_tx.rehash()
- block = create_block(int(blockhashes[-1], 16), coinbase_tx, mocktime + 1100)
- block.vtx += mine_txs
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(
+ int(blockhashes[-1], 16), coinbase_tx, mocktime + 1100, txlist=mine_txs
+ )
block.solve()
peer.send_blocks_and_test([block], node)
node.syncwithvalidationinterfacequeue()
diff --git a/test/functional/chronik_script_utxos.py b/test/functional/chronik_script_utxos.py
--- a/test/functional/chronik_script_utxos.py
+++ b/test/functional/chronik_script_utxos.py
@@ -225,10 +225,11 @@
# Mining conflicting tx returns the mempool UTXO spent by tx3 to the mempool
block = create_block(
- int(tip, 16), create_coinbase(103, b"\x03" * 33), 1300000500
+ int(tip, 16),
+ create_coinbase(103, b"\x03" * 33),
+ 1300000500,
+ txlist=[tx3_conflict],
)
- block.vtx += [tx3_conflict]
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
node.syncwithvalidationinterfacequeue()
diff --git a/test/functional/chronik_scripthash.py b/test/functional/chronik_scripthash.py
--- a/test/functional/chronik_scripthash.py
+++ b/test/functional/chronik_scripthash.py
@@ -15,7 +15,6 @@
GENESIS_CB_SCRIPT_PUBKEY,
GENESIS_CB_TXID,
create_block,
- make_conform_to_ctor,
)
from test_framework.hash import hex_be_sha256
from test_framework.messages import XEC, CTransaction, FromHex, ToHex
@@ -368,10 +367,9 @@
replacement_tx = wallet.create_self_transfer(utxo_to_spend=utxo_to_spend1)
assert replacement_tx["txid"] != mempool_tx_to_be_replaced["txid"]
- block = create_block(tmpl=self.node.getblocktemplate())
- block.vtx.append(replacement_tx["tx"])
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(
+ tmpl=self.node.getblocktemplate(), txlist=[replacement_tx["tx"]]
+ )
block.solve()
self.node.submitblock(ToHex(block))
@@ -416,10 +414,7 @@
replacement_tx.vout[out_idx].scriptPubKey = b"\x21\x03" + 32 * b"\xee" + b"\xac"
replacement_tx.rehash()
- block = create_block(tmpl=self.node.getblocktemplate())
- block.vtx.append(replacement_tx)
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(tmpl=self.node.getblocktemplate(), txlist=[replacement_tx])
block.solve()
self.node.submitblock(ToHex(block))
diff --git a/test/functional/chronik_shutdown.py b/test/functional/chronik_shutdown.py
--- a/test/functional/chronik_shutdown.py
+++ b/test/functional/chronik_shutdown.py
@@ -10,12 +10,7 @@
in a segfault.
"""
-from test_framework.blocktools import (
- GENESIS_BLOCK_HASH,
- create_block,
- create_coinbase,
- make_conform_to_ctor,
-)
+from test_framework.blocktools import GENESIS_BLOCK_HASH, create_block, create_coinbase
from test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut, msg_block
from test_framework.p2p import P2PDataStore
from test_framework.script import OP_TRUE, CScript
@@ -46,24 +41,25 @@
coinbase_tx.vout[0].scriptPubKey = CScript([OP_TRUE])
coinbase_tx.rehash()
coinbase_txs.append(coinbase_tx)
- block = create_block(int(last_block_hash, 16), coinbase_tx, mocktime + i)
+ txs = []
if i > 101:
txid = coinbase_txs[i - 101].sha256
fan_tx = CTransaction()
fan_tx.vin = [CTxIn(COutPoint(txid, 0))]
fan_tx.vout = [CTxOut(1000, CScript([OP_TRUE]))] * 8000
fan_tx.rehash()
- block.vtx.append(fan_tx)
- for i in range(0, 7997, 3):
+ txs.append(fan_tx)
+ for j in range(0, 7997, 3):
tx = CTransaction()
tx.vin = [
- CTxIn(COutPoint(fan_tx.sha256, j)) for j in range(i, i + 3)
+ CTxIn(COutPoint(fan_tx.sha256, k)) for k in range(j, j + 3)
]
tx.vout = [CTxOut(1000, CScript([OP_TRUE]))]
tx.rehash()
- block.vtx.append(tx)
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
+ txs.append(tx)
+ block = create_block(
+ int(last_block_hash, 16), coinbase_tx, mocktime + i, txlist=txs
+ )
block.solve()
last_block_hash = block.hash
peer.send_message(msg_block(block))
diff --git a/test/functional/chronik_spent_by.py b/test/functional/chronik_spent_by.py
--- a/test/functional/chronik_spent_by.py
+++ b/test/functional/chronik_spent_by.py
@@ -10,12 +10,7 @@
ADDRESS_ECREG_UNSPENDABLE,
SCRIPTSIG_OP_TRUE,
)
-from test_framework.blocktools import (
- COINBASE_MATURITY,
- create_block,
- create_coinbase,
- make_conform_to_ctor,
-)
+from test_framework.blocktools import COINBASE_MATURITY, create_block, create_coinbase
from test_framework.hash import hash160
from test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut
from test_framework.p2p import P2PDataStore
@@ -162,11 +157,11 @@
# Block mines tx, tx2 and tx3_conflict
block = create_block(
- int(tip, 16), create_coinbase(102, b"\x03" * 33), 1300000500
+ int(tip, 16),
+ create_coinbase(102, b"\x03" * 33),
+ 1300000500,
+ txlist=[tx, tx2, tx3_conflict],
)
- block.vtx += [tx, tx2, tx3_conflict]
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
node.syncwithvalidationinterfacequeue()
diff --git a/test/functional/chronik_token_alp.py b/test/functional/chronik_token_alp.py
--- a/test/functional/chronik_token_alp.py
+++ b/test/functional/chronik_token_alp.py
@@ -11,12 +11,7 @@
P2SH_OP_TRUE,
SCRIPTSIG_OP_TRUE,
)
-from test_framework.blocktools import (
- COINBASE_MATURITY,
- create_block,
- create_coinbase,
- make_conform_to_ctor,
-)
+from test_framework.blocktools import COINBASE_MATURITY, create_block, create_coinbase
from test_framework.chronik.alp import (
alp_burn,
alp_genesis,
@@ -573,17 +568,15 @@
int(block_hashes[-1], 16),
create_coinbase(block_height, b"\x03" * 33),
1300000500,
+ txlist=[
+ genesis.tx,
+ mint.tx,
+ send.tx,
+ genesis2.tx,
+ multi.tx,
+ all_things.tx,
+ ],
)
- block.vtx += [
- genesis.tx,
- mint.tx,
- send.tx,
- genesis2.tx,
- multi.tx,
- all_things.tx,
- ]
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
node.syncwithvalidationinterfacequeue()
@@ -610,9 +603,8 @@
int(prev_hash, 16),
create_coinbase(block_height + block_idx, b"\x03" * 33),
1300000500 + block_idx,
+ txlist=[mined_tx.tx],
)
- block.vtx += [mined_tx.tx]
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
prev_hash = block.hash
peer.send_blocks_and_test([block], node)
@@ -628,9 +620,8 @@
int(prev_hash, 16),
create_coinbase(block_height + len(txs), b"\x03" * 33),
1300000500 + len(txs),
+ txlist=[all_things.tx],
)
- block.vtx += [all_things.tx]
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
node.syncwithvalidationinterfacequeue()
@@ -659,9 +650,8 @@
int(block_hashes[-1], 16),
create_coinbase(block_height, b"\x03" * 33),
1300000500,
+ txlist=[conflict_tx],
)
- block.vtx += [conflict_tx]
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
node.syncwithvalidationinterfacequeue()
diff --git a/test/functional/chronik_token_slp_mint_vault.py b/test/functional/chronik_token_slp_mint_vault.py
--- a/test/functional/chronik_token_slp_mint_vault.py
+++ b/test/functional/chronik_token_slp_mint_vault.py
@@ -11,12 +11,7 @@
P2SH_OP_TRUE,
SCRIPTSIG_OP_TRUE,
)
-from test_framework.blocktools import (
- COINBASE_MATURITY,
- create_block,
- create_coinbase,
- make_conform_to_ctor,
-)
+from test_framework.blocktools import COINBASE_MATURITY, create_block, create_coinbase
from test_framework.chronik.slp import slp_genesis, slp_mint_vault, slp_send
from test_framework.chronik.token_tx import TokenTx
from test_framework.hash import hash160
@@ -194,9 +189,8 @@
int(block_hashes[-1], 16),
create_coinbase(block_height, b"\x03" * 33),
1300000500,
+ txlist=[genesis.tx],
)
- block.vtx += [genesis.tx]
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
node.syncwithvalidationinterfacequeue()
@@ -308,10 +302,8 @@
int(block_hashes[-1], 16),
create_coinbase(block_height, b"\x03" * 33),
1300000500,
+ txlist=[genesis.tx, mint2.tx],
)
- block.vtx += [genesis.tx, mint2.tx]
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
node.syncwithvalidationinterfacequeue()
diff --git a/test/functional/chronik_tx.py b/test/functional/chronik_tx.py
--- a/test/functional/chronik_tx.py
+++ b/test/functional/chronik_tx.py
@@ -193,10 +193,11 @@
conflict_tx = CTransaction(tx2)
conflict_tx.nLockTime = 13
block = create_block(
- int(txblockhash, 16), create_coinbase(103, b"\x03" * 33), 1333333500
+ int(txblockhash, 16),
+ create_coinbase(103, b"\x03" * 33),
+ 1333333500,
+ txlist=[conflict_tx],
)
- block.vtx += [conflict_tx]
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
node.syncwithvalidationinterfacequeue()
diff --git a/test/functional/chronik_ws_script.py b/test/functional/chronik_ws_script.py
--- a/test/functional/chronik_ws_script.py
+++ b/test/functional/chronik_ws_script.py
@@ -9,12 +9,7 @@
SCRIPTSIG_OP_TRUE,
)
from test_framework.avatools import can_find_inv_in_poll, get_ava_p2p_interface
-from test_framework.blocktools import (
- COINBASE_MATURITY,
- create_block,
- create_coinbase,
- make_conform_to_ctor,
-)
+from test_framework.blocktools import COINBASE_MATURITY, create_block, create_coinbase
from test_framework.hash import hash160
from test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut
from test_framework.p2p import P2PDataStore
@@ -170,11 +165,11 @@
# Mine tx, tx2 and tx3_conflict
height = 102
block = create_block(
- int(tip, 16), create_coinbase(height, b"\x03" * 33), 1300000500
+ int(tip, 16),
+ create_coinbase(height, b"\x03" * 33),
+ 1300000500,
+ txlist=[tx, tx2, tx3_conflict],
)
- block.vtx += [tx, tx2, tx3_conflict]
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
node.syncwithvalidationinterfacequeue()
diff --git a/test/functional/feature_assumevalid.py b/test/functional/feature_assumevalid.py
--- a/test/functional/feature_assumevalid.py
+++ b/test/functional/feature_assumevalid.py
@@ -123,10 +123,10 @@
pad_tx(tx)
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
@@ -135,8 +135,9 @@
# Bury the assumed valid block 2100 deep
for _ in range(2100):
- block = create_block(self.tip, create_coinbase(height), self.block_time)
- block.nVersion = 4
+ block = create_block(
+ self.tip, create_coinbase(height), self.block_time, version=4
+ )
block.solve()
self.blocks.append(block)
self.tip = block.sha256
diff --git a/test/functional/feature_bip68_sequence.py b/test/functional/feature_bip68_sequence.py
--- a/test/functional/feature_bip68_sequence.py
+++ b/test/functional/feature_bip68_sequence.py
@@ -491,9 +491,9 @@
)
# make a block that violates bip68; ensure that the tip updates
- block = create_block(tmpl=self.nodes[0].getblocktemplate())
- block.vtx.extend(sorted([tx1, tx2, tx3], key=lambda tx: tx.get_id()))
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(
+ tmpl=self.nodes[0].getblocktemplate(), txlist=[tx1, tx2, tx3]
+ )
block.solve()
assert_equal(None, self.nodes[0].submitblock(ToHex(block)))
diff --git a/test/functional/feature_block.py b/test/functional/feature_block.py
--- a/test/functional/feature_block.py
+++ b/test/functional/feature_block.py
@@ -1264,12 +1264,13 @@
# all but one satoshi to fees
coinbase.vout[0].nValue += spend.vout[0].nValue - 1
coinbase.rehash()
- block = create_block(base_block_hash, coinbase, block_time, version=version)
# spend 1 satoshi
tx = self.create_tx(spend, 0, 1, script)
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
diff --git a/test/functional/feature_cltv.py b/test/functional/feature_cltv.py
--- a/test/functional/feature_cltv.py
+++ b/test/functional/feature_cltv.py
@@ -96,13 +96,13 @@
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)
- block.nVersion = 3
- block.vtx.append(fundtx)
- # include the -1 CLTV in block
- block.vtx.append(spendtx)
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(
+ int(tip, 16),
+ create_coinbase(CLTV_HEIGHT - 1),
+ block_time,
+ version=3,
+ txlist=[fundtx, spendtx],
+ )
block.solve()
peer.send_and_ping(msg_block(block))
@@ -112,8 +112,7 @@
self.log.info("Test that blocks must now be at least version 4")
tip = block.sha256
block_time += 1
- block = create_block(tip, create_coinbase(CLTV_HEIGHT), block_time)
- block.nVersion = 3
+ block = create_block(tip, create_coinbase(CLTV_HEIGHT), block_time, version=3)
block.solve()
with self.nodes[0].assert_debug_log(
@@ -164,10 +163,13 @@
tip = block.hash
block_time += 1
- block = create_block(block.sha256, create_coinbase(CLTV_HEIGHT + 1), block_time)
- block.nVersion = 4
- block.vtx.append(spendtx)
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(
+ block.sha256,
+ create_coinbase(CLTV_HEIGHT + 1),
+ block_time,
+ version=4,
+ txlist=[spendtx],
+ )
block.solve()
with self.nodes[0].assert_debug_log(
diff --git a/test/functional/feature_csv_activation.py b/test/functional/feature_csv_activation.py
--- a/test/functional/feature_csv_activation.py
+++ b/test/functional/feature_csv_activation.py
@@ -173,12 +173,12 @@
def create_test_block(self, txs, version=536870912):
block = create_block(
- self.tip, create_coinbase(self.tipheight + 1), self.last_block_time + 600
+ self.tip,
+ create_coinbase(self.tipheight + 1),
+ self.last_block_time + 600,
+ version=version,
+ txlist=txs,
)
- block.nVersion = version
- block.vtx.extend(txs)
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
return block
diff --git a/test/functional/feature_dersig.py b/test/functional/feature_dersig.py
--- a/test/functional/feature_dersig.py
+++ b/test/functional/feature_dersig.py
@@ -59,8 +59,9 @@
self.log.info("Test that blocks must now be at least version 3")
tip = self.nodes[0].getbestblockhash()
block_time = self.nodes[0].getblockheader(tip)["mediantime"] + 1
- block = create_block(int(tip, 16), create_coinbase(DERSIG_HEIGHT), block_time)
- block.nVersion = 2
+ block = create_block(
+ int(tip, 16), create_coinbase(DERSIG_HEIGHT), block_time, version=2
+ )
block.solve()
with self.nodes[0].assert_debug_log(
diff --git a/test/functional/feature_tx_version.py b/test/functional/feature_tx_version.py
--- a/test/functional/feature_tx_version.py
+++ b/test/functional/feature_tx_version.py
@@ -14,7 +14,6 @@
create_block,
create_coinbase,
create_tx_with_script,
- make_conform_to_ctor,
)
from test_framework.messages import CBlock, FromHex
from test_framework.p2p import P2PDataStore
@@ -132,11 +131,7 @@
coinbase.nVersion = coinbase_version
coinbase.rehash()
- block = create_block(prev_block.sha256, coinbase, block_time)
- if txs:
- block.vtx += txs
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(prev_block.sha256, coinbase, block_time, txlist=txs)
block.solve()
self.block_heights[block.sha256] = height
return block
diff --git a/test/functional/interface_zmq.py b/test/functional/interface_zmq.py
--- a/test/functional/interface_zmq.py
+++ b/test/functional/interface_zmq.py
@@ -7,11 +7,7 @@
from time import sleep
from test_framework.address import ADDRESS_ECREG_P2SH_OP_TRUE, ADDRESS_ECREG_UNSPENDABLE
-from test_framework.blocktools import (
- create_block,
- create_coinbase,
- make_conform_to_ctor,
-)
+from test_framework.blocktools import create_block, create_coinbase
from test_framework.messages import CTransaction, FromHex, hash256
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import assert_equal, assert_raises_rpc_error
@@ -519,17 +515,16 @@
)
raw_tx = self.nodes[0].getrawtransaction(orig_txid)
+ txs_to_add = [
+ FromHex(CTransaction(), tx_hex)
+ for tx_hex in [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,
)
- tx = FromHex(CTransaction(), raw_tx)
- block.vtx.append(tx)
- for txid in more_tx:
- tx = FromHex(CTransaction(), self.nodes[0].getrawtransaction(txid))
- block.vtx.append(tx)
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
assert_equal(self.nodes[0].submitblock(block.serialize().hex()), None)
tip = self.nodes[0].getbestblockhash()
diff --git a/test/functional/p2p_invalid_block.py b/test/functional/p2p_invalid_block.py
--- a/test/functional/p2p_invalid_block.py
+++ b/test/functional/p2p_invalid_block.py
@@ -25,6 +25,7 @@
)
from test_framework.messages import COIN
from test_framework.p2p import P2PDataStore
+from test_framework.script import OP_TRUE
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import assert_equal
@@ -74,18 +75,14 @@
# 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"", amount=50 * COIN)
- tx2 = create_tx_with_script(tx1, 0, script_sig=b"\x51", amount=50 * COIN)
-
- block2.vtx.extend([tx1, tx2])
- block2.vtx = [block2.vtx[0]] + sorted(
- block2.vtx[1:], key=lambda tx: tx.get_id()
+ tx2 = create_tx_with_script(
+ tx1, 0, script_sig=bytes([OP_TRUE]), amount=50 * COIN
+ )
+ block2 = create_block(
+ tip, create_coinbase(height), block_time, txlist=[tx1, tx2]
)
- block2.hashMerkleRoot = block2.calc_merkle_root()
+ block_time += 1
block2.solve()
orig_hash = block2.sha256
block2_orig = copy.deepcopy(block2)
@@ -115,12 +112,10 @@
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_000_000), 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(
@@ -143,15 +138,13 @@
# 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)
-
+ tx3 = create_tx_with_script(
+ tx2, 0, script_sig=bytes([OP_TRUE]), amount=50 * COIN
+ )
# Duplicates input
tx3.vin.append(tx3.vin[0])
tx3.rehash()
- block4.vtx.append(tx3)
- make_conform_to_ctor(block4)
- 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(
@@ -168,7 +161,6 @@
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
diff --git a/test/functional/p2p_net_deadlock.py b/test/functional/p2p_net_deadlock.py
--- a/test/functional/p2p_net_deadlock.py
+++ b/test/functional/p2p_net_deadlock.py
@@ -11,7 +11,7 @@
import threading
-from test_framework.blocktools import create_block, make_conform_to_ctor
+from test_framework.blocktools import create_block
from test_framework.messages import ToHex
from test_framework.test_framework import BitcoinTestFramework
from test_framework.txtools import pad_tx
@@ -35,10 +35,7 @@
for tx in txs:
pad_tx(tx, 999_990)
- block = create_block(tmpl=node0.getblocktemplate())
- block.vtx += txs
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(tmpl=node0.getblocktemplate(), txlist=txs)
block.solve()
hex_block = ToHex(block)
assert_greater_than(len(hex_block) // 2, 4_000_000)
diff --git a/test/functional/p2p_unrequested_blocks.py b/test/functional/p2p_unrequested_blocks.py
--- a/test/functional/p2p_unrequested_blocks.py
+++ b/test/functional/p2p_unrequested_blocks.py
@@ -275,14 +275,16 @@
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)
+ 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.hashMerkleRoot = block_291.calc_merkle_root()
block_291.solve()
block_292 = create_block(
block_291.sha256, create_coinbase(292), block_291.nTime + 1
diff --git a/test/functional/setup_scripts/chronik-client_lokad_id.py b/test/functional/setup_scripts/chronik-client_lokad_id.py
--- a/test/functional/setup_scripts/chronik-client_lokad_id.py
+++ b/test/functional/setup_scripts/chronik-client_lokad_id.py
@@ -171,9 +171,12 @@
]
tx3_conflict.rehash()
- block = create_block(int(blockhash, 16), create_coinbase(103), mocktime + 100)
- block.vtx += [tx3_conflict]
- block.hashMerkleRoot = block.calc_merkle_root()
+ block = create_block(
+ int(blockhash, 16),
+ create_coinbase(103),
+ mocktime + 100,
+ txlist=[tx3_conflict],
+ )
block.solve()
peer.send_blocks_and_test([block], node)
diff --git a/test/functional/setup_scripts/chronik-client_mempool_conflicts.py b/test/functional/setup_scripts/chronik-client_mempool_conflicts.py
--- a/test/functional/setup_scripts/chronik-client_mempool_conflicts.py
+++ b/test/functional/setup_scripts/chronik-client_mempool_conflicts.py
@@ -103,9 +103,8 @@
block = create_block(
int(block_hashes[-1], 16),
create_coinbase(block_height, b"\x03" * 33),
+ txlist=[conflict_tx],
)
- block.vtx += [conflict_tx]
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
yield True
diff --git a/test/functional/setup_scripts/chronik-client_plugin_groups.py b/test/functional/setup_scripts/chronik-client_plugin_groups.py
--- a/test/functional/setup_scripts/chronik-client_plugin_groups.py
+++ b/test/functional/setup_scripts/chronik-client_plugin_groups.py
@@ -17,12 +17,7 @@
P2SH_OP_TRUE,
SCRIPTSIG_OP_TRUE,
)
-from test_framework.blocktools import (
- COINBASE_MATURITY,
- create_block,
- create_coinbase,
- make_conform_to_ctor,
-)
+from test_framework.blocktools import COINBASE_MATURITY, create_block, create_coinbase
from test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut
from test_framework.p2p import P2PDataStore
from test_framework.script import OP_RETURN, CScript
@@ -325,10 +320,8 @@
block = create_block(
int(block_hashes[-1], 16),
create_coinbase(block_height, b"\x03" * 33),
+ txlist=[tx1, tx2, tx3] + extra_txs,
)
- block.vtx += [tx1, tx2, tx3] + extra_txs
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
diff --git a/test/functional/setup_scripts/chronik-client_token_alp.py b/test/functional/setup_scripts/chronik-client_token_alp.py
--- a/test/functional/setup_scripts/chronik-client_token_alp.py
+++ b/test/functional/setup_scripts/chronik-client_token_alp.py
@@ -16,12 +16,7 @@
P2SH_OP_TRUE,
SCRIPTSIG_OP_TRUE,
)
-from test_framework.blocktools import (
- COINBASE_MATURITY,
- create_block,
- create_coinbase,
- make_conform_to_ctor,
-)
+from test_framework.blocktools import COINBASE_MATURITY, create_block, create_coinbase
from test_framework.chronik.alp import (
alp_burn,
alp_genesis,
@@ -290,17 +285,15 @@
int(block_hashes[-1], 16),
create_coinbase(block_height, b"\x03" * 33),
1300000500,
+ txlist=[
+ alp_genesis_tx,
+ alp_send_tx,
+ alp_mint_tx,
+ another_alp_genesis_tx,
+ multi_tx,
+ mega_tx,
+ ],
)
- block.vtx += [
- alp_genesis_tx,
- alp_send_tx,
- alp_mint_tx,
- another_alp_genesis_tx,
- multi_tx,
- mega_tx,
- ]
- make_conform_to_ctor(block)
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
assert_equal(node.getblockcount(), 102)
diff --git a/test/functional/setup_scripts/chronik-client_token_slp_mint_vault.py b/test/functional/setup_scripts/chronik-client_token_slp_mint_vault.py
--- a/test/functional/setup_scripts/chronik-client_token_slp_mint_vault.py
+++ b/test/functional/setup_scripts/chronik-client_token_slp_mint_vault.py
@@ -154,9 +154,8 @@
int(block_hashes[-1], 16),
create_coinbase(block_height, b"\x03" * 33),
1300000500,
+ txlist=[slp_vault_genesis_tx],
)
- block.vtx += [slp_vault_genesis_tx]
- block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
peer.send_blocks_and_test([block], node)
assert_equal(node.getblockcount(), 103)
diff --git a/test/functional/test_framework/blocktools.py b/test/functional/test_framework/blocktools.py
--- a/test/functional/test_framework/blocktools.py
+++ b/test/functional/test_framework/blocktools.py
@@ -61,6 +61,7 @@
*,
version: Optional[int] = None,
tmpl: Optional[dict] = None,
+ txlist: Optional[list] = None,
) -> CBlock:
"""Create a block (with regtest difficulty)."""
block = CBlock()
@@ -75,6 +76,9 @@
# difficulty retargeting is disabled in REGTEST chainparams
block.nBits = 0x207FFFFF
block.vtx.append(coinbase or create_coinbase(height=tmpl["height"]))
+ if txlist:
+ block.vtx.extend(txlist)
+ make_conform_to_ctor(block)
block.hashMerkleRoot = block.calc_merkle_root()
block.calc_sha256()
return block
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, May 20, 22:59 (4 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5866118
Default Alt Text
D17691.id52749.diff (40 KB)
Attached To
D17691: test: refactor: use `create_block` parameters
Event Timeline
Log In to Comment