Line 181 executes usdc.safeTransfer(address(this), fees) — the contract sends USDC to itself, which is a no-op. Fees are tracked only via totalFeesCollected but never separated from user funds.
Likelihood:
Executes on every call to collectUsdcFromSelling
Impact:
Wasted gas. No ring-fenced fee balance — withdrawFees() draws from the same pool as user collateral
Calling collectUsdcFromSelling triggers usdc.safeTransfer(address(this), fees) which transfers USDC from the contract to itself — a no-op that costs gas. The contract balance does not change from this call; only the subsequent safeTransfer(msg.sender, amountToSeller) moves funds.
Remove the self-transfer. The fee accounting via totalFeesCollected is sufficient since the contract already retains fees worth of USDC by only sending price - fees + collateral to the seller.
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.