Root Cause: No “no-op” guard and redundant events on identical updates -> Impact: Excessive SSTORE gas, bloated logs, and potential griefing through forced expensive transactions and log spam
Several owner-only functions in Game.sol update configuration parameters without first checking if the new values differ from the current ones and unconditionally emit events—even when nothing changes:
updateGracePeriod(uint256 _newGracePeriod)
updateClaimFeeParameters(uint256 _newInitialClaimFee, uint256 _newFeeIncreasePercentage)
updatePlatformFeePercentage(uint256 _newPlatformFeePercentage)
Each identical update triggers:
An SSTORE write, costing up to ~20 000 gas per slot.
An event emission, which stores data in the transaction log—incurring additional gas and polluting the logs with meaningless entries.
State Update: Always writes to storage, even if the value hasn’t changed.
Event Emission: Always logs an update event, regardless of whether any meaningful change occurred.
Likelihood: High
Over time or via malicious governance spamming, these no-op calls and redundant events lead to significant gas waste, bloated archives, harder log filtering, and can be weaponized to grief users by driving up block gas usage.
Impact: Gas
Gas Waste: Useless SSTOREs and log writes burn hundreds of millions of gas over repeated calls.
Log Pollution: Spamming events makes it difficult to distinguish genuine configuration changes from noise.
Governance Griefing: A malicious owner or proposal can force network participants to pay for irrelevant updates, creating friction and distrust.
Audit Overhead: Event logs become cluttered, complicating on-chain analytics and forensic audits.
Tools Used:
Foundry Test Suite
Chat-GPT AI Assistance (Report Grammar Check & Improvements)
Manual Review
step 1: go to test/Game.t.sol file
step 2: paste the above code ⬆️
step 3: run the test suite unit
step 4: See the Output
Measure gas before/after inserting no-op guards will show per-call savings of ~20 000–40 000 gas plus log data costs.
Scenario:
An automated governance script inadvertently re-submits a parameter-change proposal with the same values. Each execution:
Writes the same value into storage, burning ~20 000 gas per slot.
Emits the update event, adding extra log data and gas cost (~375 gas + data).
A malicious owner could spam these calls to inflate gas consumption and pollute event logs, making off-chain analytics and filtering more difficult.
Add “No-Op” Guards
Conditionally Emit Events
Only emit if the storage write actually occurs and state updates.
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.