The LevelOne contract lacks a persistent mechanism to track expelled students across school years/deployments. When a student is expelled, their status is only removed for the current contract instance, allowing them to re-enroll in subsequent school years when a new contract is deployed.
The LevelOne contract fails to maintain any record of past expulsions, treating expelled students as if they were never part of the system. This allows a student who has been expelled for disciplinary reasons to simply re-enroll in a subsequent session.
When a student is expelled via the expel() function, the contract only:
Removes them from the listOfStudents array
Sets their isStudent[address] mapping to false
The contract maintains no persistent record that this student was expelled rather than simply unenrolled or graduated.
Proof of Concept
A student expelled in one contract/school session can freely enroll in a new school session as their expulsion is not tracked after the act.
Circumvention of Disciplinary Actions: Expulsion loses its effectiveness as a permanent disciplinary measure.
Authority Undermining: The principal's authority to permanently remove problematic students is compromised.
Reputational Risk: Schools cannot maintain consistent disciplinary standards across academic years.
Foundry
Manual code review
Test functions demonstrating enrollment capabilities (testExpel and testExpelledStudentcanReEnroll)
Implementing a permanent record of expelled students using the below approach:
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.