Normal behavior: Each of ten distinct treasures should be able to pay out once under fair rules; claimsCount should reflect distinct successful hunts.
Problem: Combining the broken replay guard (snarkeling-1) with claimsCount capped at MAX_TREASURES, a participant can call claim ten times with the same treasureHash and proof, consuming the full hunt quota and blocking nine other treasures from paying out under normal fairness assumptions.
Likelihood:
Same exploit path as snarkeling-1 whenever a valid proof exists.
A single automated loop drains quota in one session.
Impact:
One treasure id consumes all ten slots; others never pay under intended rules.
High fairness impact for multi-participant hunts.
Explanation: claimsCount increments on every successful claim, but the replay guard does not persist claimed[treasureHash] correctly (snarkeling-1). One (proof, treasureHash) pair can therefore consume all 10 slots, blocking nine other treasure hashes from ever paying under a fair per-treasure policy.
Supporting code — commands (after circuits/scripts/build.sh):
Supporting code — full test (same as snarkeling-1; demonstrates quota burn):
Expected result: test passes; claimsCount == 10 with identical (proof, treasureHash) every iteration.
Explanation: Fix the replay guard as in snarkeling-1 so claimed[treasureHash] is set for the hash used in claim. After that, optionally enforce that claimsCount only advances when treasureHash was not previously claimed, so one hash cannot consume the entire quota. That restores fair participation across ten distinct treasures.
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.