The contract defines:
Yet no external or internal functions ever modify the paused variable. Consequently, paused can never be changed from its default state (presumably false), rendering the whenNotPaused guard meaningless.
Here’s a minimal PoC concept:
Assumption: The contract’s owner finds a critical bug and wants to pause the contract to stop user calls to lock, increase, etc.
Reality: No function exists to call paused = true;. So the system continues operating, cannot be paused.
PoC in Foundry
test that queries the paused variable and tries to call an imaginary pause():
This trivial test demonstrates that no function to switch paused from false to true is present.
No Emergency Halt: If an exploit is discovered, owners cannot use the already-coded whenNotPaused guard to freeze user interactions.
False Sense of Security: The presence of a paused variable and whenNotPaused modifier might mislead developers or integrators into believing there is an actual pause mechanism.
Implement standard pause/unpause methods:
Then, the whenNotPaused checks become meaningful, allowing the contract to stop or resume operations as intended.
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.