The withdraw() function emits a Withdrawn event, but there's no check or event indicating WHICH treasures were claimed when withdrawing remaining funds. More critically, if claimsCount >= MAX_TREASURES but some treasures weren't actually claimed (due to the bug #3), the owner could withdraw funds that should have been available for legitimate claimants.
Likelihood:
Reason 1
Reason 2
Impact:
Impact 1: While the comment says this is intentional, having an unused public input is confusing
Impact 2: The recipient binding relies on it being part of the public inputs that get verified, but there's no explicit constraint showing this relationship.
Add an explicit constraint or documentation clarifying how the recipient provides replay protection.
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.
The contest is complete and the rewards are being distributed.