From ae0d9f1ff67437902feeccef3ae734f11279c551 Mon Sep 17 00:00:00 2001 From: pradyuman-verma Date: Sat, 13 Aug 2022 21:58:48 +0530 Subject: [PATCH 1/3] aave v2 automation connnector Signed-off-by: pradyuman-verma --- .../connectors/aave/automation-v2/events.sol | 11 +++ .../aave/automation-v2/interfaces.sol | 25 ++++++ .../connectors/aave/automation-v2/main.sol | 84 +++++++++++++++++++ 3 files changed, 120 insertions(+) create mode 100644 contracts/mainnet/connectors/aave/automation-v2/events.sol create mode 100644 contracts/mainnet/connectors/aave/automation-v2/interfaces.sol create mode 100644 contracts/mainnet/connectors/aave/automation-v2/main.sol diff --git a/contracts/mainnet/connectors/aave/automation-v2/events.sol b/contracts/mainnet/connectors/aave/automation-v2/events.sol new file mode 100644 index 00000000..8b3042c2 --- /dev/null +++ b/contracts/mainnet/connectors/aave/automation-v2/events.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +contract Events { + event LogCancelAutomation(); + + event LogSubmitAutomation(uint256 safeHF, uint256 thresholdHF); + + event LogUpdateAutomation(uint256 safeHF, uint256 thresholdHF); +} diff --git a/contracts/mainnet/connectors/aave/automation-v2/interfaces.sol b/contracts/mainnet/connectors/aave/automation-v2/interfaces.sol new file mode 100644 index 00000000..9c1945f1 --- /dev/null +++ b/contracts/mainnet/connectors/aave/automation-v2/interfaces.sol @@ -0,0 +1,25 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +interface InstaAaveAutomation { + function submitAutomationRequest( + uint256 safeHealthFactor, + uint256 thresholdHealthFactor + ) external; + + function cancelAutomationRequest() external; + + function updateAutomation( + uint256 safeHealthFactor, + uint256 thresholdHealthFactor + ) external; +} + +interface AccountInterface { + function enable(address) external; + + function disable(address) external; + + function isAuth(address) external view returns (bool); +} diff --git a/contracts/mainnet/connectors/aave/automation-v2/main.sol b/contracts/mainnet/connectors/aave/automation-v2/main.sol new file mode 100644 index 00000000..2f6b7f7d --- /dev/null +++ b/contracts/mainnet/connectors/aave/automation-v2/main.sol @@ -0,0 +1,84 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title InstaAutomation + * @dev Insta-Aave-v2-Automation + */ + +import "./events.sol"; +import "./interfaces.sol"; + +abstract contract Resolver is Events { + InstaAaveAutomation internal immutable automation = + InstaAaveAutomation(0x3cF499Dbd2aBB6505f48Db27a9871523A38e6e2C); // TODO update + + function submitAutomationRequest( + uint256 safeHealthFactor, + uint256 thresholdHealthFactor + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + bool isAuth = AccountInterface(address(this)).isAuth( + address(automation) + ); + + if (!isAuth) + AccountInterface(address(this)).enable(address(automation)); + + automation.submitAutomationRequest( + safeHealthFactor, + thresholdHealthFactor + ); + + (_eventName, _eventParam) = ( + "LogSubmitAutomation(uint256,uint256)", + abi.encode(safeHealthFactor, thresholdHealthFactor) + ); + } + + function cancelAutomationRequest() + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + automation.cancelAutomationRequest(); + + bool isAuth = AccountInterface(address(this)).isAuth( + address(automation) + ); + + if (isAuth) + AccountInterface(address(this)).disable(address(automation)); + + (_eventName, _eventParam) = ("LogCancelAutomation()", "0x"); + } + + function updateAutomationRequest( + uint256 safeHealthFactor, + uint256 thresholdHealthFactor + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + automation.cancelAutomationRequest(); + + automation.submitAutomationRequest( + safeHealthFactor, + thresholdHealthFactor + ); + + (_eventName, _eventParam) = ( + "LogUpdateAutomation(uint256,uint256)", + abi.encode(safeHealthFactor, thresholdHealthFactor) + ); + } +} + +contract ConnectV2InstaAaveV2Automation is Resolver { + string public constant name = "Insta-Aave-V2-Automation-v1"; +} From 3c4fe100f0e4eaad95690425aaa17db06f3a887b Mon Sep 17 00:00:00 2001 From: pradyuman-verma Date: Sun, 14 Aug 2022 03:16:06 +0530 Subject: [PATCH 2/3] address address Signed-off-by: pradyuman-verma --- contracts/mainnet/connectors/aave/automation-v2/main.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/mainnet/connectors/aave/automation-v2/main.sol b/contracts/mainnet/connectors/aave/automation-v2/main.sol index 2f6b7f7d..e48fae52 100644 --- a/contracts/mainnet/connectors/aave/automation-v2/main.sol +++ b/contracts/mainnet/connectors/aave/automation-v2/main.sol @@ -12,7 +12,7 @@ import "./interfaces.sol"; abstract contract Resolver is Events { InstaAaveAutomation internal immutable automation = - InstaAaveAutomation(0x3cF499Dbd2aBB6505f48Db27a9871523A38e6e2C); // TODO update + InstaAaveAutomation(0x343635557b6bB7283d24AecD9c49259bA0648acF); function submitAutomationRequest( uint256 safeHealthFactor, From 34d41702a0dacd5f60350554150c82ca39a2862f Mon Sep 17 00:00:00 2001 From: pradyuman-verma Date: Tue, 30 Aug 2022 00:27:47 +0530 Subject: [PATCH 3/3] updated proxy address Signed-off-by: pradyuman-verma --- contracts/mainnet/connectors/aave/automation-v2/main.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/mainnet/connectors/aave/automation-v2/main.sol b/contracts/mainnet/connectors/aave/automation-v2/main.sol index e48fae52..cc54ab31 100644 --- a/contracts/mainnet/connectors/aave/automation-v2/main.sol +++ b/contracts/mainnet/connectors/aave/automation-v2/main.sol @@ -12,7 +12,7 @@ import "./interfaces.sol"; abstract contract Resolver is Events { InstaAaveAutomation internal immutable automation = - InstaAaveAutomation(0x343635557b6bB7283d24AecD9c49259bA0648acF); + InstaAaveAutomation(0x08c1c01be430C9381AD2794412C3E940254CD97c); // production function submitAutomationRequest( uint256 safeHealthFactor,