The entire security model of the protocol relies on treasure secrets being unknown to participants. A valid ZK proof can only be generated by someone who knows the secret preimage of an allowed treasure hash. However, all 10 secret values are explicitly listed in plaintext in the public deploy script comments. Any person reading the repository can extract these secrets, generate valid ZK proofs off-chain, and claim all 10 rewards without physically finding any treasure.
The comment even confirms the mapping — secret 1 corresponds to hash 1505662313..., secret 2 to -7876059..., and so on. No physical treasure hunt is required.
Likelihood:
Secrets are in a public GitHub repository — visible to anyone with the link
No technical skill required — secrets are plain integers (1 through 10)
Generating a ZK proof requires only the Noir toolchain (nargo prove) which is publicly available
Impact:
Any person can generate 10 valid ZK proofs off-chain using secrets 1–10
All 10 treasures can be claimed without any physical participation
Full 100 ETH drained before any legitimate finder can submit
The ZK proof system provides zero protection — the secret knowledge it is meant to protect is public
Remove all secret values from the deploy script immediately. Secrets must never appear in any file committed to a public repository. The deploy script should reference secrets via environment variables only.
For a real deployment, secrets should be stored in a secure off-chain vault and only used locally to generate proofs, never written to any file that enters source control.
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.