Changeset View
Changeset View
Standalone View
Standalone View
test/functional/feature_block.py
Show First 20 Lines • Show All 668 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
# -> b31 (8) -> b33 (9) -> b35 (10) -> b39 (11) -> b42 (12) -> b43 (13) -> b53 (14) -> b55 (15) | # -> b31 (8) -> b33 (9) -> b35 (10) -> b39 (11) -> b42 (12) -> b43 (13) -> b53 (14) -> b55 (15) | ||||
# \-> b54 (15) | # \-> b54 (15) | ||||
# | # | ||||
self.move_tip(43) | self.move_tip(43) | ||||
b53 = self.next_block(53, spend=out[14]) | b53 = self.next_block(53, spend=out[14]) | ||||
self.sync_blocks([b53], False) | self.sync_blocks([b53], False) | ||||
self.save_spendable_output() | self.save_spendable_output() | ||||
self.log.info("Reject a block with timestamp before MedianTimePast") | self.log.info("Skipped timestamp test") | ||||
b54 = self.next_block(54, spend=out[15]) | |||||
b54.nTime = b35.nTime - 1 | |||||
b54.solve() | |||||
self.sync_blocks([b54], False, request_block=False) | |||||
# valid timestamp | |||||
self.move_tip(53) | |||||
b55 = self.next_block(55, spend=out[15]) | b55 = self.next_block(55, spend=out[15]) | ||||
b55.nTime = b35.nTime | |||||
self.update_block(55, []) | |||||
self.sync_blocks([b55], True) | self.sync_blocks([b55], True) | ||||
self.save_spendable_output() | self.save_spendable_output() | ||||
# Test Merkle tree malleability | # Test Merkle tree malleability | ||||
# | # | ||||
# -> b42 (12) -> b43 (13) -> b53 (14) -> b55 (15) -> b57p2 (16) | # -> b42 (12) -> b43 (13) -> b53 (14) -> b55 (15) -> b57p2 (16) | ||||
# \-> b57 (16) | # \-> b57 (16) | ||||
# \-> b56p2 (16) | # \-> b56p2 (16) | ||||
▲ Show 20 Lines • Show All 725 Lines • Show Last 20 Lines |