In a decentralized treasure hunt, funds should ideally be locked and only accessible via valid ZK proofs or after a long timeout.
The current implementation allows the owner to pause() the contract at any time and then call emergencyWithdraw(). This effectively gives the owner a "backdoor" to reclaim all 100 ETH, breaking the trust-minimized nature of the ZK hunt.
Likelihood: Low
Depends on the integrity of the owner.
Impact: High
The owner can unilaterally pause the contract and withdraw all funds, including rewards intended for hunters who have already found treasures but not yet claimed them.
Implement a time-lock or remove the emergencyWithdraw function in favor of the existing withdraw() function which only works after MAX_TREASURES are claimed.
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.