The contract includes a receive()
function, allowing it to accept ETH
transfers. However, it lacks an admin or emergency function to withdraw ETH
that could be accidentally sent to the contract address outside the intended game logic.
While protocol fees can be withdrawn via withdrawFees()
, any ETH
sent directly (or residual ETH
due to unexpected situations) would remain permanently locked.
ETH
mistakenly sent to the contract cannot be recovered.
Funds could accumulate over time due to user errors.
Operational inefficiency and potential future need for contract migration to recover assets.
Manual Review and Foundry
Implement an admin-only rescueETH()
function to recover accidentally sent ETH, while ensuring protocol fees remain protected:
This allows recovery of stuck ETH without affecting accumulatedFees. Use only for exceptional cases.
ETH sent directly to the contract via the receive function or after a canceled game becomes permanently locked
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.