The contract has a receive() function
which allows anyone to send ETH directly to the contract without triggering any game logic.
However, the game’s accounting only updates pot and platformFeesBalance inside functions like claimThrone().
ETH sent directly to the contract is not tracked in any variable, nor is it accessible through existing withdrawal mechanisms (other than via withdrawPlatformFees() which only applies to platform fees).
As a result, ETH sent directly is effectively locked inside the contract — it cannot be withdrawn by players or the owner, and will never be part of the prize pot or fees.
Likelihood:
Medium — Possible to trigger accidentally by users sending funds directly.
High if attackers deliberately send funds to create a “honeypot” appearance in the UI
Impact:
Funds sent directly are permanently locked in the contract.
Contract balance grows without a corresponding mechanism to retrieve those funds.
Potential gas waste and user frustration.
Send Any amount of ETH to contract and its unredeemable
Devs can Implement an Owner Sweep for Untracked Funds or decide to prevent direct sending of 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.