Skip to content
This repository was archived by the owner on Aug 26, 2024. It is now read-only.

Commit 7cb5c7d

Browse files
authored
Merge pull request #81 from ionicprotocol/update-lens-router
Update lens router APR function
2 parents 4b220fa + f239ed3 commit 7cb5c7d

File tree

5 files changed

+1062
-969
lines changed

5 files changed

+1062
-969
lines changed

contracts/ionic/strategies/flywheel/IonicFlywheelLensRouter.sol

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,13 @@ contract IonicFlywheelLensRouter {
9191
market,
9292
rewardTokenDecimals[j]
9393
);
94-
uint256 apr = getApr(rewardSpeedPerSecondPerToken, rewardTokenPrices[j], price, market.exchangeRateCurrent());
94+
uint256 apr = getApr(
95+
rewardSpeedPerSecondPerToken,
96+
rewardTokenPrices[j],
97+
price,
98+
market.exchangeRateCurrent(),
99+
flywheel.flywheelBooster.address != address(0)
100+
);
95101

96102
rewardsInfo[j] = RewardsInfo({
97103
rewardSpeedPerSecondPerToken: rewardSpeedPerSecondPerToken, // scaled in 1e18
@@ -132,14 +138,21 @@ contract IonicFlywheelLensRouter {
132138
uint256 rewardSpeedPerSecondPerToken,
133139
uint256 rewardTokenPrice,
134140
uint256 underlyingPrice,
135-
uint256 exchangeRate
141+
uint256 exchangeRate,
142+
bool isBorrow
136143
) internal pure returns (uint256) {
137144
if (rewardSpeedPerSecondPerToken == 0) return 0;
138145
uint256 nativeSpeedPerSecondPerCToken = rewardSpeedPerSecondPerToken * rewardTokenPrice; // scaled to 1e36
139146
uint256 nativeSpeedPerYearPerCToken = nativeSpeedPerSecondPerCToken * 365.25 days; // scaled to 1e36
140147
uint256 assetSpeedPerYearPerCToken = nativeSpeedPerYearPerCToken / underlyingPrice; // scaled to 1e18
141148
uint256 assetSpeedPerYearPerCTokenScaled = assetSpeedPerYearPerCToken * 1e18; // scaled to 1e36
142-
uint256 apr = assetSpeedPerYearPerCTokenScaled / exchangeRate; // scaled to 1e18
149+
uint256 apr = assetSpeedPerYearPerCTokenScaled;
150+
if (!isBorrow) {
151+
// if not borrowing, use exchange rate to scale
152+
apr = assetSpeedPerYearPerCTokenScaled / exchangeRate; // scaled to 1e18
153+
} else {
154+
apr = assetSpeedPerYearPerCTokenScaled / 1e18; // scaled to 1e18
155+
}
143156
return apr;
144157
}
145158

@@ -163,7 +176,8 @@ contract IonicFlywheelLensRouter {
163176
rewardSpeedPerSecondPerToken,
164177
oracle.price(address(rewardToken)),
165178
underlyingPrice,
166-
market.exchangeRateCurrent()
179+
market.exchangeRateCurrent(),
180+
flywheel.flywheelBooster.address != address(0)
167181
);
168182

169183
totalMarketRewardsApr += int256(marketApr);

0 commit comments

Comments
 (0)