The constructor accepts an _owner and _usdc address to set critical
protocol parameters. These values are immutable after deployment — owner
controls all privileged functions and usdc is the sole payment token.
Neither _owner nor _usdc are validated against address(0). A
deployment with either set to the zero address permanently disables all
owner-gated functionality and breaks all payment flows with no recovery path.
Likelihood: Low
A deployer passes address(0) as _owner or _usdc due to a
deployment script error or misconfiguration
No on-chain validation exists to catch this at deployment time —
the constructor succeeds silently with zero addresses
Impact: High
owner = address(0) — revealCollection, whitelistWallet,
withdrawFees all permanently uncallable, protocol never starts
usdc = address(0) — all transferFrom and safeTransfer calls
revert, minting and buying permanently broken
We can set owner as zero address in the contract which is not intended
Add following checks below to revert the contract while setting zero 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.
The contest is complete and the rewards are being distributed.