Skip to content

Commit

Permalink
Fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
Keshavrajsinghal committed Jun 14, 2024
1 parent 32b0a95 commit 7e7c26b
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 267 deletions.
14 changes: 8 additions & 6 deletions src/L2/ExponentialPremiumPriceOracle.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,17 @@ pragma solidity ~0.8.17;
import "./StablePriceOracle.sol";
import {GRACE_PERIOD} from "src/util/Constants.sol";
import {EDAPrice} from "src/lib/EDAPrice.sol";
import {FixedPointMathLib} from "src/lib/FixedPointMathLib.sol";
import "solady/utils/FixedPointMathLib.sol";
import {Test, console} from "forge-std/Test.sol";


contract ExponentialPremiumPriceOracle is StablePriceOracle {
uint256 immutable startPremium;
uint256 immutable endValue;
uint256 public immutable startPremium;
uint256 public immutable endValue;

constructor(uint256[] memory rentPrices, uint256 startPremium, uint256 totalDays) StablePriceOracle(rentPrices) {
startPremium = startPremium;
endValue = startPremium_ >> totalDays;
constructor(uint256[] memory rentPrices, uint256 startPremium_, uint256 totalDays) StablePriceOracle(rentPrices) {
startPremium = startPremium_;
endValue = startPremium >> totalDays;
}

uint256 constant PRECISION = 1e18;
Expand Down
18 changes: 12 additions & 6 deletions src/lib/EDAPrice.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

import {FixedPointMathLib} from "src/lib/FixedPointMathLib.sol";
import {Test, console} from "forge-std/Test.sol";
import "solady/utils/FixedPointMathLib.sol";


library EDAPrice {
/// @notice returns the current price of an exponential price decay auction defined by the passed params
Expand All @@ -20,14 +22,18 @@ library EDAPrice {
uint256 secondsInPeriod,
uint256 perPeriodDecayPercentWad
) internal pure returns (uint256) {
uint256 ratio = FixedPointMathLib.divWadDown(secondsElapsed, secondsInPeriod);
// uint256 ratio = FixedPointMathLib.divWadDown(secondsElapsed, secondsInPeriod);
// uint256 percentWadRemainingPerPeriod = FixedPointMathLib.WAD - perPeriodDecayPercentWad;
uint256 ratio = FixedPointMathLib.divWad(secondsElapsed, secondsInPeriod);
uint256 percentWadRemainingPerPeriod = FixedPointMathLib.WAD - perPeriodDecayPercentWad;

// percentWadRemainingPerPeriod can be safely cast because < 1e18
// ratio can be safely cast because will not overflow unless ratio > int256.max,
// which would require secondsElapsed > int256.max, i.e. > 5.78e76 or 1.8e69 years
uint256 multiplier = percentWadRemainingPerPeriod ** ratio;
// casting to uint256 is safe because percentWadRemainingPerPeriod is non negative
uint256 price = startPrice * uint256(multiplier);
return (price / FixedPointMathLib.WAD);
int256 multiplier = FixedPointMathLib.powWad(int256(percentWadRemainingPerPeriod), int256(ratio));
uint256 price = (startPrice * uint256(multiplier)) / FixedPointMathLib.WAD;
return price;
}


}
255 changes: 0 additions & 255 deletions src/lib/FixedPointMathLib.sol

This file was deleted.

0 comments on commit 7e7c26b

Please sign in to comment.