mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-05-30 07:43:48 +02:00
Merge bitcoin/bitcoin#35089: test: Allow to set height in create_block
fa16bc53d7test: Require named arg for create_block ntime arg (MarcoFalke)fab352053dtest: Remove unused create_coinbase imports (MarcoFalke)fad6deb3cbscripted-diff: Use new create_block height option (MarcoFalke)fa5eb74b96test: Allow to set height in create_block (MarcoFalke) Pull request description: The `create_block` helper is often called with `create_coinbase`: `create_block(prev_hash, create_coinbase(new_height))` This is fine, but a bit verbose and tedious to type each time. Also, it requires an additional import. Improve this by allowing to set `height` in `create_block` directly, similar to other options, such as `ntime`, or `hashprev`. ACKs for top commit: l0rinc: reACKfa16bc53d7theStack: re-ACKfa16bc53d7Tree-SHA512: 41ca7327aac714b446d53b1a29f83e792f7fc13d567cd0f063f743d50b193fa0c71cc651454ae1f3c960b0b82cc8658932ea08b3be8632f69a18ccd09a052c17
This commit is contained in:
@@ -95,7 +95,7 @@ def nbits_str(nbits):
|
||||
def target_str(target):
|
||||
return f"{target:064x}"
|
||||
|
||||
def create_block(hashprev=None, coinbase=None, ntime=None, *, version=None, tmpl=None, txlist=None):
|
||||
def create_block(hashprev=None, coinbase=None, *, ntime=None, height=None, version=None, tmpl=None, txlist=None):
|
||||
"""Create a block (with regtest difficulty)."""
|
||||
block = CBlock()
|
||||
if tmpl is None:
|
||||
@@ -108,7 +108,7 @@ def create_block(hashprev=None, coinbase=None, ntime=None, *, version=None, tmpl
|
||||
else:
|
||||
block.nBits = REGTEST_N_BITS
|
||||
if coinbase is None:
|
||||
coinbase = create_coinbase(height=tmpl['height'])
|
||||
coinbase = create_coinbase(height=height or tmpl["height"])
|
||||
block.vtx.append(coinbase)
|
||||
if txlist:
|
||||
for tx in txlist:
|
||||
@@ -129,7 +129,7 @@ def create_empty_fork(node, fork_length=FORK_LENGTH):
|
||||
|
||||
blocks = []
|
||||
for _ in range(fork_length):
|
||||
block = create_block(tip, create_coinbase(height + 1), block_time)
|
||||
block = create_block(tip, height=height + 1, ntime=block_time)
|
||||
block.solve()
|
||||
blocks.append(block)
|
||||
tip = block.hash_int
|
||||
@@ -278,6 +278,14 @@ def send_to_witness(use_p2wsh, node, utxo, pubkey, encode_p2sh, amount, sign=Tru
|
||||
return node.sendrawtransaction(tx_to_witness)
|
||||
|
||||
class TestFrameworkBlockTools(unittest.TestCase):
|
||||
def test_create_block_prefers_explicit_height(self):
|
||||
block = create_block(
|
||||
hashprev=1,
|
||||
tmpl={"height": 100},
|
||||
height=200,
|
||||
)
|
||||
assert_equal(CScriptNum.decode(block.vtx[0].vin[0].scriptSig), 200)
|
||||
|
||||
def test_create_coinbase(self):
|
||||
height = 20
|
||||
coinbase_tx = create_coinbase(height=height)
|
||||
|
||||
Reference in New Issue
Block a user