File: src/MerkleAirdrop.sol (line 18), script/Deploy.s.sol
The contract defines FEE = 1e9 with no unit annotation. In Solidity, numeric literals in wei mean FEE = 1 Gwei = 0.000000001 ETH. The README states the fee is required for cost recovery, yet this fee is economically negligible (fractions of a cent), effectively meaning claims are free, and the fee mechanism provides no protection or revenue.
In Solidity, all values are in wei unless explicitly denoted with ether or gwei. 1e9 = 1,000,000,000 wei = 1 Gwei ≈ $0.000000003 at ETH=$3000.
If the intent was 1e9 ETH (i.e., 1e9 * 1e18 wei), the constant is off by 18 orders of magnitude. Alternatively, if the intent is to charge a $0.01 fee, the value should be calibrated against current gas/ETH pricing dynamically.
This also makes the fee mechanism inconsistent on zkSync where gas pricing differs from mainnet.
The fee provides essentially zero economic protection against spam claiming.
CRITICAL-1 (unlimited re-claiming) is made even easier because the attacker fee cost is negligible.
No meaningful revenue for the protocol owner.
Manual analysis
Unit analysis
If fee in ETH is intended:
Alternatively, make the fee configurable by the owner:
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.