Consider using an i_ prefix for immutable variables and s_ for storage variables to make their roles immediately distinguishable.
The direct consequence of missing i_ on _treasureHash is documented in a high vulnerability of a replay attack. The visual similarity between _treasureHash (immutable) and treasureHash (calldata parameter) made the following key mismatch easy to miss. Had the immutable been named i_treasureHash, the divergence between claimed[i_treasureHash] and claimed[treasureHash] would have been immediately visible to any reviewer, and likely caught before deployment.
Likelihood:
The absence of naming conventions affects every immutable and storage variable in the contract, meaning any reviewer or future developer working across the codebase will encounter this ambiguity consistently.
The visual similarity between _treasureHash (immutable) and treasureHash (calldata parameter) directly contributed to the key mismatch documented in the high-severity replay vulnerability, making this pattern likely to cause or mask future bugs during modifications.
Impact:
Missing prefixes reduce immediate distinguishability between immutable and storage variables, increasing the cognitive burden on reviewers and the risk of subtle bugs in future modifications.
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.