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(