The contract includes a receive()
function that accepts direct ETH transfers, but provides no mechanism to recover these funds. Any ETH sent directly to the contract (outside of the claimThrone()
function) becomes permanently locked, as there is no withdrawal function that can access these funds.
The contract accepts ETH via the receive()
function but has no recovery mechanism:
Key issues:
Contract accepts direct ETH transfers without restriction
No function exists to withdraw accidentally sent ETH
These funds are not tracked by any game state variables
Owner cannot access these stuck funds through existing withdrawal functions
Likelihood: Medium - Users may accidentally send ETH directly to the contract address, especially if confused about the game mechanics.
Impact: Low - Individual users may lose small amounts, but it doesn't affect game functionality or other users.
Low severity because:
Only affects users who accidentally send ETH directly (not through gameplay)
Doesn't impact game mechanics or other players
This test demonstrates how direct ETH transfers become permanently stuck in the contract:
Add an emergency withdrawal function to recover accidentally sent ETH:
There is no reason for a user to directly send ETH or anything to this contract. Basic user mistake, info, invalid according to CH Docs.
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.