The veRAACToken
contract lacks the ability to pause or unpause operations in case of an emergency. Unlike other contracts in the protocol that inherit from OpenZeppelin’s Pausable
contract, veRAACToken
neither inherits from Pausable
nor provides a setter function to update the paused
state variable.
The contract defines a paused
state variable but fails to implement a mechanism to modify its value. As a result, once deployed, the contract remains permanently in an unpaused state. The whenNotPaused
modifier is present and correctly reverts transactions if paused
is set to true
, but without a setter function or an inherited Pausable
mechanism, there is no way to change this state.
In the event of an emergency or a critical bug, the veRAACToken
contract cannot be paused, allowing functions guarded by the whenNotPaused
modifier to remain callable. This includes critical functions such as lock
, increase
, extend
, and withdraw
, which could lead to further exploitation or financial loss if an issue arises.
Manual review.
To ensure consistency with other contracts in the protocol and provide emergency control, the veRAACToken
contract should inherit from OpenZeppelin’s Pausable
contract and implement functions to toggle the paused
state. A setter function with appropriate access control (e.g., onlyOwner
or onlyAdmin
) should be added to enable authorized users to pause or resume operations when necessary.
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.