mintNft() and buy() are marked payable, but the contract exclusively uses USDC for all payments. There is no receive(), fallback(), or ETH withdrawal function.
Any ETH accidentally sent alongside a mintNft() or buy() call is permanently locked in the contract with no recovery mechanism.
Likelihood:
Users expecting ETH-based NFT mints (common pattern) send ETH and receive no refund.
Wallet UIs that pre-populate value fields can inadvertently include ETH in the call.
Impact:
ETH sent to the contract is permanently unrecoverable; there is no withdrawal path.
Users lose funds with no on-chain recourse.
A whitelisted user sends 1 ETH alongside the USDC mint. The ETH is accepted by the payable function and becomes permanently locked in the contract.
Remove payable from both functions since no ETH payment is required. The contract should reject any ETH sent to it.
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.
The contest is complete and the rewards are being distributed.