The USDC token address is incorrect in ./script/Deploy.s.sol
, preventing users from claiming their tokens, and protocol owners cannot withdraw the tokens they deposited.
The USDC token address on zkSync Era is 0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4
, but the Deploy::s_zkSyncUSDC
value provided is 0x1D17CbCf0D6d143135be902365d2e5E2a16538d4
, which is slightly different. This discrepancy is highlighted below:
This incorrect value is passed as the MerkleAirdrop::i_airdropToken value.
The address passed as MerkleAirdrop::i_airdropToken
is incorrect, but the USDC token address for transfer is correct in Deploy::run
As a result, when the user wants to claim their reward through MerkleAirdrop::claim
, it will revert since the incorrect MerkleAirdrop::i_airdropToken
address does not have enough balance.
The MerkleAirdrop::i_airdropToken
balance is 0, since a different token was sent into the protocol.
The impact is as follows:
(1) User unable to claim rewards
(2) Owner cannot withdraw the USDC token back
Manual Review
Update the Deploy::s_zkSyncUSDC
address to the correct USDC token address.
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.