Description:
The receive() function unconditionally accepts ETH without updating pot or platformFeesBalance. Any ETH sent directly to the contract (e.g., via send/transfer/selfdestruct) becomes “stuck” in the contract balance but is not credited to any on-chain accounting.
Impact:
Fund Loss: Users may accidentally send ETH that can never be withdrawn by anyone.
Accounting Mismatch: address(this).balance no longer equals pot + platformFeesBalance, causing confusion.
Proof of Concept: Add the following test to the 'Game.t.sol':
Mitigation:
Reject direct transfers:
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.