Listing.price is uint32. With 6-decimal USDC, type(uint32).max = 4,294,967,295 = ~4,294.97 USDC. The protocol defines MID_FEE_THRESHOLD = 10_000e6 (10,000,000,000) for the 5% fee tier, but this value exceeds uint32.max (4,294,967,295). The 5% fee tier in _calculateFees is dead code — mathematically unreachable through any listing flow. Additionally, the marketplace cannot support NFTs priced above ~4,295 USDC.
Likelihood:
This is a compile-time type constraint — every listing is affected, no special conditions needed
Any user attempting to list above ~4,295 USDC hits the type ceiling
Impact:
The 5% high-fee tier (HIGH_FEE_BPS = 500) is permanently dead code — the protocol's progressive fee model is broken by design
NFTs priced above ~4,295 USDC cannot be traded through this marketplace at all
At max listing price (~4,294 USDC), fee is 3% instead of intended 5% — 40% fee revenue shortfall for the protocol
The math:
uint32.max = 4,294,967,295
MID_FEE_THRESHOLD = 10,000,000,000
uint32.max < MID_FEE_THRESHOLD → the else branch (5% fee) is unreachable
Output: Max listing price (USDC): 4294 / HIGH_FEE_THRESHOLD needs (USDC): 10000 — proves the tier is unreachable.
Root cause — uint32 price field cannot reach fee thresholds defined as uint256:
Fix — use uint256 for all price fields:
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.