Normal behavior: mint collateral should remain locked until valid sale settlement and should not be unlocked by canceling a listing.
Issue: cancelListing directly transfers collateralForMinting[tokenId] back to seller, allowing mint/list/cancel loops where users recover all locked funds without selling.
The protocol's economic invariant is that mint collateral should remain locked until a valid sale lifecycle is completed. Returning collateral during cancellation breaks that invariant by turning lockup into a reversible step controlled entirely by seller action.
This means users can mint NFTs, list to appear compliant with flow, cancel instantly, and recover principal without any market execution. The design no longer enforces economic commitment, and collateral accounting loses its protective function.
Likelihood:
Seller-controlled call path; no special privileges required.
Repeats for each minted token and executes immediately.
Impact:
Economic lock mechanism is neutralized.
Enables chained abuse with fake settlement withdrawals.
Seller balance is recorded before mint/list.
Seller mints and lists, which should lock collateral in contract.
Seller cancels listing.
Post-cancel balance equals pre-mint balance, proving collateral was fully refunded without sale.
collateralForMinting(tokenId) becomes zero, confirming lock was removed by cancellation.
Cancellation should only deactivate listing availability, not settle economics. Keeping collateral locked during cancel preserves intended game theory and ensures collateral release happens only inside a verified sold-settlement path.
This also reduces exploit composition with payout bugs, because attackers cannot pre-unlock capital before attempting invalid claims.
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.