A user can lock their SDL for lifetime and she can get rewards for lifetime.
Here is the problematic function:
https://github.com/Cyfrin/2023-12-stake-link/blob/549b2b8c4a5b841686fceb9c311dca9ac58225df/contracts/core/sdlPool/SDLPoolPrimary.sol#L107
After initiating unlock the lockId
is not removed from the locks
mapping, only just expiry
and boostAmount
is updated. As a result the lock position stays forever in the protocol even after maxLockingDuration
& the effectiveBalance
remains same.
Run this test:
The position will remain locked for lifetime as it is not removed while unlocking & as the effectiveBalance
is not changed the user will keep getting rewards until the protocol is in production.
Manual analysis.
Remove the lockId
from locks
mapping by delete locks[lockId]
while initiating unlock phase.
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.