Skip to content

Commit f7245f1

Browse files
committed
refactor(verification): remove VertexVerifier from BlockVerifier
1 parent 36aa21f commit f7245f1

File tree

6 files changed

+45
-53
lines changed

6 files changed

+45
-53
lines changed

hathor/verification/block_verifier.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,19 @@
2525
TransactionDataError,
2626
WeightError,
2727
)
28-
from hathor.verification.vertex_verifier import VertexVerifier
2928

3029

3130
class BlockVerifier:
32-
__slots__ = ('_settings', '_vertex_verifier', '_daa', '_feature_service')
31+
__slots__ = ('_settings', '_daa', '_feature_service')
3332

3433
def __init__(
3534
self,
3635
*,
3736
settings: HathorSettings,
38-
vertex_verifier: VertexVerifier,
3937
daa: DifficultyAdjustmentAlgorithm,
4038
feature_service: FeatureService | None = None
4139
) -> None:
4240
self._settings = settings
43-
self._vertex_verifier = vertex_verifier
4441
self._daa = daa
4542
self._feature_service = feature_service
4643

@@ -74,8 +71,7 @@ def verify_no_inputs(self, block: Block) -> None:
7471
if inputs:
7572
raise BlockWithInputs('number of inputs {}'.format(len(inputs)))
7673

77-
def verify_outputs(self, block: Block) -> None:
78-
self._vertex_verifier.verify_outputs(block)
74+
def verify_output_token_indexes(self, block: Block) -> None:
7975
for output in block.outputs:
8076
if output.get_token_index() > 0:
8177
raise BlockWithTokensError('in output: {}'.format(output.to_human_readable()))

hathor/verification/verification_service.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,8 @@ def _verify_without_storage_block(self, block: Block) -> None:
222222
"""
223223
self.verifiers.vertex.verify_pow(block)
224224
self.verifiers.block.verify_no_inputs(block)
225-
self.verifiers.block.verify_outputs(block)
225+
self.verifiers.vertex.verify_outputs(block)
226+
self.verifiers.block.verify_output_token_indexes(block)
226227
self.verifiers.block.verify_data(block)
227228
self.verifiers.vertex.verify_sigops_output(block)
228229

hathor/verification/vertex_verifiers.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,7 @@ def create(
6565
"""
6666
Create a VertexVerifiers instance using a custom vertex_verifier.
6767
"""
68-
block_verifier = BlockVerifier(
69-
settings=settings,
70-
vertex_verifier=vertex_verifier,
71-
daa=daa,
72-
feature_service=feature_service
73-
)
68+
block_verifier = BlockVerifier(settings=settings, daa=daa, feature_service=feature_service)
7469
merge_mined_block_verifier = MergeMinedBlockVerifier()
7570
tx_verifier = TransactionVerifier(settings=settings, vertex_verifier=vertex_verifier, daa=daa)
7671
token_creation_tx_verifier = TokenCreationTransactionVerifier(settings=settings)

tests/tx/test_block.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ def test_verify_must_signal_when_feature_activation_is_disabled(is_signaling_man
147147
settings.FEATURE_ACTIVATION.enable_usage = False
148148
feature_service = Mock(spec_set=FeatureService)
149149
feature_service.is_signaling_mandatory_features = Mock(return_value=is_signaling_mandatory_features)
150-
verifier = BlockVerifier(settings=settings, feature_service=feature_service, daa=Mock(), vertex_verifier=Mock())
150+
verifier = BlockVerifier(settings=settings, feature_service=feature_service, daa=Mock())
151151
block = Block()
152152

153153
verifier.verify_mandatory_signaling(block)
@@ -160,7 +160,7 @@ def test_verify_must_signal() -> None:
160160
feature_service.is_signaling_mandatory_features = Mock(
161161
return_value=BlockIsMissingSignal(feature=Feature.NOP_FEATURE_1)
162162
)
163-
verifier = BlockVerifier(settings=settings, feature_service=feature_service, daa=Mock(), vertex_verifier=Mock())
163+
verifier = BlockVerifier(settings=settings, feature_service=feature_service, daa=Mock())
164164
block = Block()
165165

166166
with pytest.raises(BlockMustSignalError) as e:
@@ -174,7 +174,7 @@ def test_verify_must_not_signal() -> None:
174174
settings.FEATURE_ACTIVATION.enable_usage = True
175175
feature_service = Mock(spec_set=FeatureService)
176176
feature_service.is_signaling_mandatory_features = Mock(return_value=BlockIsSignaling())
177-
verifier = BlockVerifier(settings=settings, feature_service=feature_service, daa=Mock(), vertex_verifier=Mock())
177+
verifier = BlockVerifier(settings=settings, feature_service=feature_service, daa=Mock())
178178
block = Block()
179179

180180
verifier.verify_mandatory_signaling(block)

tests/tx/test_tx.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ def test_block_outputs(self):
360360
storage=self.tx_storage)
361361

362362
with self.assertRaises(TooManyOutputs):
363-
self._verifiers.block.verify_outputs(block)
363+
self._verifiers.vertex.verify_outputs(block)
364364

365365
def test_tx_number_parents(self):
366366
genesis_block = self.genesis_blocks[0]

tests/tx/test_verification.py

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -123,45 +123,45 @@ def test_block_verify_basic(self) -> None:
123123
def test_block_verify_without_storage(self) -> None:
124124
block = self._get_valid_block()
125125

126-
vertex_verify_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_outputs)
126+
verify_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_outputs)
127127

128128
verify_pow_wrapped = Mock(wraps=self.verifiers.vertex.verify_pow)
129129
verify_no_inputs_wrapped = Mock(wraps=self.verifiers.block.verify_no_inputs)
130-
verify_outputs_wrapped = Mock(wraps=self.verifiers.block.verify_outputs)
130+
verify_output_token_indexes_wrapped = Mock(wraps=self.verifiers.block.verify_output_token_indexes)
131131
verify_number_of_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_number_of_outputs)
132132
verify_data_wrapped = Mock(wraps=self.verifiers.block.verify_data)
133133
verify_sigops_output_wrapped = Mock(wraps=self.verifiers.vertex.verify_sigops_output)
134134

135135
with (
136-
patch.object(VertexVerifier, 'verify_outputs', vertex_verify_outputs_wrapped),
136+
patch.object(VertexVerifier, 'verify_outputs', verify_outputs_wrapped),
137137
patch.object(VertexVerifier, 'verify_pow', verify_pow_wrapped),
138138
patch.object(BlockVerifier, 'verify_no_inputs', verify_no_inputs_wrapped),
139-
patch.object(BlockVerifier, 'verify_outputs', verify_outputs_wrapped),
139+
patch.object(BlockVerifier, 'verify_output_token_indexes', verify_output_token_indexes_wrapped),
140140
patch.object(VertexVerifier, 'verify_number_of_outputs', verify_number_of_outputs_wrapped),
141141
patch.object(BlockVerifier, 'verify_data', verify_data_wrapped),
142142
patch.object(VertexVerifier, 'verify_sigops_output', verify_sigops_output_wrapped),
143143
):
144144
self.manager.verification_service.verify_without_storage(block)
145145

146146
# Vertex methods
147-
vertex_verify_outputs_wrapped.assert_called_once()
147+
verify_outputs_wrapped.assert_called_once()
148148

149149
# Block methods
150150
verify_pow_wrapped.assert_called_once()
151151
verify_no_inputs_wrapped.assert_called_once()
152-
verify_outputs_wrapped.assert_called_once()
152+
verify_output_token_indexes_wrapped.assert_called_once()
153153
verify_number_of_outputs_wrapped.assert_called_once()
154154
verify_data_wrapped.assert_called_once()
155155
verify_sigops_output_wrapped.assert_called_once()
156156

157157
def test_block_verify(self) -> None:
158158
block = self._get_valid_block()
159159

160-
vertex_verify_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_outputs)
160+
verify_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_outputs)
161161

162162
verify_pow_wrapped = Mock(wraps=self.verifiers.vertex.verify_pow)
163163
verify_no_inputs_wrapped = Mock(wraps=self.verifiers.block.verify_no_inputs)
164-
verify_outputs_wrapped = Mock(wraps=self.verifiers.block.verify_outputs)
164+
verify_output_token_indexes_wrapped = Mock(wraps=self.verifiers.block.verify_output_token_indexes)
165165
verify_number_of_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_number_of_outputs)
166166
verify_data_wrapped = Mock(wraps=self.verifiers.block.verify_data)
167167
verify_sigops_output_wrapped = Mock(wraps=self.verifiers.vertex.verify_sigops_output)
@@ -170,10 +170,10 @@ def test_block_verify(self) -> None:
170170
verify_mandatory_signaling_wrapped = Mock(wraps=self.verifiers.block.verify_mandatory_signaling)
171171

172172
with (
173-
patch.object(VertexVerifier, 'verify_outputs', vertex_verify_outputs_wrapped),
173+
patch.object(VertexVerifier, 'verify_outputs', verify_outputs_wrapped),
174174
patch.object(VertexVerifier, 'verify_pow', verify_pow_wrapped),
175175
patch.object(BlockVerifier, 'verify_no_inputs', verify_no_inputs_wrapped),
176-
patch.object(BlockVerifier, 'verify_outputs', verify_outputs_wrapped),
176+
patch.object(BlockVerifier, 'verify_output_token_indexes', verify_output_token_indexes_wrapped),
177177
patch.object(VertexVerifier, 'verify_number_of_outputs', verify_number_of_outputs_wrapped),
178178
patch.object(BlockVerifier, 'verify_data', verify_data_wrapped),
179179
patch.object(VertexVerifier, 'verify_sigops_output', verify_sigops_output_wrapped),
@@ -184,12 +184,12 @@ def test_block_verify(self) -> None:
184184
self.manager.verification_service.verify(block)
185185

186186
# Vertex methods
187-
vertex_verify_outputs_wrapped.assert_called_once()
187+
verify_outputs_wrapped.assert_called_once()
188188

189189
# Block methods
190190
verify_pow_wrapped.assert_called_once()
191191
verify_no_inputs_wrapped.assert_called_once()
192-
verify_outputs_wrapped.assert_called_once()
192+
verify_output_token_indexes_wrapped.assert_called_once()
193193
verify_number_of_outputs_wrapped.assert_called_once()
194194
verify_data_wrapped.assert_called_once()
195195
verify_sigops_output_wrapped.assert_called_once()
@@ -240,11 +240,11 @@ def test_block_validate_basic(self) -> None:
240240
def test_block_validate_full(self) -> None:
241241
block = self._get_valid_block()
242242

243-
vertex_verify_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_outputs)
243+
verify_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_outputs)
244244

245245
verify_pow_wrapped = Mock(wraps=self.verifiers.vertex.verify_pow)
246246
verify_no_inputs_wrapped = Mock(wraps=self.verifiers.block.verify_no_inputs)
247-
verify_outputs_wrapped = Mock(wraps=self.verifiers.block.verify_outputs)
247+
verify_output_token_indexes_wrapped = Mock(wraps=self.verifiers.block.verify_output_token_indexes)
248248
verify_number_of_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_number_of_outputs)
249249
verify_data_wrapped = Mock(wraps=self.verifiers.block.verify_data)
250250
verify_sigops_output_wrapped = Mock(wraps=self.verifiers.vertex.verify_sigops_output)
@@ -255,10 +255,10 @@ def test_block_validate_full(self) -> None:
255255
verify_mandatory_signaling_wrapped = Mock(wraps=self.verifiers.block.verify_mandatory_signaling)
256256

257257
with (
258-
patch.object(VertexVerifier, 'verify_outputs', vertex_verify_outputs_wrapped),
258+
patch.object(VertexVerifier, 'verify_outputs', verify_outputs_wrapped),
259259
patch.object(VertexVerifier, 'verify_pow', verify_pow_wrapped),
260260
patch.object(BlockVerifier, 'verify_no_inputs', verify_no_inputs_wrapped),
261-
patch.object(BlockVerifier, 'verify_outputs', verify_outputs_wrapped),
261+
patch.object(BlockVerifier, 'verify_output_token_indexes', verify_output_token_indexes_wrapped),
262262
patch.object(VertexVerifier, 'verify_number_of_outputs', verify_number_of_outputs_wrapped),
263263
patch.object(BlockVerifier, 'verify_data', verify_data_wrapped),
264264
patch.object(VertexVerifier, 'verify_sigops_output', verify_sigops_output_wrapped),
@@ -271,12 +271,12 @@ def test_block_validate_full(self) -> None:
271271
self.manager.verification_service.validate_full(block)
272272

273273
# Vertex methods
274-
vertex_verify_outputs_wrapped.assert_called_once()
274+
verify_outputs_wrapped.assert_called_once()
275275

276276
# Block methods
277277
verify_pow_wrapped.assert_called_once()
278278
verify_no_inputs_wrapped.assert_called_once()
279-
verify_outputs_wrapped.assert_called_once()
279+
verify_output_token_indexes_wrapped.assert_called_once()
280280
verify_number_of_outputs_wrapped.assert_called_once()
281281
verify_data_wrapped.assert_called_once()
282282
verify_sigops_output_wrapped.assert_called_once()
@@ -305,22 +305,22 @@ def test_merge_mined_block_verify_basic(self) -> None:
305305
def test_merge_mined_block_verify_without_storage(self) -> None:
306306
block = self._get_valid_merge_mined_block()
307307

308-
vertex_verify_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_outputs)
308+
verify_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_outputs)
309309

310310
verify_pow_wrapped = Mock(wraps=self.verifiers.vertex.verify_pow)
311311
verify_no_inputs_wrapped = Mock(wraps=self.verifiers.block.verify_no_inputs)
312-
verify_outputs_wrapped = Mock(wraps=self.verifiers.block.verify_outputs)
312+
verify_output_token_indexes_wrapped = Mock(wraps=self.verifiers.block.verify_output_token_indexes)
313313
verify_number_of_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_number_of_outputs)
314314
verify_data_wrapped = Mock(wraps=self.verifiers.block.verify_data)
315315
verify_sigops_output_wrapped = Mock(wraps=self.verifiers.vertex.verify_sigops_output)
316316

317317
verify_aux_pow_wrapped = Mock(wraps=self.verifiers.merge_mined_block.verify_aux_pow)
318318

319319
with (
320-
patch.object(VertexVerifier, 'verify_outputs', vertex_verify_outputs_wrapped),
320+
patch.object(VertexVerifier, 'verify_outputs', verify_outputs_wrapped),
321321
patch.object(VertexVerifier, 'verify_pow', verify_pow_wrapped),
322322
patch.object(BlockVerifier, 'verify_no_inputs', verify_no_inputs_wrapped),
323-
patch.object(BlockVerifier, 'verify_outputs', verify_outputs_wrapped),
323+
patch.object(BlockVerifier, 'verify_output_token_indexes', verify_output_token_indexes_wrapped),
324324
patch.object(VertexVerifier, 'verify_number_of_outputs', verify_number_of_outputs_wrapped),
325325
patch.object(BlockVerifier, 'verify_data', verify_data_wrapped),
326326
patch.object(VertexVerifier, 'verify_sigops_output', verify_sigops_output_wrapped),
@@ -329,12 +329,12 @@ def test_merge_mined_block_verify_without_storage(self) -> None:
329329
self.manager.verification_service.verify_without_storage(block)
330330

331331
# Vertex methods
332-
vertex_verify_outputs_wrapped.assert_called_once()
332+
verify_outputs_wrapped.assert_called_once()
333333

334334
# Block methods
335335
verify_pow_wrapped.assert_called_once()
336336
verify_no_inputs_wrapped.assert_called_once()
337-
verify_outputs_wrapped.assert_called_once()
337+
verify_output_token_indexes_wrapped.assert_called_once()
338338
verify_number_of_outputs_wrapped.assert_called_once()
339339
verify_data_wrapped.assert_called_once()
340340
verify_sigops_output_wrapped.assert_called_once()
@@ -345,11 +345,11 @@ def test_merge_mined_block_verify_without_storage(self) -> None:
345345
def test_merge_mined_block_verify(self) -> None:
346346
block = self._get_valid_merge_mined_block()
347347

348-
vertex_verify_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_outputs)
348+
verify_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_outputs)
349349

350350
verify_pow_wrapped = Mock(wraps=self.verifiers.vertex.verify_pow)
351351
verify_no_inputs_wrapped = Mock(wraps=self.verifiers.block.verify_no_inputs)
352-
verify_outputs_wrapped = Mock(wraps=self.verifiers.block.verify_outputs)
352+
verify_output_token_indexes_wrapped = Mock(wraps=self.verifiers.block.verify_output_token_indexes)
353353
verify_number_of_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_number_of_outputs)
354354
verify_data_wrapped = Mock(wraps=self.verifiers.block.verify_data)
355355
verify_sigops_output_wrapped = Mock(wraps=self.verifiers.vertex.verify_sigops_output)
@@ -360,10 +360,10 @@ def test_merge_mined_block_verify(self) -> None:
360360
verify_aux_pow_wrapped = Mock(wraps=self.verifiers.merge_mined_block.verify_aux_pow)
361361

362362
with (
363-
patch.object(VertexVerifier, 'verify_outputs', vertex_verify_outputs_wrapped),
363+
patch.object(VertexVerifier, 'verify_outputs', verify_outputs_wrapped),
364364
patch.object(VertexVerifier, 'verify_pow', verify_pow_wrapped),
365365
patch.object(BlockVerifier, 'verify_no_inputs', verify_no_inputs_wrapped),
366-
patch.object(BlockVerifier, 'verify_outputs', verify_outputs_wrapped),
366+
patch.object(BlockVerifier, 'verify_output_token_indexes', verify_output_token_indexes_wrapped),
367367
patch.object(VertexVerifier, 'verify_number_of_outputs', verify_number_of_outputs_wrapped),
368368
patch.object(BlockVerifier, 'verify_data', verify_data_wrapped),
369369
patch.object(VertexVerifier, 'verify_sigops_output', verify_sigops_output_wrapped),
@@ -375,12 +375,12 @@ def test_merge_mined_block_verify(self) -> None:
375375
self.manager.verification_service.verify(block)
376376

377377
# Vertex methods
378-
vertex_verify_outputs_wrapped.assert_called_once()
378+
verify_outputs_wrapped.assert_called_once()
379379

380380
# Block methods
381381
verify_pow_wrapped.assert_called_once()
382382
verify_no_inputs_wrapped.assert_called_once()
383-
verify_outputs_wrapped.assert_called_once()
383+
verify_output_token_indexes_wrapped.assert_called_once()
384384
verify_number_of_outputs_wrapped.assert_called_once()
385385
verify_data_wrapped.assert_called_once()
386386
verify_sigops_output_wrapped.assert_called_once()
@@ -434,11 +434,11 @@ def test_merge_mined_block_validate_basic(self) -> None:
434434
def test_merge_mined_block_validate_full(self) -> None:
435435
block = self._get_valid_merge_mined_block()
436436

437-
vertex_verify_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_outputs)
437+
verify_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_outputs)
438438

439439
verify_pow_wrapped = Mock(wraps=self.verifiers.vertex.verify_pow)
440440
verify_no_inputs_wrapped = Mock(wraps=self.verifiers.block.verify_no_inputs)
441-
verify_outputs_wrapped = Mock(wraps=self.verifiers.block.verify_outputs)
441+
verify_output_token_indexes_wrapped = Mock(wraps=self.verifiers.block.verify_output_token_indexes)
442442
verify_number_of_outputs_wrapped = Mock(wraps=self.verifiers.vertex.verify_number_of_outputs)
443443
verify_data_wrapped = Mock(wraps=self.verifiers.block.verify_data)
444444
verify_sigops_output_wrapped = Mock(wraps=self.verifiers.vertex.verify_sigops_output)
@@ -451,10 +451,10 @@ def test_merge_mined_block_validate_full(self) -> None:
451451
verify_aux_pow_wrapped = Mock(wraps=self.verifiers.merge_mined_block.verify_aux_pow)
452452

453453
with (
454-
patch.object(VertexVerifier, 'verify_outputs', vertex_verify_outputs_wrapped),
454+
patch.object(VertexVerifier, 'verify_outputs', verify_outputs_wrapped),
455455
patch.object(VertexVerifier, 'verify_pow', verify_pow_wrapped),
456456
patch.object(BlockVerifier, 'verify_no_inputs', verify_no_inputs_wrapped),
457-
patch.object(BlockVerifier, 'verify_outputs', verify_outputs_wrapped),
457+
patch.object(BlockVerifier, 'verify_output_token_indexes', verify_output_token_indexes_wrapped),
458458
patch.object(VertexVerifier, 'verify_number_of_outputs', verify_number_of_outputs_wrapped),
459459
patch.object(BlockVerifier, 'verify_data', verify_data_wrapped),
460460
patch.object(VertexVerifier, 'verify_sigops_output', verify_sigops_output_wrapped),
@@ -468,12 +468,12 @@ def test_merge_mined_block_validate_full(self) -> None:
468468
self.manager.verification_service.validate_full(block)
469469

470470
# Vertex methods
471-
vertex_verify_outputs_wrapped.assert_called_once()
471+
verify_outputs_wrapped.assert_called_once()
472472

473473
# Block methods
474474
verify_pow_wrapped.assert_called_once()
475475
verify_no_inputs_wrapped.assert_called_once()
476-
verify_outputs_wrapped.assert_called_once()
476+
verify_output_token_indexes_wrapped.assert_called_once()
477477
verify_number_of_outputs_wrapped.assert_called_once()
478478
verify_data_wrapped.assert_called_once()
479479
verify_sigops_output_wrapped.assert_called_once()

0 commit comments

Comments
 (0)