@@ -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
956939var errMaliciousProposer = errors .New ("malicious proposer detected" )
0 commit comments