From 41e142a3690219733a09db702f2bf0e4628e1f77 Mon Sep 17 00:00:00 2001 From: Jonathan LEI Date: Mon, 19 Feb 2024 14:31:39 +0000 Subject: [PATCH] feat: no longer interprete 0 as no debt limit It's legitimate to have tokens that cannot be borrowed, and `debt_limit` is a good way to handle that. All tokens in production have a non-zero `debt_limit` so this upgrade does not break anything. --- src/market/internal.cairo | 17 +++++++---------- tests/market.cairo | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/market/internal.cairo b/src/market/internal.cairo index ce9db9c..5a01522 100644 --- a/src/market/internal.cairo +++ b/src/market/internal.cairo @@ -916,18 +916,15 @@ fn assert_reserve_enabled(self: @ContractState, token: ContractAddress) { fn assert_debt_limit_satisfied(self: @ContractState, token: ContractAddress) { let debt_limit = self.reserves.read_debt_limit(token); - // 0 means no limit - if debt_limit.is_non_zero() { - let raw_total_debt = self.reserves.read_raw_total_debt(token); + let raw_total_debt = self.reserves.read_raw_total_debt(token); - let debt_accumulator = view::get_debt_accumulator(self, token); - let scaled_debt = safe_decimal_math::mul(raw_total_debt, debt_accumulator); + let debt_accumulator = view::get_debt_accumulator(self, token); + let scaled_debt = safe_decimal_math::mul(raw_total_debt, debt_accumulator); - assert( - Into::<_, u256>::into(scaled_debt) <= Into::<_, u256>::into(debt_limit), - errors::DEBT_LIMIT_EXCEEDED - ); - } + assert( + Into::<_, u256>::into(scaled_debt) <= Into::<_, u256>::into(debt_limit), + errors::DEBT_LIMIT_EXCEEDED + ); } /// This function is called to distribute excessive reserve assets to depositors. Such extra balance diff --git a/tests/market.cairo b/tests/market.cairo index dfb63a2..fee3579 100644 --- a/tests/market.cairo +++ b/tests/market.cairo @@ -129,6 +129,21 @@ fn setup() -> Setup { 100000000000000000000000000, // liquidation_bonus ); + setup + .alice + .market_set_debt_limit( + setup.market.contract_address, + setup.token_a.contract_address, // token + 999999999999999999999999999999 // limit + ); + setup + .alice + .market_set_debt_limit( + setup.market.contract_address, + setup.token_b.contract_address, // token + 999999999999999999999999999999 // limit + ); + setup .oracle .set_price(