Native ETH transfers are not supported on the zkSync Era chain, which means that msg.value is always zero. Instead of using msg.value for transactions, zkSync utilizes a system of fees and gas limits that are abstracted away from the traditional Ethereum model.
Thus, when users try to claim their airdrop amounts, msg.value will be zero, which will cause the transaction to revert with MerkleAirdrop__InvalidFeeAmount()
.
Severity: High
Likelihood: High
Eligible users will be unable to claim their airdrop amounts due to msg.value always being set to zero. This defeats the purpose of the protocol. Additionally, the USDC funds transferred to the MerkleAirdrop
by the protocol team will be stuck in the contract, since there is no function to withdraw the remaining token balance.
Manual review.
Collect fees in WETH, an ERC20 token. We'll need to modify both the MerkleAirdrop::claim()
and the MerkleAirdrop::claimFees()
functions. Here are the changes:
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.