From 52c07d27e781f8e11ef517b1c30fcd8684393fa6 Mon Sep 17 00:00:00 2001 From: Thrilok kumar Date: Sat, 3 Sep 2022 00:30:04 +0530 Subject: [PATCH] code refactor --- .../mainnet/connectors/compound/v3/main.sol | 47 +++++++++++-------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/contracts/mainnet/connectors/compound/v3/main.sol b/contracts/mainnet/connectors/compound/v3/main.sol index 6120c8fd..9dfd197a 100644 --- a/contracts/mainnet/connectors/compound/v3/main.sol +++ b/contracts/mainnet/connectors/compound/v3/main.sol @@ -50,6 +50,7 @@ abstract contract CompoundV3Resolver is Events, Helpers { "debt-not-repaid" ); } + if (isEth) { amt_ = amt_ == uint256(-1) ? address(this).balance : amt_; convertEthToWeth(isEth, tokenContract, amt_); @@ -222,19 +223,21 @@ abstract contract CompoundV3Resolver is Events, Helpers { token_ ); - amt_ = amt_ == uint256(-1) ? initialBal : amt_; - if (token_ == getBaseToken(market)) { - uint256 balance = CometInterface(market).balanceOf(address(this)); //if there are supplies, ensure withdrawn amount is not greater than supplied i.e can't borrow using withdraw. - if (balance > 0) { - require(amt_ <= balance, "withdraw-amt-greater-than-supplies"); + if (amt_ == uint256(-1)) { + amt_ = initialBal; + } else { + require(amt_ <= initialBal, "withdraw-amt-greater-than-supplies"); } + //if borrow balance > 0, there are no supplies so no withdraw, borrow instead. require( CometInterface(market).borrowBalanceOf(address(this)) == 0, "withdraw-disabled-for-zero-supplies" ); + } else { + amt_ = amt_ == uint256(-1) ? initialBal : amt_; } CometInterface(market).withdraw(token_, amt_); @@ -402,8 +405,7 @@ abstract contract CompoundV3Resolver is Events, Helpers { TokenInterface tokenContract = TokenInterface(token_); if (token_ == getBaseToken(market)) { - uint256 balance = CometInterface(market).balanceOf(address(this)); - require(balance == 0, "borrow-disabled-when-supplied-base"); + require(CometInterface(market).balanceOf(address(this)) == 0, "borrow-disabled-when-supplied-base"); } uint256 initialBal = CometInterface(market).borrowBalanceOf( @@ -583,17 +585,20 @@ abstract contract CompoundV3Resolver is Events, Helpers { TokenInterface tokenContract = TokenInterface(token_); - amt_ = amt_ == uint256(-1) - ? CometInterface(market).borrowBalanceOf(address(this)) - : amt_; + uint256 borrowedBalance_ = CometInterface(market).borrowBalanceOf(address(this)); - uint256 supplyBalance_ = CometInterface(market).balanceOf( - address(this) - ); - require(supplyBalance_ == 0, "cannot-repay-when-supplied"); + if (amt_ == uint256(-1)) { + amt_ = initialBal; + } else { + require(amt_ <= borrowedBalance_, "withdraw-amt-greater-than-supplies"); + } + + //if supply balance > 0, there are no borrowing so no repay, withdraw instead. + require(CometInterface(market).balanceOf(address(this)) == 0, "cannot-repay-when-supplied"); convertEthToWeth(isEth, tokenContract, amt_); approve(tokenContract, market, amt_); + CometInterface(market).supply(token_, amt_); setUint(setId, amt_); @@ -636,12 +641,16 @@ abstract contract CompoundV3Resolver is Events, Helpers { TokenInterface tokenContract = TokenInterface(token_); - amt_ = amt_ == uint256(-1) - ? CometInterface(market).borrowBalanceOf(to) - : amt_; + uint256 borrowedBalance_ = CometInterface(market).borrowBalanceOf(to); - uint256 supplyBalance_ = CometInterface(market).balanceOf(to); - require(supplyBalance_ == 0, "cannot-repay-when-supplied"); + if (amt_ == uint256(-1)) { + amt_ = initialBal; + } else { + require(amt_ <= borrowedBalance_, "withdraw-amt-greater-than-supplies"); + } + + //if supply balance > 0, there are no borrowing so no repay, withdraw instead. + require(CometInterface(market).balanceOf(to) == 0, "cannot-repay-when-supplied"); convertEthToWeth(isEth, tokenContract, amt_); approve(tokenContract, market, amt_);