Skip to content

Commit 655dc71

Browse files
committed
Merge bitcoin#28666: test: assumeutxo file with unknown block hash
621db2f test: assumeutxo file with unknown block hash (Fabian Jahr) Pull request description: Takes care of one of the open Todos in the assumeutxo functional test. Since an unknown block could be any hash, I simply chose one placeholder, it could also be a random string though. ACKs for top commit: maflcko: lgtm ACK 621db2f pablomartin4btc: cr ACK 621db2f theStack: ACK 621db2f ryanofsky: Code review ACK 621db2f Tree-SHA512: ee0438ce619f7348c6f88e39b0ea7ddddb8832956d9034ecc795c6033d5d905c09d11b7d0d5afc38231b2fd091ea7c1bd0a0be99d9c32c4e6357a25d76294142
2 parents 1803fee + 621db2f commit 655dc71

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

test/functional/feature_assumeutxo.py

+8-7
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
2020
- TODO: Valid hash but invalid snapshot file (bad coin height or
2121
bad other serialization)
22-
- TODO: Valid snapshot file, but referencing an unknown block
2322
- TODO: Valid snapshot file, but referencing a snapshot block that turns out to be
2423
invalid, or has an invalid parent
2524
- TODO: Valid snapshot file and snapshot block, but the block is not on the
@@ -71,12 +70,14 @@ def test_invalid_snapshot_scenarios(self, valid_snapshot_path):
7170
bad_snapshot_path = valid_snapshot_path + '.mod'
7271

7372
self.log.info(" - snapshot file refering to a block that is not in the assumeutxo parameters")
74-
bad_snapshot_block_hash = self.nodes[0].getblockhash(SNAPSHOT_BASE_HEIGHT - 1)
75-
with open(bad_snapshot_path, 'wb') as f:
76-
# block hash of the snapshot base is stored right at the start (first 32 bytes)
77-
f.write(bytes.fromhex(bad_snapshot_block_hash)[::-1] + valid_snapshot_contents[32:])
78-
error_details = f"assumeutxo block hash in snapshot metadata not recognized ({bad_snapshot_block_hash})"
79-
assert_raises_rpc_error(-32603, f"Unable to load UTXO snapshot, {error_details}", self.nodes[1].loadtxoutset, bad_snapshot_path)
73+
prev_block_hash = self.nodes[0].getblockhash(SNAPSHOT_BASE_HEIGHT - 1)
74+
bogus_block_hash = "0" * 64 # Represents any unknown block hash
75+
for bad_block_hash in [bogus_block_hash, prev_block_hash]:
76+
with open(bad_snapshot_path, 'wb') as f:
77+
# block hash of the snapshot base is stored right at the start (first 32 bytes)
78+
f.write(bytes.fromhex(bad_block_hash)[::-1] + valid_snapshot_contents[32:])
79+
error_details = f"assumeutxo block hash in snapshot metadata not recognized ({bad_block_hash})"
80+
assert_raises_rpc_error(-32603, f"Unable to load UTXO snapshot, {error_details}", self.nodes[1].loadtxoutset, bad_snapshot_path)
8081

8182
self.log.info(" - snapshot file with wrong number of coins")
8283
valid_num_coins = int.from_bytes(valid_snapshot_contents[32:32 + 8], "little")

0 commit comments

Comments
 (0)