Quantstamp reviewed MCDEX Arbitrum Integration on 21 Jun 2021: 9 findings, 0 critical; 4 marked fixed, 4 acknowledged, 1 open.
Report hosted on certificate.quantstamp.com.
Trustblock does not review code.
Statuses are the security firm’s own, from its report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 0 | 0 | 0 |
| Medium | 0 | 2 | 0 |
| Low | 1 | 2 | 4 |
There is a [recommendation](https://mcdex.io/references/#/en-US/mai-protocol-v3?id=_7-insurance-fund) to fill the initial and supplementary Insurance Funds with capital `liquidityPool.donatedInsuranceFund` from the operator (`We encourage operators to donate to the initial capital and supplement the insurance fund as the contract runs.`). There is also a mechanism to refill the Insurance Fund of the Perpetual with a certain ratio (`perpetual.insuranceFundRate` L457 of `TradeModule`) from the liquidation penalty (`When trader’s position gets liquidated due to insufficient margin, a certain ratio (based on the AMM parameters) of the charged liquidation penalty goes to the insurance fund`) that goes into `liquidityPool.insuranceFund`. But if the donated operator funds are insufficient then the liquidation penalty fraction assigned to insurance will always be insufficient to bail out the liquidated users because the liquidation penalty is always bigger than the ratio assigned for the replenishment (see L470-473 and check that `penaltyToFund < penalty`). > int256 penaltyToLP = liquidityPool.updateInsuranceFund(penaltyToFund); > perpetual.updateCash(address(this), penaltyToLP); > perpetual.updateCash(liquidator, penaltyToLiquidator); > perpetual.updateCash(trader, penalty.add(vaultFee).neg());
According to [documentation](https://mcdex.io/references/#/en-US/mai-protocol-v3?id=_6-settlement) `when Oracle does not provide updates for over 24 hours, the contract will also enter settlement`, but this functionality is not implemented.
Without optimizations, the contract size for `LiquidityPoolModule` several contracts`` exceeds 24576 bytes (a limit introduced in Spurious Dragon hard fork).
`PoolCreator.createLiquidityPool` allows the caller to introduce the same nonce multiple times which will result in a contract deployment failure.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (82)
236 projects reviewed · 332 reports · latest Oct 2026
See Quantstamp’s auditsSomething wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.
Tell us