Changeset View
Changeset View
Standalone View
Standalone View
test/functional/feature_block.py
Show First 20 Lines • Show All 491 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
self.blocks[46] = b46 | self.blocks[46] = b46 | ||||
self.send_blocks([b46], success=False, | self.send_blocks([b46], success=False, | ||||
reject_reason='bad-cb-missing', reconnect=True) | reject_reason='bad-cb-missing', reconnect=True) | ||||
self.log.info("Reject a block with invalid work") | self.log.info("Reject a block with invalid work") | ||||
self.move_tip(44) | self.move_tip(44) | ||||
b47 = self.next_block(47, solve=False) | b47 = self.next_block(47, solve=False) | ||||
target = uint256_from_compact(b47.nBits) | target = uint256_from_compact(b47.nBits) | ||||
while b47.sha256 < target: | while b47.sha256 <= target: | ||||
b47.nNonce += 1 | b47.nNonce += 1 | ||||
b47.rehash() | b47.rehash() | ||||
self.send_blocks( | self.send_blocks( | ||||
[b47], | [b47], | ||||
False, | False, | ||||
force_send=True, | force_send=True, | ||||
reject_reason='high-hash', | reject_reason='high-hash', | ||||
reconnect=True) | reconnect=True) | ||||
▲ Show 20 Lines • Show All 713 Lines • ▼ Show 20 Lines | def next_block(self, number, spend=None, additional_coinbase_value=0, | ||||
version=version) | version=version) | ||||
# spend 1 satoshi | # spend 1 satoshi | ||||
tx = self.create_tx(spend, 0, 1, script) | tx = self.create_tx(spend, 0, 1, script) | ||||
self.sign_tx(tx, spend) | self.sign_tx(tx, spend) | ||||
self.add_transactions_to_block(block, [tx]) | self.add_transactions_to_block(block, [tx]) | ||||
block.hashMerkleRoot = block.calc_merkle_root() | block.hashMerkleRoot = block.calc_merkle_root() | ||||
if solve: | if solve: | ||||
block.solve() | block.solve() | ||||
else: | |||||
block.rehash() | |||||
self.tip = block | self.tip = block | ||||
self.block_heights[block.sha256] = height | self.block_heights[block.sha256] = height | ||||
assert number not in self.blocks | assert number not in self.blocks | ||||
self.blocks[number] = block | self.blocks[number] = block | ||||
return block | return block | ||||
# save the current tip so it can be spent by a later block | # save the current tip so it can be spent by a later block | ||||
def save_spendable_output(self): | def save_spendable_output(self): | ||||
▲ Show 20 Lines • Show All 65 Lines • Show Last 20 Lines |