The deployment script instantiates MerkleAirdrop and transfers USDC from the broadcaster to the new contract. It uses the standard IERC20 transfer return value without SafeERC20, and never asserts the airdrop’s final token balance.
Slither excludes script/ via filter_paths, so this path was not reported by static analysis. The script is in audit scope per README.
Likelihood:
The broadcaster account lacks 100e6 USDC at broadcast time on zkSync Era.
USDC transfer returns false instead of reverting for insufficient balance (token-dependent behavior).
Impact:
An empty MerkleAirdrop is deployed on-chain; all user claims revert on safeTransfer.
Operations must redeploy or manually fund the contract, wasting gas and blocking the scheduled airdrop window.
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.