The Game
contract sets multiple parameters in the constructor (e.g., _initialClaimFee
, _initialGracePeriod
, etc.) and never updates them after deployment.
These values are currently stored in storage
, which is more expensive both at deployment and runtime. Since they are immutable after construction, using the immutable
keyword would reduce gas costs and improve efficiency.
Likelihood:
This occurs any time constructor-set variables are used without being updated later.
Developers often overlook immutable
because the contract works as expected, but this results in silent gas inefficiency.
Impact:
Higher deployment gas cost since each variable uses a storage slot.
More expensive reads during runtime as storage
access is more costly than reading from bytecode (which is where immutable
values are stored).
Use forge build --sizes
or any size analyzer to compare gas costs for:
vs
You will see measurable differences in both bytecode size and gas cost for constructor and read ops.
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.