@@ -14,22 +14,23 @@ trait SyncBlocksValidator {
14
14
def blockchain : Blockchain
15
15
def validators : Validators
16
16
17
- def validateBlocks (requestedHashes : Seq [ByteString ], blockBodies : Seq [BlockBody ]): BlockBodyValidationResult = {
18
- var result : BlockBodyValidationResult = Valid
17
+ def validateBlocks (requestedHashes : Seq [ByteString ], blockBodies : Seq [BlockBody ]): BlockBodyValidationResult =
19
18
(requestedHashes zip blockBodies)
20
19
.map { case (hash, body) => (blockchain.getBlockHeaderByHash(hash), body) }
21
- .forall {
22
- case (Some (header), body) =>
23
- val validationResult : Either [StdBlockValidator .BlockError , BlockValid ] =
24
- validators.blockValidator.validateHeaderAndBody(header, body)
25
- result = validationResult.fold(_ => Invalid , _ => Valid )
26
- validationResult.isRight
27
- case _ =>
28
- result = DbError
29
- false
20
+ .foldLeft(Valid ) {
21
+ case (Valid , (Some (header), body)) =>
22
+ validators.blockValidator
23
+ .validateHeaderAndBody(header, body)
24
+ .fold(
25
+ { error =>
26
+ log.error(s " Block body validation failed with error $error" )
27
+ Invalid
28
+ },
29
+ _ => Valid
30
+ )
31
+ case (Valid , _) => DbError
32
+ case (invalid, _) => invalid
30
33
}
31
- result
32
- }
33
34
34
35
def validateHeaderOnly (blockHeader : BlockHeader ): Either [BlockHeaderError , BlockHeaderValid ] =
35
36
validators.blockHeaderValidator.validateHeaderOnly(blockHeader)
0 commit comments