Medium
Many critical state-changing functions in the contract don't emit events, making it difficult to track off-chain. This reduces transparency, complicates integration with external systems, and makes it harder to monitor the contract for security issues or verify expected behavior.
All important state changes should emit events. However, several critical functions in the contract are missing events:
Initialize Function: No event when the contract is initialized
GraduateAndUpgrade Function: No event indicating graduation, upgrade, or payments
_authorizeUpgrade Function: No event when upgrade is authorized
CutOffScore Setting: The SchoolInSession
event doesn't include the cutOffScore parameter
This lack of event emissions makes it difficult to:
Track the contract's state changes off-chain
Build interfaces that respond to contract changes
Conduct post-mortem analysis if issues occur
Verify the contract is functioning as expected
Manual code review
Add events for all critical state changes:
Event not emitted
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.