Skip to content

Commit 38ae041

Browse files
committed
[force remove] slippage check for #789
1 parent 5195ca6 commit 38ae041

File tree

4 files changed

+24
-3
lines changed

4 files changed

+24
-3
lines changed

src/adapters/MorphoMarketV1Adapter.sol

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ contract MorphoMarketV1Adapter is IMorphoMarketV1AdapterStaticTyping {
112112
uint256 mintedShares;
113113
if (assets > 0) {
114114
(, mintedShares) = IMorpho(morpho).supply(marketParams, assets, 0, address(this), hex"");
115+
require(mintedShares >= assets, SharePriceTooHigh());
115116
position.supplyShares += uint128(mintedShares);
116117
}
117118

src/adapters/interfaces/IMorphoMarketV1Adapter.sol

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,13 @@ interface IMorphoMarketV1AdapterBase is IAdapter {
2525

2626
/* ERRORS */
2727

28+
error AlreadyPending();
2829
error LoanAssetMismatch();
2930
error NotAuthorized();
31+
error NotPending();
3032
error NotTimelocked();
33+
error SharePriceTooHigh();
3134
error TimelockNotExpired();
32-
error AlreadyPending();
33-
error NotPending();
3435

3536
/* FUNCTIONS */
3637

test/integration/MorphoMarketV1IntegrationAllocationTest.sol

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,20 @@ contract MorphoMarketV1IntegrationAllocationTest is MorphoMarketV1IntegrationTes
140140

141141
assertEq(adapter.marketParamsListLength(), 1, "duplicate market in market list");
142142
}
143+
144+
function testAllocateWithSlippage() public {
145+
// Increase rate by borrowing.
146+
deal(address(collateralToken), borrower, type(uint256).max);
147+
vm.startPrank(borrower);
148+
collateralToken.approve(address(morpho), type(uint256).max);
149+
morpho.supplyCollateral(marketParams1, 2 * initialInMarket1, borrower, hex"");
150+
morpho.borrow(marketParams1, initialInMarket1, 0, borrower, borrower);
151+
vm.stopPrank();
152+
153+
vm.warp(block.timestamp + 60 * 60 * 24 * 365 * 200); //200 years
154+
155+
vm.prank(allocator);
156+
vm.expectRevert(IMorphoMarketV1AdapterBase.SharePriceTooHigh.selector);
157+
vault.allocate(address(adapter), abi.encode(marketParams1), 100);
158+
}
143159
}

test/integration/MorphoMarketV1IntegrationTest.sol

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ import "../BaseTest.sol";
77
import {MorphoMarketV1Adapter} from "../../src/adapters/MorphoMarketV1Adapter.sol";
88
import {MorphoMarketV1AdapterFactory} from "../../src/adapters/MorphoMarketV1AdapterFactory.sol";
99
import {IMorphoMarketV1AdapterFactory} from "../../src/adapters/interfaces/IMorphoMarketV1AdapterFactory.sol";
10-
import {IMorphoMarketV1Adapter} from "../../src/adapters/interfaces/IMorphoMarketV1Adapter.sol";
10+
import {
11+
IMorphoMarketV1Adapter,
12+
IMorphoMarketV1AdapterBase
13+
} from "../../src/adapters/interfaces/IMorphoMarketV1Adapter.sol";
1114

1215
import {ORACLE_PRICE_SCALE} from "../../lib/morpho-blue/src/libraries/ConstantsLib.sol";
1316
import {OracleMock} from "../../lib/morpho-blue/src/mocks/OracleMock.sol";

0 commit comments

Comments
 (0)