Scope:
RaiseBoxFaucet.sol (Lines 220-223)
Function: claimFaucetTokens()
Description:
Root cause + Impact: The daily claim counter reset mechanism uses timestamp comparison instead of day-based comparison and sets lastFaucetDripDay to the current timestamp rather than tracking day numbers. The condition block.timestamp > lastFaucetDripDay + 1 days creates unpredictable reset intervals. On first deployment, lastFaucetDripDay is 0, so the reset condition becomes "block.timestamp > 86400 seconds". After the first reset, lastFaucetDripDay becomes the current timestamp (e.g., 259200 at day 3), making subsequent resets require "block.timestamp > 345600" (day 4 total). This creates inconsistent day boundaries where users claiming at day 3.5 cannot claim because the limit was reached, even though a new calendar day hasn't technically started.
Risk:
Likelihood: This occurs predictably after the first reset and affects all subsequent claims. Users attempting to claim near day boundaries will encounter unexpected failures.
Impact: Users are unfairly blocked from claiming even when the day has changed from their perspective. This creates confusion, poor user experience, and potential loss of trust in the faucet. Some users get preferential treatment by claiming immediately after resets while others face arbitrary lockouts.
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.