Skip to content

Commit a145fa0

Browse files
committed
refactor: simplify sync validation faults
1 parent 0a50aa6 commit a145fa0

1 file changed

Lines changed: 10 additions & 27 deletions

File tree

block/internal/syncing/syncer.go

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -913,44 +913,27 @@ func (s *Syncer) ValidateBlock(_ context.Context, currState types.State, data *t
913913
header.SetCustomVerifierForSyncNode(s.options.SyncNodeSignatureBytesProvider)
914914

915915
if err := header.ValidateBasicWithData(data); err != nil { //nolint:contextcheck // validation API does not accept context
916-
return classifyValidationError(fmt.Errorf("invalid header: %w", err))
916+
return errors.Join(errInvalidBlock, &BlockValidationError{Fault: FaultHeader, Err: fmt.Errorf("invalid header: %w", err)})
917917
}
918918

919919
if err := currState.AssertExpectedProposer(header); err != nil {
920920
return errors.Join(errInvalidBlock, &BlockValidationError{Fault: FaultHeader, Err: err})
921921
}
922922

923-
if err := currState.AssertValidForNextState(header, data); err != nil {
924-
if vErr := classifyValidationError(err); vErr != nil {
925-
return errors.Join(errInvalidBlock, vErr)
923+
if err := currState.AssertValidSequence(header); err != nil {
924+
if errors.Is(err, types.ErrInvalidChainID) ||
925+
errors.Is(err, types.ErrInvalidBlockHeight) ||
926+
errors.Is(err, types.ErrInvalidBlockTime) {
927+
return errors.Join(errInvalidBlock, &BlockValidationError{Fault: FaultHeader, Err: err})
926928
}
927929
return errors.Join(errInvalidState, err)
928930
}
929-
return nil
930-
}
931931

932-
// classifyValidationError tags a known external validation error with the side
933-
// at fault. It returns nil for errors that signal state divergence (the caller
934-
// must then classify them as errInvalidState).
935-
func classifyValidationError(err error) *BlockValidationError {
936-
switch {
937-
case errors.Is(err, types.ErrHeaderDataMismatch),
938-
errors.Is(err, types.ErrDataHashMismatch):
939-
return &BlockValidationError{Fault: FaultData, Err: err}
940-
case errors.Is(err, types.ErrUnexpectedProposer),
941-
errors.Is(err, types.ErrInvalidChainID),
942-
errors.Is(err, types.ErrInvalidBlockHeight),
943-
errors.Is(err, types.ErrInvalidBlockTime),
944-
errors.Is(err, types.ErrSignerPubKeyMissing),
945-
errors.Is(err, types.ErrSignerAddressMismatch),
946-
errors.Is(err, types.ErrSignatureEmpty),
947-
errors.Is(err, types.ErrSignatureVerificationFailed),
948-
errors.Is(err, types.ErrProposerAddressMismatch),
949-
errors.Is(err, types.ErrNoProposerAddress):
950-
return &BlockValidationError{Fault: FaultHeader, Err: err}
951-
default:
952-
return nil
932+
if err := types.Validate(header, data); err != nil {
933+
return errors.Join(errInvalidBlock, &BlockValidationError{Fault: FaultData, Err: fmt.Errorf("header-data validation failed: %w", err)})
953934
}
935+
936+
return nil
954937
}
955938

956939
var errMaliciousProposer = errors.New("malicious proposer detected")

0 commit comments

Comments
 (0)