diff --git a/src/main/kotlin/io/emeraldpay/dshackle/upstream/AbstractHead.kt b/src/main/kotlin/io/emeraldpay/dshackle/upstream/AbstractHead.kt index 22964d0c..11e07ec1 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/upstream/AbstractHead.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/upstream/AbstractHead.kt @@ -57,7 +57,12 @@ abstract class AbstractHead( } .subscribeOn(Schedulers.boundedElastic()) .subscribe { block -> - if (blockValidator.isValid(forkChoice.getHead(), block)) { + val valid = runCatching { + blockValidator.isValid(forkChoice.getHead(), block) + }.onFailure { + log.error("Block ${block.hash} validation failed with '${it.message}'", it) + }.getOrElse { false } + if (valid) { notifyBeforeBlock() when (val choiceResult = forkChoice.choose(block)) { is ForkChoice.ChoiceResult.Updated -> {