Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update poolInfoUtils.borrowerInfo to return thresholdPrice (#1017)
* Universal deposit fee (#983) * charge fee on all deposit * unit tests compile * test harness updates * working on ERC20PoolQuoteTokenTest * removed deposit fee cap * more work on ERC20PoolQuoteTokenTest * do not charge deposit fee if moving liquidity to higher price * Eliminate reserves bad debt allocation and add margin to TP (#962) * this underflows instead of giving expected revert * move isCollateralized check after updating borrower collateral * remove local calculation of encumbered collateral * trying to properly fix testBorrowRepayPrecision * resolve rounding issue in fuzz test * testCollateralization improvements * updated unit tests for new _collateralization implementation * more collateralization tests * Add 1.04 factor in borrower collateralization * Update nptp ratio to '1 + sqrt(r)/2' * Remove Settle debt with pool reserves * Remove 0.995 factor from claimable reserves calculation * Update bond factor calculation to minimum 0.005 * added testcase where debt exceeds deposit * updated test so debt exceeds deposit * allow up to half of current orig fee to be used to settle bad debt * updated testTakeAndSettle * more test fixes * Enabled settling with all reserves if Deposits.treeSum==0 or 72 hrs pass * cleanup * Half orig fee res | Matt example (#966) * added Matts test as proof that attack no longer works on his branch * Revert "Remove multicall from position manager (#948)" (#961) This reverts commit f540c8a. * added test testSpendOrigFeePushBadDebtToBorrowers test * cleaned up testStealReservesWithMarginm to match minted balances * responded to Matts comments --------- Co-authored-by: Ian Harvey <iharvey@comcast.net> Co-authored-by: Mike Hathaway <mahathaway93@gmail.com> * Revert "Remove Settle debt with pool reserves" This reverts commit 290d6cf. * Update half origination fees reserves settlement time to 144 hours from kickTime * Fix alignment and extra spaces * Fix some unit tests * PR feedback * Update encumberance and collateralization method in poolInfoUtils * Fix some unit tests --------- Co-authored-by: Ed Noepel <ed@noepel.net> Co-authored-by: Ian Harvey <iharvey@comcast.net> Co-authored-by: mwc <matt@ajna.finance> Co-authored-by: Ian Harvey <ith.harvey@gmail.com> Co-authored-by: Mike Hathaway <mahathaway93@gmail.com> * Fix invariant setup * Fix some unit tests * ERC20PoolQuoteTokenTest updated * updated ERC20PoolPurchaseQuoteTokenTest * Fixed tests in ERC20PoolReserveAuction.t.sol * updated ERC20PoolBorrowTest and ERC20PoolBorrowFuzzyTest * Fix ERC20PoolCollateral and ERC20PoolInfoUtils tests * Fixed ERC20 arbtake and depositTake tests * Fix ERC20PoolLiquidationsKickTest, ERC20PoolLiquidationKickFuzzyTest and ERC20PoolLiquidationsLenderKickAuctionTest * updated ERC20PoolMulticallTest * cleaned up ERC20PoolDebtExceedsDepositTest * fixed testTakeLoanColConstraintBpfPosNoResidual * fixed testTakeCallerColConstraintBpfPosNoResidual * fixed testTakeCallerColConstraintBpfPosResidual * fixed testTakeCallerColConstraintBpfNegResidual * fixed testTakeLoanDebtConstraintBpfPosResidual * fixed testTakeAndSettle * cleaned up ERC20PoolDebtExceedsDepositTest * updated ERC20PoolPrecisionTest * Update ERC20PoolLiquidationsSettleTest * Update ERC20PoolLiquidationsMisc * Update ERC20PoolLiquidationSettleFuzzyTest * Update ERC20PoolLiquidationTakeFuzzyTest * fixeed revert tests * ERC20PoolLiquidationsTake -- fixed rest * Mh update tests (#985) * fix most position manager tests * fix additional pm tests * fix rewards requiredCollateralRewards setup * fix ClaimRewards tests * update additional rewards manager tests * fix additional tests * more test fixes * commit wip bankruptcy tests * fixed testMoveLiquidityToOverwriteBankruptBucket * fix additional tests * fix testMoveLiquidityWithDebtInPool * fix remaining rewards manager tests --------- Co-authored-by: Mike <mikehathaway@makerdao.com> Co-authored-by: mwc <matt@ajna.finance> * Add 1.04 factor in HTP calculations (#987) * Add 1.04 factor in HTP calculations * Add COLLATERALIZATION_FACTOR constant in PoolHelpers * Add collateralization factor in dwatp * Fix poolPricesInfo * Update ERC20PoolBorrowFuzzyTest * Fix some unit tests * Fix some unit tests * Fix some unit tests * Update ERC20PoolTransferLPs * fix most rewards manager tests * update remaining rewards manager tests * update ERC721SubsetPoolBorrowTest and commit wip changes to testMergeOrRemoveERC721Collateral * updated testSettlePartialDebtSubsetPool (#988) * updated testSettlePartialDebtSubsetPool * re-added teardown --------- Co-authored-by: Ian Harvey <iharvey@comcast.net> * fix ERC721PoolCollateral tests * fix borrowRepayDebtFuzzy and additional PM tests * cleaned up testBorrowAndRepayWith4DecimalQuote --------- Co-authored-by: Mike <mikehathaway@makerdao.com> Co-authored-by: Ian Harvey <ith.harvey@gmail.com> Co-authored-by: Ian Harvey <iharvey@comcast.net> * Fix some unit tests * Deployment updates for RC8+ releases (#986) * cherry-picked from master * updated README * Fix ERC721PoolLiquidationsTakeTest * updated ERC721PoolReserveAuctionTest * updated testMergeOrRemoveERC721Collateral (#989) Co-authored-by: Ian Harvey <iharvey@comcast.net> * updated ERC721PoolPurchaseQuoteTest and fixed bug in ERC721 tearDown * cleaned up testLiquidationLenderKickAuction, testLiquidationSingleBorrower, testSettleAuctionWithoutTakes * updated testMoveLiquidityToOverwriteBankruptBucket * updated PoolHelperTest * cleaned up asserts in addLiquidity * update testMoveLiquidityInBankruptBucket_LP_report_179_494 * updated ERC721PoolEMAsTest * fixed testKickHighThresholdPriceBorrower * updated testBorrowerInterestCalculationAfterRepayingAllDebtOnce and testBorrowerInterestCalculation * updated testMultipleBorrowerInterestAccumulation * Fix regression tests * updated RE3, fixed _addQuoteToken * addQuoteToken - return amount added (#993) * addQuoteToken now returns amount added * update unit tests to validate return values * Fix up add liquidity (#992) * cleaned up addLiquidity() method in ERC20PoolLiquidationsScaled.t.sol * remove console --------- Co-authored-by: Ian Harvey <iharvey@comcast.net> * fixed issue with test_regression_fenwick_index_2 in non-18-decimal env * added regression tests for two failing reserves scenarios * rename tests such that automake runs them with other regression tests * UnboundedLiquidationPoolHandler bucketTake fix (#994) * updated UnboundedLiquidationPoolHandler to handle compensated collateral in bucketTake * cleanup, trap unhandled use case * settle event now emits actual debt settled rather than t0 amount (#999) * settle event now emits actual debt settled rather than t0 amount * updated test_regression_settle_with_reserves * Updated auctionInfo (#996) * add thresholdPrice to auctionInfo; update test iterface usages * temp fix tests * remove unneeded comment * Update auction status (#998) * wip auction status update w/ stack too deep * update auctionStatus; add auctionInfo method to poolInfoUtils --------- Co-authored-by: Mike <mikehathaway@makerdao.com> --------- Co-authored-by: Mike <mikehathaway@makerdao.com> * updated brownie tests, removed obsolete invariant tests (#1001) * Block addqt above auction price (#997) * initial commit * tweaks to Matt's PR to block adding quote token above auction price (#1000) * reduce cost of reference price assignment * reduce pool contract size * fixed testDepositTakeAndSettleByRegularTakeSubsetPool * fixed tests in ERC20PoolLiquidationsArbTake.t.sol * fixed tests in ERC20PoolLiquidationsDepositTake.sol * fixed two more * updated testDepositTakeAndSettleSubsetPool * updated testKickAndSettleSubsetPoolFractionalCollateral * updated testSettleWithDepositFuzzy * Fixed final tests * add "AddAboveAuctionPrice" as expected pool error * implemented invariant A9: reference prices in liquidation queue shall not decrease * Update assertAuction to use ThresholdPrice from auctionInfo (#1003) * use auctionInfo thresholdprice instead of recalculating * fix most tests * update remaining tests --------- Co-authored-by: Mike <mikehathaway@makerdao.com> * Contract size mitigation (#1004) * moved debtInfo to PoolCommons, saving 10 bytes * moved withdrawBonds to KickerActions * added unit test showing adding qt above auction price reverts * updated nit spellings --------- Co-authored-by: mwc <matt@ajna.finance> Co-authored-by: Ed Noepel <46749157+EdNoepel@users.noreply.github.com> Co-authored-by: Ed Noepel <ed@noepel.net> Co-authored-by: Mike Hathaway <mahathaway93@gmail.com> Co-authored-by: Mike <mikehathaway@makerdao.com> Co-authored-by: Ian Harvey <iharvey@comcast.net> * Invariant testing fixes (#1006) * initial commit * tweaks to Matt's PR to block adding quote token above auction price (#1000) * reduce cost of reference price assignment * reduce pool contract size * fixed testDepositTakeAndSettleByRegularTakeSubsetPool * fixed tests in ERC20PoolLiquidationsArbTake.t.sol * fixed tests in ERC20PoolLiquidationsDepositTake.sol * fixed two more * updated testDepositTakeAndSettleSubsetPool * updated testKickAndSettleSubsetPoolFractionalCollateral * updated testSettleWithDepositFuzzy * Fixed final tests * add "AddAboveAuctionPrice" as expected pool error * implemented invariant A9: reference prices in liquidation queue shall not decrease * Update assertAuction to use ThresholdPrice from auctionInfo (#1003) * use auctionInfo thresholdprice instead of recalculating * fix most tests * update remaining tests --------- Co-authored-by: Mike <mikehathaway@makerdao.com> * Contract size mitigation (#1004) * moved debtInfo to PoolCommons, saving 10 bytes * moved withdrawBonds to KickerActions * documented a sample of invariant failures in regression tests * added unit test showing adding qt above auction price reverts * fixed _isCollateralized bug not returning true in all 0-debt use cases * updated nit spellings * fixed underflow calculating kicker reward * _repayDebtByThirdParty should check for expected pool errors * Round down when reward kicker, round up when kicker is penalized Fix roundings in tests * update test comments * fix and enable A9 invariant --------- Co-authored-by: mwc <matt@ajna.finance> Co-authored-by: Mike Hathaway <mahathaway93@gmail.com> Co-authored-by: Mike <mikehathaway@makerdao.com> Co-authored-by: Ian Harvey <iharvey@comcast.net> Co-authored-by: grandizzy <grandizzy.the.egg@gmail.com> Co-authored-by: grandizzy <38490174+grandizzy@users.noreply.github.com> * RC9 suggested improvements (#1005) * Revert AuctionNotTakeable in same place, load auction kickTime only once from storage * Calculate ERC721 collateralTaken only once cosmetize code (read from result struct in local var and reuse) Results in shrinking a little bit contract sizes * Read borrower Np Tp ratio from storage only once when kick * If block style, proper indentation * Proposed changes to PR #972: - avoid calculating current LUP twice in lender kick - change _kick function to accept proposed LUP (for regular kick proposed LUP is current LUP, for lender kick proposed LUP is calculated based on additional debt) - in both kick cases return current LUP in kick result - reduce gas costs by saving a Fenwick traversal - reduce contract size by removing LUP calculation within Pool * Cosmetic flashloan code changes, PoolCommons.flashLoan doesn't return false but always reverts if flashloan fails * PR#983 style, remove redundant line * PR#999 suggested improvement - calculate current settled debt only once and include in settle result for state update * PR #962 proposed changes: - get Fenwick deposits only once when settle with reserves - define constants for min bond factor and max npTp ratio values * PR #987 proposed improvement: - add and reuse _htp helper function (instead duplicated maths) * Continuation of PR #962: (#1008) - Record settle amount limmit in Liquidtion struct, at the time of kick (that is instead incrementing accumulator in Borrower struct, each time debt is drawn) - This way accumulator will be reseted when auction is settled - fix tests TODO: - assert Liquidation.t0ReserveSettleAmount in unit tests (_assertAuction), make sure is set to 0 after auction settled and decreased when partial settles done - update invariant test to check new introduced accumulator * Misc test fixes (#1009) * handle another reward rounding error use case * fix intermittant fuzz test failure - cannot draw debt from liquidity in bucket 7388 * PositionManager should expect AddAboveAuctionPrice, which can happen in moveLiquidity * Invariant fix: round up quote tokens calculated from rewarded LP (because LP rewarded are calculated in bucketTake as rewarded quote tokens -> LP rounded down) * Pr feedback * Fix failing unit tests * update poolInfoUtils.borrowerInfo interface * return thresholdPrice instead of t0ThresholdPrice * fix compile warnings * update borrowerInfo threshold price references * resolved comments on borrowerInfo --------- Co-authored-by: Ed Noepel <46749157+EdNoepel@users.noreply.github.com> Co-authored-by: Prateek Gupta <prateek105@users.noreply.github.com> Co-authored-by: Ed Noepel <ed@noepel.net> Co-authored-by: Ian Harvey <iharvey@comcast.net> Co-authored-by: mwc <matt@ajna.finance> Co-authored-by: Ian Harvey <ith.harvey@gmail.com> Co-authored-by: prateek105 <prateek@ajna.finance> Co-authored-by: Mike <mikehathaway@makerdao.com> Co-authored-by: mattcushman <36414299+mattcushman@users.noreply.github.com> Co-authored-by: grandizzy <grandizzy.the.egg@gmail.com> Co-authored-by: grandizzy <38490174+grandizzy@users.noreply.github.com>
- Loading branch information