With a high load on the Ethereum network, some users of the protocol will call the searchForEgg() function during the game, but due to the hight load on the network, their transaction will be completed much later and they will not pass the time interval of the game because game ended. This is due to the MIN_GAME_DURATION value being too low, which is a value of 60 seconds.
The contract owner can call the startGame() function with MIN_GAME_DURATION argument. This happens in the startGame() function:
The user uses searchForEgg() the function during the game interval, but due to the high load on the Ethereum network, his transaction will take too long to process, thus not falling into the game interval and not passing require constructions related to the game time (startTime and endTime interval). searchForEgg() source code:
Users with insufficiently high gas fees will not be able to use the searchForEgg() during a high load on the Ethereum network. Such situations will result in the loss of a certain number of users.
Manual code review
It is worth increasing the MIN_GAME_DURATION to at least 5 minutes. This solution will keep the players with a low gas fee. Of course, we won't save users with too low a gas fee, but we will save a certain number of users.
Changes to the code:
Strategy to save gas and minimize transaction costs
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.