The contract includes a receive() function, allowing it to accept direct Ether transfers without an associated function call. However, there is no mechanism to withdraw these funds. Any user who accidentally sends ETH to the contract address will have their funds permanently locked, as the transfer does not credit any user-specific balance or the game pot.
The receive() function enables the contract to accept raw ETH transfers.
Funds sent this way increase the contract's total balance but are not allocated to the pot, platformFeesBalance, or any pendingWinnings.
There is no function for users to reclaim these accidentally transferred funds, leading to a permanent loss.
Likelihood:
Users may accidentally send ETH to the contract address directly from their wallet, mistaking it for a payment address.
This is a common user error, especially for less experienced users interacting with smart contracts.
Impact:
Causes direct, irreversible financial loss for users who make this mistake.
Can damage the reputation and trustworthiness of the game, as users will see their funds locked without recourse.
Instead of removing the receive() function, an alternative is to add a new function that allows the contract owner to withdraw any funds that have been accidentally sent to the contract.
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.