Consider emitting events for all major state changes (graduation, upgrades, bursary payouts)
You should emit events at the end of the function, after all the critical actions (payments, checks, and upgrade) have been performed.
This will allow any off-chain system to track what action occurs and which contract address is now active.
The impact of missing an emit statement for your event can be significant for usability, transparency, and integrations.
If you don’t emit the event, there’s no easy way for external systems to know that action happened, or to which address
Debugging and Auditing Becomes Harder
Manual Review
Add these at the top of LevelOne.sol contract.
You can configure graduateAndUpgrade function as following.
Event not emitted
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.