From ef4dd8252358216c17abc9c5aedb8c3299547024 Mon Sep 17 00:00:00 2001 From: Mubaris NK Date: Wed, 9 Dec 2020 17:45:10 +0530 Subject: [PATCH 1/4] Add enable collareral method --- contracts/connectors/aave.sol | 23 ++++++++++++++++++++++- contracts/connectors/aave_v2.sol | 27 ++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/contracts/connectors/aave.sol b/contracts/connectors/aave.sol index 86aec7f..79e4f6a 100644 --- a/contracts/connectors/aave.sol +++ b/contracts/connectors/aave.sol @@ -82,6 +82,7 @@ contract BasicResolver is AaveHelpers { event LogWithdraw(address indexed token, uint256 tokenAmt, uint256 getId, uint256 setId); event LogBorrow(address indexed token, uint256 tokenAmt, uint256 getId, uint256 setId); event LogPayback(address indexed token, uint256 tokenAmt, uint256 getId, uint256 setId); + event LogEnableCollateral(address[] tokens); /** * @dev Deposit ETH/ERC20_Token. @@ -193,8 +194,28 @@ contract BasicResolver is AaveHelpers { bytes memory _eventParam = abi.encode(token, _amt, getId, setId); emitEvent(_eventCode, _eventParam); } + + /** + * @dev Enable collateral + * @param tokens Array of tokens to enable collateral + */ + function enableCollateral(address[] calldata tokens) external { + uint _length = tokens.length; + require(_length > 0, "0-tokens-not-allowed"); + + AaveInterface aave = AaveInterface(getAaveProvider().getLendingPool()); + + for (uint i = 0; i < _length; i++) { + address token = tokens[i]; + if (getWithdrawBalance(token) > 0 && !getIsColl(aave, token)) { + aave.setUserUseReserveAsCollateral(token, true); + } + } + + emit LogEnableCollateral(tokens); + } } contract ConnectAave is BasicResolver { string public name = "Aave-v1"; -} \ No newline at end of file +} diff --git a/contracts/connectors/aave_v2.sol b/contracts/connectors/aave_v2.sol index 76cc311..8c73ceb 100644 --- a/contracts/connectors/aave_v2.sol +++ b/contracts/connectors/aave_v2.sol @@ -103,6 +103,10 @@ contract AaveHelpers is DSMath, Stores { (, uint stableDebt, uint variableDebt, , , , , , ) = aaveData.getUserReserveData(token, address(this)); return rateMode == 1 ? stableDebt : variableDebt; } + + function getCollateralBalance(AaveDataProviderInterface aaveData, address token) internal view returns (uint bal) { + (bal, , , , , , , ,) = aaveData.getUserReserveData(token, address(this)); + } } contract BasicResolver is AaveHelpers { @@ -110,6 +114,7 @@ contract BasicResolver is AaveHelpers { event LogWithdraw(address indexed token, uint256 tokenAmt, uint256 getId, uint256 setId); event LogBorrow(address indexed token, uint256 tokenAmt, uint256 indexed rateMode, uint256 getId, uint256 setId); event LogPayback(address indexed token, uint256 tokenAmt, uint256 indexed rateMode, uint256 getId, uint256 setId); + event LogEnableCollateral(address[] tokens); /** * @dev Deposit ETH/ERC20_Token. @@ -233,9 +238,29 @@ contract BasicResolver is AaveHelpers { emit LogPayback(token, _amt, rateMode, getId, setId); } + + /** + * @dev Enable collateral + * @param tokens Array of tokens to enable collateral + */ + function enableCollateral(address[] calldata tokens) external { + uint _length = tokens.length; + require(_length > 0, "0-tokens-not-allowed"); + + AaveInterface aave = AaveInterface(getAaveProvider().getLendingPool()); + AaveDataProviderInterface aaveData = getAaveDataProvider(); + + for (uint i = 0; i < _length; i++) { + address token = tokens[i]; + if (getCollateralBalance(aaveData, token) > 0 && !getIsColl(aaveData, token, address(this))) { + aave.setUserUseReserveAsCollateral(token, true); + } + } + + emit LogEnableCollateral(tokens); + } } contract ConnectAaveV2 is BasicResolver { string public name = "AaveV2-v1.0"; } - From f58c3af583ec824f6fc6691e06dadf58f30a7461 Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Thu, 10 Dec 2020 05:34:42 +0530 Subject: [PATCH 2/4] added payable modifier --- contracts/connectors/aave.sol | 2 +- contracts/connectors/aave_v2.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/connectors/aave.sol b/contracts/connectors/aave.sol index 79e4f6a..3fc3de7 100644 --- a/contracts/connectors/aave.sol +++ b/contracts/connectors/aave.sol @@ -199,7 +199,7 @@ contract BasicResolver is AaveHelpers { * @dev Enable collateral * @param tokens Array of tokens to enable collateral */ - function enableCollateral(address[] calldata tokens) external { + function enableCollateral(address[] calldata tokens) external payable { uint _length = tokens.length; require(_length > 0, "0-tokens-not-allowed"); diff --git a/contracts/connectors/aave_v2.sol b/contracts/connectors/aave_v2.sol index 8c73ceb..25c05ed 100644 --- a/contracts/connectors/aave_v2.sol +++ b/contracts/connectors/aave_v2.sol @@ -243,7 +243,7 @@ contract BasicResolver is AaveHelpers { * @dev Enable collateral * @param tokens Array of tokens to enable collateral */ - function enableCollateral(address[] calldata tokens) external { + function enableCollateral(address[] calldata tokens) external payable { uint _length = tokens.length; require(_length > 0, "0-tokens-not-allowed"); From ca56a8348011eb85753b1b504a9c19c51f4a8aaf Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Wed, 16 Dec 2020 10:13:48 +0530 Subject: [PATCH 3/4] Removed emitEvent --- contracts/connectors/aave.sol | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/contracts/connectors/aave.sol b/contracts/connectors/aave.sol index 3fc3de7..8649bec 100644 --- a/contracts/connectors/aave.sol +++ b/contracts/connectors/aave.sol @@ -112,9 +112,6 @@ contract BasicResolver is AaveHelpers { setUint(setId, _amt); emit LogDeposit(token, _amt, getId, setId); - bytes32 _eventCode = keccak256("LogDeposit(address,uint256,uint256,uint256)"); - bytes memory _eventParam = abi.encode(token, _amt, getId, setId); - emitEvent(_eventCode, _eventParam); } /** @@ -138,9 +135,6 @@ contract BasicResolver is AaveHelpers { setUint(setId, _amt); emit LogWithdraw(token, _amt, getId, setId); - bytes32 _eventCode = keccak256("LogWithdraw(address,uint256,uint256,uint256)"); - bytes memory _eventParam = abi.encode(token, _amt, getId, setId); - emitEvent(_eventCode, _eventParam); } /** @@ -157,9 +151,6 @@ contract BasicResolver is AaveHelpers { setUint(setId, _amt); emit LogBorrow(token, _amt, getId, setId); - bytes32 _eventCode = keccak256("LogBorrow(address,uint256,uint256,uint256)"); - bytes memory _eventParam = abi.encode(token, _amt, getId, setId); - emitEvent(_eventCode, _eventParam); } /** @@ -190,9 +181,6 @@ contract BasicResolver is AaveHelpers { setUint(setId, _amt); emit LogPayback(token, _amt, getId, setId); - bytes32 _eventCode = keccak256("LogPayback(address,uint256,uint256,uint256)"); - bytes memory _eventParam = abi.encode(token, _amt, getId, setId); - emitEvent(_eventCode, _eventParam); } /** @@ -217,5 +205,5 @@ contract BasicResolver is AaveHelpers { } contract ConnectAave is BasicResolver { - string public name = "Aave-v1"; + string public name = "Aave-v1.1"; } From 4c583046105f05a49febe6d1b6803bdbe97ab7b8 Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Wed, 16 Dec 2020 10:17:55 +0530 Subject: [PATCH 4/4] Updated name --- contracts/connectors/aave_v2.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/connectors/aave_v2.sol b/contracts/connectors/aave_v2.sol index 25c05ed..7d231d0 100644 --- a/contracts/connectors/aave_v2.sol +++ b/contracts/connectors/aave_v2.sol @@ -262,5 +262,5 @@ contract BasicResolver is AaveHelpers { } contract ConnectAaveV2 is BasicResolver { - string public name = "AaveV2-v1.0"; + string public name = "AaveV2-v1.1"; }