Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,8 @@ protected BlockValidationResult validateBlockPreProcessing(
() ->
new BlockProcessingException(
"BlsToExecutionChanges was not found during block processing.")),
signatureVerifier);
signatureVerifier,
false);
}

@Override
Expand All @@ -155,7 +156,7 @@ public void processBlsToExecutionChanges(
throws BlockProcessingException {
final BlockValidationResult result =
verifyBlsToExecutionChangesPreProcessing(
state, blsToExecutionChanges, BLSSignatureVerifier.SIMPLE);
state, blsToExecutionChanges, BLSSignatureVerifier.SIMPLE, true);
if (!result.isValid()) {
throw new BlockProcessingException(result.getFailureReason());
}
Expand Down Expand Up @@ -312,7 +313,8 @@ public static Bytes32 getWithdrawalAddressFromEth1Address(final Bytes20 toExecut
BlockValidationResult verifyBlsToExecutionChangesPreProcessing(
final BeaconState genericState,
final SszList<SignedBlsToExecutionChange> signedBlsToExecutionChanges,
final BLSSignatureVerifier signatureVerifier) {
final BLSSignatureVerifier signatureVerifier,
final boolean executeValidationRules) {

final Set<UInt64> validatorsSeenInBlock = new HashSet<>();
for (SignedBlsToExecutionChange signedBlsToExecutionChange : signedBlsToExecutionChanges) {
Expand All @@ -323,11 +325,13 @@ BlockValidationResult verifyBlsToExecutionChangesPreProcessing(
"Duplicated BlsToExecutionChange for validator " + addressChange.getValidatorIndex());
}

final Optional<OperationInvalidReason> operationInvalidReason =
operationValidator.validateBlsToExecutionChange(
genericState.getFork(), genericState, addressChange);
if (operationInvalidReason.isPresent()) {
return BlockValidationResult.failed(operationInvalidReason.get().describe());
if (executeValidationRules) {
final Optional<OperationInvalidReason> operationInvalidReason =
operationValidator.validateBlsToExecutionChange(
genericState.getFork(), genericState, addressChange);
if (operationInvalidReason.isPresent()) {
return BlockValidationResult.failed(operationInvalidReason.get().describe());
}
}

boolean signatureValid =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ public void shouldRejectBlockWithMoreThanOneBlsExecutionChangesForSameValidator(

final BlockValidationResult validationResult =
capellaBlockProcessor.verifyBlsToExecutionChangesPreProcessing(
state, blsToExecutionChangesListWithDuplicate, BLSSignatureVerifier.NO_OP);
state, blsToExecutionChangesListWithDuplicate, BLSSignatureVerifier.NO_OP, true);

assertThat(validationResult.isValid()).isFalse();
assertThat(validationResult.getFailureReason())
Expand Down