list() enforces require(_price >= MIN_PRICE) to ensure no NFT sells below 1 USDC. But updatePrice() only checks _newPrice > 0. A seller can list at exactly MIN_PRICE to pass the initial check, then immediately call updatePrice to set the price to 1 wei (0.000001 USDC).
This completely defeats the minimum price floor.
Likelihood: Two transactions is all it takes: list at MIN_PRICE, then update to 1. No special setup needed.
Impact: The price floor becomes meaningless. Sellers can do wash trades at negligible cost (fees on 0.000001 USDC are effectively zero), undermining the fee mechanism and potentially manipulating trading volume metrics.
Alice lists NFT #1 at MIN_PRICE (1 USDC) — passes the check.
Alice calls updatePrice(1, 1) — sets price to 1 wei (0.000001 USDC). updatePrice only checks > 0, so it passes.
NFT is now listed at 0.000001 USDC, 1,000,000x below the intended minimum.
Apply the same MIN_PRICE check in updatePrice.
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.