It is possible to predict when the box will we with a gold coin due to bad randomness used in the MysteryBox::openBox function.
There is no way to generate a random value on-chain in EVM. The function MysteryBox::openBox uses the expression below to generate a "random" value:
There are some problems with this code:
Validators can manipulate block.timestamp value in some degree, so a validator can affect the random value generation
Users can calculate the same value in their transaction and based on the calculated value decide to open a box or not
Type of the opened box can be manipulated by validators, or users can just revert the transaction if the resulting box does not satisfy them.
Manual review
Do not rely on any on-chain value to generate a random values. Consider to use Chainlink VRF for that purpose.
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.