The Staking contract allows a user with love tokens but no soulmate, to deposit to stake and claim a large amount of staking rewards.
The claimRewards() function in Staking.sol does not check if a user has a soulmate, so the calculation takes a wrong number of weeks and sends and incorrect amount of tokens to the user.
This test claims rewards without a soulmate.
The test shows the tokens claimed by alice.
Users can steal tokens from the staking vault.
Foundry, Manual review
Add a soulmate check in Staking:claimRewards()
High severity, as it allows any pending user to claim staking rewards without owning a soulmate NFT by - Obtaining love tokens on secondary markets - Transfer previously accrued love tokens via airdrops/rewards to another account and abusing the `deposit()` function
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.