Checks are used in protocol to set some limitations/deadlines, but some instances lack inclusivity at the ends where as they should be
Take the setContest() function as an example
As seen it's been explicitly stated that the close time must be less than 28 days from now but this is not applied in code, since in the edge case where close time == 28 days + block.timestamp
, i.e not less than 28 days the line below does not revert
if (closeTime > block.timestamp + MAX_CONTEST_PERIOD || closeTime < block.timestamp) { revert ProxyFactory__CloseTimeNotInRange(); }
Also note that the same line does not revert if
closeTime == block.timestamp
which doesn't seem like the right way to operate a contest
Additinonally do note that a few other references still exist in the ProxyFactory.sol
contract but for brevity reasons only the setContest()
instance has been discussed in report
A break in contract's logic in multiple instances
Manual Audit
Check if a check should be inclusive and make it so if yes, additionally would be nice to introduce a minimum contest period as it doesn't make sense to have a contest just last for say 5 minutes or that has closeTime == block.timestamp
.
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.