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.