The RaiseBoxFaucet contract currently performs push payments of ETH to first-time claimers.
This pattern requires careful handling of proper failure handling to avoid permanently blocking first-time users.
Since this is an architecture recommendation, no immediate user funds are at risk if current protection hasClaimedEth is properly applied.
If token claim logic is isolated from ETH withdrawal logic, it will improve readability, testability, and maintainability - Separation of Concerns
Instead of sending ETH inside claimFaucetTokens(), credit users with a pending ETH balance:
Update all internal state (effects) first.
Record pendingSepEth[caller].
Let users call a separate withdrawSepEth() function to claim their ETH.
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.