Skip to content

Commit 1809386

Browse files
committed
feat: share improvement
1 parent f7ac78a commit 1809386

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

certora/specs/LiquidateBuffer.spec

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ function wDivDown(uint256 x, uint256 y) returns uint256 {
3232
return summaryMulDivDown(x, Util.wad(), y);
3333
}
3434

35+
function wDivUp(uint256 x, uint256 y) returns uint256 {
36+
return summaryMulDivUp(x, Util.wad(), y);
37+
}
38+
3539
rule liquidateImprovePosition(MorphoLiquidateHarness.MarketParams marketParams, uint256 seizedAssetsInput, uint256 repaidSharesInput) {
3640
MorphoLiquidateHarness.Id id = Util.libId(marketParams);
3741

@@ -56,13 +60,21 @@ rule liquidateImprovePosition(MorphoLiquidateHarness.MarketParams marketParams,
5660
(seizedAssets, repaidShares, repaidAssets, lif) = liquidateView(marketParams, seizedAssetsInput, repaidSharesInput, collateralPrice);
5761
require repaidAssets > 0;
5862

59-
uint256 borrowerCollateralQuoted = summaryMulDivUp(borrowerCollateral, collateralPrice, Util.oraclePriceScale());
63+
uint256 borrowerCollateralQuoted = summaryMulDivDown(borrowerCollateral, collateralPrice, Util.oraclePriceScale());
6064
require borrowerCollateralQuoted >= summaryMulDivUp(lif, borrowerAssets, Util.wad());
6165
assert wDivDown(borrowerCollateralQuoted, borrowerAssets) >= lif;
6266

6367
uint256 seizedCollateralQuoted = summaryMulDivUp(seizedAssets, collateralPrice, Util.oraclePriceScale());
6468
assert summaryMulDivDown(lif, repaidAssets, Util.wad()) >= seizedCollateralQuoted;
65-
assert lif >= wDivDown(seizedCollateralQuoted, repaidAssets);
69+
assert lif >= wDivUp(seizedCollateralQuoted, repaidAssets);
70+
71+
uint256 newBorrowerShares = require_uint256(borrowerShares - repaidShares);
72+
uint256 newTotalShares = require_uint256(virtualTotalBorrowShares(id) - repaidShares);
73+
uint256 newTotalAssets = require_uint256(virtualTotalBorrowAssets(id) - repaidAssets);
74+
75+
require seizedAssets <= borrowerCollateral;
76+
77+
uint256 newBorrowerAssets = summaryMulDivUp(newBorrowerShares, newTotalAssets, newTotalShares);
6678

67-
// assert repaidShares * borrowerCollateral > seizedAssets * borrowerShares;
79+
assert repaidShares * borrowerCollateral >= seizedAssets * borrowerShares;
6880
}

0 commit comments

Comments
 (0)