Validators are an essential part of the Heimdall. Heimdall has an option to change validators at the end of each block. It is called
EndBlocker That's part of Cosmos-SDK: https://docs.cosmos.network/master/building-modules/beginblock-endblock.html
Heimdall uses following structure for the validator:
EndEpoch are checkpoint numbers in between validator will be active as a validator. In
EndBlocker for the app, Heimdall gets all active validators and updates the current validator set in the state.
In the end, it returns validator updates for the Tendermint.