In looking at the Chainlink Keepers documentation, it says you can set up a time-based keeper, which allows it to call a function in your smart contract based on a CRON schedule.
When should we use this instead of the custom logic trigger? It doesn't require that our contract be keeper compatible, so it sounds like it may be easier to implement.
But does the function that the keepers will call have to be public, or is there a way to ensure only keepers can call the function? For example if I have a pickWinner() function that I want to run every hour, and don't want some random hacker invoking it early.
And is the time-based trigger more or less gas efficient, since it says it deploys a new CronUpkeep contract to manage the schedule?