Omniscia Beanstalk Audit
LibConvert Manual Review Findings
LibConvert Manual Review Findings
LCT-01M: Inexistent Justification of Calculations
Type | Severity | Location |
---|---|---|
Mathematical Operations | LibConvert.sol:L79-L88 |
Description:
The calculations for the LP necessary to peg are not properly outlined in the whitepaper, utilizing an undocumented 1502253380070105
constant presumably representing ~0.15%
.
Example:
protocol/contracts/libraries/LibConvert.sol
79function lpToPeg() internal view returns (uint256 lp) {80 (uint e, uint b) = reserves();81 (uint y, uint x) = pegReserves();82 uint c = sqrt(y*b*1e18/(x*e)).mul(1e9);83 if (c <= 1e18) return 0;84 uint num = e*(c.sub(1e18));85 uint denom = c.sub(1502253380070105);86 uint eth = num.div(denom);87 return eth.mul(totalLP()).div(e);88}
Recommendation:
We advise this section of the code to be properly documented and outlined in the whitepaper for validation. Once that is performed, this finding will be replaced by new findings regarding the lpToPeg
function (if any).
Alleviation:
The lpToPeg
function has been extensively documented to indicate what the calculation is meant to represent and we have deem the code implementation true to its documentation.