The EggHuntGame contract has several functions, including startGame()
, that are restricted to the contract owner. This creates a centralization risk where the owner has exclusive control over critical game functionality.
The startGame()
function uses the onlyOwner
modifier:
This restricts the ability to start the game exclusively to the contract owner. Similar restrictions exist on other admin functions like endGame()
and setEggFindThreshold()
.
Medium impact (centralization vulnerability). While this design choice is intentional for administrative purposes, it introduces several risks:
Single point of failure - if the owner key is compromised, game operation could be disrupted
Trust requirement - users must trust the owner not to manipulate game conditions unfairly
Censorship risk - owner could selectively prevent certain games from starting
Key loss risk - if owner keys are lost, the game could become permanently inoperable
Manual code review
Consider implementing one or more of these mitigations:
Time-lock mechanism: Add a delay between owner-initiated actions and their execution to allow users to react to potentially malicious actions.
Multi-signature governance: Replace the single owner with a multi-signature scheme requiring multiple approvals for administrative actions.
DAO or community governance: Transition control to a decentralized autonomous organization where token holders vote on key decisions.
Automated scheduling: Implement an automated game schedule that doesn't rely on owner intervention for regular operations.
Owner is trusted and is not expected to interact in ways that would compromise security
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.