Due to the divisor
division calculation being performed first and the results being added to get the return value, precision loss may occur when longToken == shortToken
.
contracts/libraries/gmx/MarketUtils.sol#L126
For example, when dataStore.getUint(openInterestKey(market, collateralToken, isLong))
returns an odd number like 13
, the return value will be 13 / 2 = 6
.
The precision loss problem will make the return value of the getOpenInterest
function smaller than normal.
This precision loss issue can be avoided by moving the divisor
division operation to the end:
Please read the CodeHawks documentation to know which submissions are valid. If you disagree, provide a coded PoC and explain the real likelihood and the detailed impact on the mainnet without any supposition (if, it could, etc) to prove your point.
There is no real proof, concrete root cause, specific impact, or enough details in those submissions. Examples include: "It could happen" without specifying when, "If this impossible case happens," "Unexpected behavior," etc. Make a Proof of Concept (PoC) using external functions and realistic parameters. Do not test only the internal function where you think you found something.
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.