From e31abde1f8065c94ace9e5e0a12ac6c7402f9ca8 Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Wed, 23 Jun 2021 00:56:44 +0530 Subject: [PATCH 1/3] Added instadapp governance connector --- contracts/mainnet/connectors/INST/events.sol | 6 ++ contracts/mainnet/connectors/INST/helpers.sol | 18 ++++++ .../mainnet/connectors/INST/interface.sol | 10 ++++ contracts/mainnet/connectors/INST/main.sol | 60 +++++++++++++++++++ 4 files changed, 94 insertions(+) create mode 100644 contracts/mainnet/connectors/INST/events.sol create mode 100644 contracts/mainnet/connectors/INST/helpers.sol create mode 100644 contracts/mainnet/connectors/INST/interface.sol create mode 100644 contracts/mainnet/connectors/INST/main.sol diff --git a/contracts/mainnet/connectors/INST/events.sol b/contracts/mainnet/connectors/INST/events.sol new file mode 100644 index 00000000..042c635a --- /dev/null +++ b/contracts/mainnet/connectors/INST/events.sol @@ -0,0 +1,6 @@ +pragma solidity ^0.7.0; + +contract Events { + event LogVoteCast(uint256 proposalId, uint256 support, string reason); + event LogDelegate(address delegatee); +} diff --git a/contracts/mainnet/connectors/INST/helpers.sol b/contracts/mainnet/connectors/INST/helpers.sol new file mode 100644 index 00000000..7bdab7a1 --- /dev/null +++ b/contracts/mainnet/connectors/INST/helpers.sol @@ -0,0 +1,18 @@ +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +import { DSMath } from "../../common/math.sol"; +import { Basic } from "../../common/basic.sol"; +import { InstaTokenInterface, InstaGovernorInterface } from "./interface.sol"; + +abstract contract Helpers is DSMath, Basic { + /** + * @dev InstaGovernorBravo + */ + InstaGovernorInterface internal constant instaGovernor = InstaGovernorInterface(0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B); + + /** + * @dev INST Token + */ + InstaTokenInterface internal constant instToken = InstaTokenInterface(0xc00e94Cb662C3520282E6f5717214004A7f26888); +} \ No newline at end of file diff --git a/contracts/mainnet/connectors/INST/interface.sol b/contracts/mainnet/connectors/INST/interface.sol new file mode 100644 index 00000000..eacb53ae --- /dev/null +++ b/contracts/mainnet/connectors/INST/interface.sol @@ -0,0 +1,10 @@ +pragma solidity ^0.7.0; + +interface InstaGovernorInterface { + function castVoteWithReason(uint proposalId, uint8 support, string calldata reason) external; +} + +interface InstaTokenInterface { + function delegate(address delegatee) external; + function delegates(address) external view returns(address); +} \ No newline at end of file diff --git a/contracts/mainnet/connectors/INST/main.sol b/contracts/mainnet/connectors/INST/main.sol new file mode 100644 index 00000000..05329dee --- /dev/null +++ b/contracts/mainnet/connectors/INST/main.sol @@ -0,0 +1,60 @@ +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title Instadapp Governance. + * @dev Governance. + */ +import { TokenInterface } from "../../common/interfaces.sol"; +import { Stores } from "../../common/stores.sol"; +import { Helpers } from "./helpers.sol"; +import { Events } from "./events.sol"; + +abstract contract Resolver is Events, Helpers { + + /** + * @dev Delegate votes. + * @notice Delegating votes to delegatee. + * @param delegatee The address to delegate the votes. + */ + function delegate(address delegatee) external payable returns (string memory _eventName, bytes memory _eventParam) { + require(instToken.delegates(address(this)) != delegatee, "Already delegated to same delegatee."); + + instToken.delegate(delegatee); + + _eventName = "LogDelegate(address)"; + _eventParam = abi.encode(delegatee); + } + + + /** + * @dev Cast vote. + * @notice Casting vote for a proposal + * @param proposalId The id of the proposal to vote on + * @param support The support value for the vote. 0=against, 1=for, 2=abstain + */ + function voteCast(uint256 proposalId, uint256 support) external payable returns (string memory _eventName, bytes memory _eventParam) { + instaGovernor.castVoteWithReason(proposalId, uint8(support), ""); + + _eventName = "LogVoteCast(uint256,uint256,string)"; + _eventParam = abi.encode(proposalId, support, ""); + } + + /** + * @dev Cast vote with reason. + * @notice Casting vote for a proposal + * @param proposalId The id of the proposal to vote on + * @param support The support value for the vote. 0=against, 1=for, 2=abstain + * @param reason The reason given for the vote + */ + function voteCastWithReason(uint256 proposalId, uint256 support, string calldata reason) external payable returns (string memory _eventName, bytes memory _eventParam) { + instaGovernor.castVoteWithReason(proposalId, uint8(support), reason); + + _eventName = "LogVoteCast(uint256,uint256,string)"; + _eventParam = abi.encode(proposalId, support, reason); + } +} + +contract ConnectV2InstadappGovernanceBravo is Resolver { + string public constant name = "Instadapp-governance-bravo-v1"; +} From e64b517e2ae74d5520dd7340354c218f3e45b457 Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Wed, 23 Jun 2021 15:23:35 +0530 Subject: [PATCH 2/3] Updated contract addresses --- contracts/mainnet/connectors/INST/helpers.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/mainnet/connectors/INST/helpers.sol b/contracts/mainnet/connectors/INST/helpers.sol index 7bdab7a1..f923efdf 100644 --- a/contracts/mainnet/connectors/INST/helpers.sol +++ b/contracts/mainnet/connectors/INST/helpers.sol @@ -9,10 +9,10 @@ abstract contract Helpers is DSMath, Basic { /** * @dev InstaGovernorBravo */ - InstaGovernorInterface internal constant instaGovernor = InstaGovernorInterface(0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B); + InstaGovernorInterface internal constant instaGovernor = InstaGovernorInterface(0x0204Cd037B2ec03605CFdFe482D8e257C765fA1B); /** * @dev INST Token */ - InstaTokenInterface internal constant instToken = InstaTokenInterface(0xc00e94Cb662C3520282E6f5717214004A7f26888); + InstaTokenInterface internal constant instToken = InstaTokenInterface(0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb); } \ No newline at end of file From 2dc6eaa4bca7e92d1098977022e76ea97b107da0 Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Wed, 23 Jun 2021 15:48:32 +0530 Subject: [PATCH 3/3] Updated connector address --- docs/connectors.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/connectors.json b/docs/connectors.json index 1f2634a7..6acb543d 100644 --- a/docs/connectors.json +++ b/docs/connectors.json @@ -19,7 +19,8 @@ "COMPOUND-IMPORT-B": "0xdA101870ca6136539628F28041E1B55baf4EB6C0", "INSTAPOOL-A": "0x5806Af7AB22E2916fA582Ff05731Bf7C682387B2", "MAKERDAO-CLAIM-A": "0x2f8cBE650af98602a215b6482F2aD60893C5A4E8", - "WETH-A": "0x22075fa719eFb02Ca3cF298AFa9C974B7465E5D3" + "WETH-A": "0x22075fa719eFb02Ca3cF298AFa9C974B7465E5D3", + "INST-A": "0x52C2C4a0db049255fF345EB9D3Fb1f555b7a924A" }, "137" : { "AAVE-V2-A": "0xE84d8010Afc3663919F44685cB53ED88866da3eE",