From 3bd13371eab04e28a05e80eafa56afc8c8e72930 Mon Sep 17 00:00:00 2001 From: Richa-iitr Date: Sat, 29 Oct 2022 20:01:30 +0530 Subject: [PATCH] lint code --- .../morpho/morpho-compound-import/events.sol | 5 +- .../morpho/morpho-compound-import/helpers.sol | 45 +-- .../morpho-compound-import/interface.sol | 333 ++---------------- .../morpho/morpho-compound-import/main.sol | 10 +- 4 files changed, 58 insertions(+), 335 deletions(-) diff --git a/contracts/mainnet/connectors/morpho/morpho-compound-import/events.sol b/contracts/mainnet/connectors/morpho/morpho-compound-import/events.sol index c12ee9bf..340456d5 100644 --- a/contracts/mainnet/connectors/morpho/morpho-compound-import/events.sol +++ b/contracts/mainnet/connectors/morpho/morpho-compound-import/events.sol @@ -5,9 +5,8 @@ pragma experimental ABIEncoderV2; contract Events { event LogMorphoCompoundImport( address indexed user, - address[] ctokens, - string[] supplyIds, - string[] borrowIds, + address[] supplyCTokens, + address[] borrowCTokens, uint256[] supplyAmts, uint256[] borrowAmts ); diff --git a/contracts/mainnet/connectors/morpho/morpho-compound-import/helpers.sol b/contracts/mainnet/connectors/morpho/morpho-compound-import/helpers.sol index 572c360f..42221a41 100644 --- a/contracts/mainnet/connectors/morpho/morpho-compound-import/helpers.sol +++ b/contracts/mainnet/connectors/morpho/morpho-compound-import/helpers.sol @@ -25,7 +25,8 @@ abstract contract Helpers is DSMath, Basic { IMorphoLens internal constant morphoLens = IMorphoLens(0x930f1b46e1D081Ec1524efD95752bE3eCe51EF67); - IMorpho internal constant morpho = IMorpho(0x8888882f8f843896699869179fB6E4f7e3B58888) + IMorpho internal constant morpho = + IMorpho(0x8888882f8f843896699869179fB6E4f7e3B58888); struct ImportData { uint256[] borrowAmts; @@ -70,9 +71,10 @@ contract MorphoCompoundHelper is Helpers { for (uint256 i; i < _length; i++) { address cToken_ = importInputData_.borrowCTokens[i]; CTokenInterface ctoken_ = CTokenInterface(cToken_); - - address token_; - token_ = cToken_ == address(cEth) ? wethAddr : ctoken_.underlying(); + + address token_ = cToken_ == address(cEth) + ? wethAddr + : ctoken_.underlying(); require(token_ != address(0), "invalid-ctoken-address"); @@ -88,7 +90,10 @@ contract MorphoCompoundHelper is Helpers { // give the morpho approval to spend tokens if (token_ != ethAddr && data.borrowAmts[i] > 0) { // will be required when repaying the borrow amount on behalf of the user - TokenInterface(token_).approve(address(morpho), data.borrowAmts[i]); + TokenInterface(token_).approve( + address(morpho), + data.borrowAmts[i] + ); } } } @@ -117,19 +122,16 @@ contract MorphoCompoundHelper is Helpers { for (uint256 i; i < _length; i++) { address cToken_ = importInputData_.supplyCTokens[i]; CTokenInterface ctoken_ = CTokenInterface(cToken_); - address token_ ; - token_ = cToken_ == address(cEth) ? wethAddr : ctoken_.underlying(); - - require( - token_ != address(0), - "invalid-ctoken-address" - ); + address token_ = cToken_ == address(cEth) + ? wethAddr + : ctoken_.underlying(); + require(token_ != address(0), "invalid-ctoken-address"); data.supplyTokens[i] = token_; data.supplyCtokens[i] = ctoken_; data.supplyCtokensAddr[i] = (cToken_); - data.supplyAmts[i] = morpho.getCurrentSupplyBalanceInOf( + (, , data.supplyAmts[i]) = morpho.getCurrentSupplyBalanceInOf( cToken_, importInputData_.userAccount ); @@ -164,7 +166,7 @@ contract MorphoCompoundHelper is Helpers { * @param _cTokenContracts array containing all interfaces to the cToken contracts in which the user has supply positions * @param _amts array containing the amount supplied for each token */ - function _transferTokensToDsa( + function _transferCTokensToDsa( address userAccount_, CTokenInterface[] memory cTokenContracts_, uint256[] memory supplyAmts_ @@ -183,11 +185,11 @@ contract MorphoCompoundHelper is Helpers { } /** - * @notice borrows the user's debt positions from Compound via DSA, so that its debt positions get imported to DSA - * @dev actually borrow some extra amount than the original position to cover the flash loan fee - * @param _cTokenContracts array containing all interfaces to the cToken contracts in which the user has debt positions - * @param _amts array containing the amounts the user had borrowed originally from Compound plus the flash loan fee - * @param _flashLoanFees flash loan fee (in percentage and scaled up to 10**2) + * @notice borrows the user's debt positions from Morpho via DSA, so that its debt positions get imported to DSA + * @dev borrows some extra amount than the original position to cover the flash loan fee + * @param cTokens_ array containing cToken addresses in which the user has debt positions + * @param borrowAmts_ array containing the amounts the user had borrowed originally from Morpho-Compound + * @param flashLoanFees_ flash loan fees. */ function _borrowDebtPosition( address[] memory cTokens_, @@ -197,6 +199,9 @@ contract MorphoCompoundHelper is Helpers { uint256 length_ = cTokens_.length; for (uint256 i; i < length_; ++i) if (borrowAmts_[i] > 0) - morpho.borrow(cTokens_[i], add(borrowAmts_[i], flashLoanFees_[i])); + morpho.borrow( + cTokens_[i], + add(borrowAmts_[i], flashLoanFees_[i]) + ); } } diff --git a/contracts/mainnet/connectors/morpho/morpho-compound-import/interface.sol b/contracts/mainnet/connectors/morpho/morpho-compound-import/interface.sol index e439d236..42d9152f 100644 --- a/contracts/mainnet/connectors/morpho/morpho-compound-import/interface.sol +++ b/contracts/mainnet/connectors/morpho/morpho-compound-import/interface.sol @@ -26,24 +26,6 @@ interface CTokenInterface { function borrow(uint256 borrowAmount) external returns (uint256); - function repayBorrow(uint256 repayAmount) external returns (uint256); - - function repayBorrowBehalf(address borrower, uint256 repayAmount) - external - returns (uint256); // For ERC20 - - function liquidateBorrow( - address borrower, - uint256 repayAmount, - address cTokenCollateral - ) external returns (uint256); - - function borrowBalanceCurrent(address account) external returns (uint256); - - function redeemUnderlying(uint256 redeemAmount) external returns (uint256); - - function exchangeRateCurrent() external returns (uint256); - function balanceOf(address owner) external view returns (uint256 balance); function transferFrom( @@ -52,211 +34,10 @@ interface CTokenInterface { uint256 ) external returns (bool); - function allowance(address, address) external view returns (uint256); - function approve(address spender, uint256 amount) external returns (bool); } interface IMorphoLens { - function MAX_BASIS_POINTS() external view returns (uint256); - - function WAD() external view returns (uint256); - - function morpho() external view returns (IMorpho); - - function comptroller() external view returns (IComptroller); - - function getTotalSupply() - external - view - returns ( - uint256 p2pSupplyAmount, - uint256 poolSupplyAmount, - uint256 totalSupplyAmount - ); - - function getTotalBorrow() - external - view - returns ( - uint256 p2pBorrowAmount, - uint256 poolBorrowAmount, - uint256 totalBorrowAmount - ); - - function isMarketCreated(address _poolToken) external view returns (bool); - - function isMarketCreatedAndNotPaused(address _poolToken) - external - view - returns (bool); - - function isMarketCreatedAndNotPausedNorPartiallyPaused(address _poolToken) - external - view - returns (bool); - - function getAllMarkets() - external - view - returns (address[] memory marketsCreated_); - - function getMainMarketData(address _poolToken) - external - view - returns ( - uint256 avgSupplyRatePerBlock, - uint256 avgBorrowRatePerBlock, - uint256 p2pSupplyAmount, - uint256 p2pBorrowAmount, - uint256 poolSupplyAmount, - uint256 poolBorrowAmount - ); - - function getTotalMarketSupply(address _poolToken) - external - view - returns (uint256 p2pSupplyAmount, uint256 poolSupplyAmount); - - function getTotalMarketBorrow(address _poolToken) - external - view - returns (uint256 p2pBorrowAmount, uint256 poolBorrowAmount); - - function getCurrentP2PSupplyIndex(address _poolToken) - external - view - returns (uint256); - - function getCurrentP2PBorrowIndex(address _poolToken) - external - view - returns (uint256); - - function getCurrentPoolIndexes(address _poolToken) - external - view - returns ( - uint256 currentPoolSupplyIndex, - uint256 currentPoolBorrowIndex - ); - - function getIndexes(address _poolToken, bool _computeUpdatedIndexes) - external - view - returns ( - uint256 p2pSupplyIndex, - uint256 p2pBorrowIndex, - uint256 poolSupplyIndex, - uint256 poolBorrowIndex - ); - - function getEnteredMarkets(address _user) - external - view - returns (address[] memory enteredMarkets); - - function getUserMaxCapacitiesForAsset(address _user, address _poolToken) - external - view - returns (uint256 withdrawable, uint256 borrowable); - - function getUserHypotheticalBalanceStates( - address _user, - address _poolToken, - uint256 _withdrawnAmount, - uint256 _borrowedAmount - ) external view returns (uint256 debtValue, uint256 maxDebtValue); - - function getUserLiquidityDataForAsset( - address _user, - address _poolToken, - bool _computeUpdatedIndexes, - ICompoundOracle _oracle - ) external view returns (AssetLiquidityData memory assetData); - - function computeLiquidationRepayAmount( - address _user, - address _poolTokenBorrowed, - address _poolTokenCollateral, - address[] calldata _updatedMarkets - ) external view returns (uint256 toRepay); - - function getAverageSupplyRatePerBlock(address _poolToken) - external - view - returns (uint256); - - function getAverageBorrowRatePerBlock(address _poolToken) - external - view - returns (uint256); - - function getNextUserSupplyRatePerBlock( - address _poolToken, - address _user, - uint256 _amount - ) - external - view - returns ( - uint256 nextSupplyRatePerBlock, - uint256 balanceOnPool, - uint256 balanceInP2P, - uint256 totalBalance - ); - - function getNextUserBorrowRatePerBlock( - address _poolToken, - address _user, - uint256 _amount - ) - external - view - returns ( - uint256 nextBorrowRatePerBlock, - uint256 balanceOnPool, - uint256 balanceInP2P, - uint256 totalBalance - ); - - function getMarketConfiguration(address _poolToken) - external - view - returns ( - address underlying, - bool isCreated, - bool p2pDisabled, - bool isPaused, - bool isPartiallyPaused, - uint16 reserveFactor, - uint16 p2pIndexCursor, - uint256 collateralFactor - ); - - function getRatesPerBlock(address _poolToken) - external - view - returns ( - uint256 p2pSupplyRate, - uint256 p2pBorrowRate, - uint256 poolSupplyRate, - uint256 poolBorrowRate - ); - - function getAdvancedMarketData(address _poolToken) - external - view - returns ( - uint256 p2pSupplyIndex, - uint256 p2pBorrowIndex, - uint256 poolSupplyIndex, - uint256 poolBorrowIndex, - uint32 lastUpdateBlockNumber, - uint256 p2pSupplyDelta, - uint256 p2pBorrowDelta - ); - function getCurrentSupplyBalanceInOf(address _poolToken, address _user) external view @@ -274,65 +55,6 @@ interface IMorphoLens { uint256 balanceInP2P, uint256 totalBalance ); - - function getUserBalanceStates( - address _user, - address[] calldata _updatedMarkets - ) - external - view - returns ( - uint256 collateralValue, - uint256 debtValue, - uint256 maxDebtValue - ); - - function getAccruedSupplierComp( - address _supplier, - address _poolToken, - uint256 _balance - ) external view returns (uint256); - - function getAccruedBorrowerComp( - address _borrower, - address _poolToken, - uint256 _balance - ) external view returns (uint256); - - function getCurrentCompSupplyIndex(address _poolToken) - external - view - returns (uint256); - - function getCurrentCompBorrowIndex(address _poolToken) - external - view - returns (uint256); - - function getUserUnclaimedRewards( - address[] calldata _poolTokens, - address _user - ) external view returns (uint256 unclaimedRewards); - - function isLiquidatable(address _user, address[] memory _updatedMarkets) - external - view - returns (bool); - - function getCurrentUserSupplyRatePerBlock(address _poolToken, address _user) - external - view - returns (uint256); - - function getCurrentUserBorrowRatePerBlock(address _poolToken, address _user) - external - view - returns (uint256); - - function getUserHealthFactor( - address _user, - address[] calldata _updatedMarkets - ) external view returns (uint256); } interface CETHInterface { @@ -347,36 +69,33 @@ interface CETHInterface { payable; } -interface ComptrollerInterface { - function enterMarkets(address[] calldata cTokens) - external - returns (uint256[] memory); +interface IMorpho { + function supply( + address _poolTokenAddress, + address _onBehalf, + uint256 _amount + ) external; - function exitMarket(address cTokenAddress) external returns (uint256); + function supply( + address _poolTokenAddress, + address _onBehalf, + uint256 _amount, + uint256 _maxGasForMatching + ) external; - function getAssetsIn(address account) - external - view - returns (address[] memory); + function borrow(address _poolTokenAddress, uint256 _amount) external; - function getAccountLiquidity(address account) - external - view - returns ( - uint256, - uint256, - uint256 - ); -} - -interface CompoundMappingInterface { - function cTokenMapping(string calldata tokenId) - external - view - returns (address); - - function getMapping(string calldata tokenId) - external - view - returns (address, address); + function borrow( + address _poolTokenAddress, + uint256 _amount, + uint256 _maxGasForMatching + ) external; + + function withdraw(address _poolTokenAddress, uint256 _amount) external; + + function repay( + address _poolTokenAddress, + address _onBehalf, + uint256 _amount + ) external; } diff --git a/contracts/mainnet/connectors/morpho/morpho-compound-import/main.sol b/contracts/mainnet/connectors/morpho/morpho-compound-import/main.sol index 661f7747..2216bd7f 100644 --- a/contracts/mainnet/connectors/morpho/morpho-compound-import/main.sol +++ b/contracts/mainnet/connectors/morpho/morpho-compound-import/main.sol @@ -34,12 +34,12 @@ contract MorphoCompoundImportResolver is MorphoCompoundHelper { // pay back user's debt using flash loan funds _paybackDebt( importInputData_.userAccount, - data.borrowCtokens, + data.borrowCtokensAddr, data.borrowAmts ); // transfer user's tokens to DSA - _transferTokensToDsa( + _transferCTokensToDsa( importInputData_.userAccount, data.supplyCtokens, data.supplyAmts @@ -47,12 +47,12 @@ contract MorphoCompoundImportResolver is MorphoCompoundHelper { // borrow the earlier position from Compound with flash loan fee added _borrowDebtPosition( - data.borrowCtokens, + data.borrowCtokensAddr, data.borrowAmts, - _flashLoanFees + importInputData_.flashLoanFees ); - _eventName = "LogCompoundImport(address,address[],address[],uint256[],uint256[])"; + _eventName = "LogMorphoCompoundImport(address,address[],address[],uint256[],uint256[])"; _eventParam = abi.encode( importInputData_.userAccount, importInputData_.supplyCTokens,