Part 2

Zaros
PerpetualsDEXFoundrySolidity
70,000 USDC
View results
Submission Details
Severity: medium
Invalid

[M-1] Precision Loss in USD Token Minting Creates Protocol Debt in CreditDelegationBranch

Summary

withdrawUsdTokenFromMarket truncates fractional values during adjustedUsdTokenToMintX18 → uint256 conversion, creating unredeemable USD Token.

Vulnerability Details

Affected Code:

UD60x18 adjustedUsdTokenToMintX18 = ...;
amountToMint = adjustedUsdTokenToMintX18.intoUint256(); // Truncates decimals

Example:

Calculated mint amount: 100.999999 USD

Actual minted: 100 USD

0.999999 USD becomes protocol debt

Exploit Scenario:
Repeated small truncations across markets create systemic unbacked debt.

Impact

Exploit Scenario:
Repeated small truncations across markets create systemic unbacked debt.

Tools Used

PRBMath analysis

Differential testing

Recommendations

// Round up to prevent protocol debt
amountToMint = adjustedUsdTokenToMintX18.ceil().intoUint256();
Updates

Lead Judging Commences

inallhonesty Lead Judge 5 months ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.