From e9427eafb57fa45ce32f973ce75027b4ed70534e Mon Sep 17 00:00:00 2001 From: mingda Date: Sat, 11 Jul 2020 01:16:26 +0800 Subject: [PATCH] add getMidPrice --- contracts/impl/Pricing.sol | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/contracts/impl/Pricing.sol b/contracts/impl/Pricing.sol index eaeda9b..ee88a7f 100644 --- a/contracts/impl/Pricing.sol +++ b/contracts/impl/Pricing.sol @@ -157,6 +157,25 @@ contract Pricing is Storage { } } + function getMidPrice() public view returns (uint256 midPrice) { + (uint256 baseTarget, uint256 quoteTarget) = getExpectedTarget(); + if (_R_STATUS_ == Types.RStatus.BELOW_ONE) { + uint256 R = DecimalMath.divFloor( + quoteTarget.mul(quoteTarget).div(_QUOTE_BALANCE_), + _QUOTE_BALANCE_ + ); + R = DecimalMath.ONE.sub(_K_).add(DecimalMath.mul(_K_, R)); + return DecimalMath.divFloor(getOraclePrice(), R); + } else { + uint256 R = DecimalMath.divFloor( + baseTarget.mul(baseTarget).div(_BASE_BALANCE_), + _BASE_BALANCE_ + ); + R = DecimalMath.ONE.sub(_K_).add(DecimalMath.mul(_K_, R)); + return DecimalMath.mul(getOraclePrice(), R); + } + } + function _RAboveIntegrate( uint256 B0, uint256 B1,