diff --git a/proposals/dao/fip_94.ts b/proposals/dao/fip_94.ts new file mode 100644 index 000000000..2a1d85481 --- /dev/null +++ b/proposals/dao/fip_94.ts @@ -0,0 +1,44 @@ +import hre, { ethers, artifacts } from 'hardhat'; +import { expect } from 'chai'; +import { + DeployUpgradeFunc, + NamedAddresses, + SetupUpgradeFunc, + TeardownUpgradeFunc, + ValidateUpgradeFunc +} from '@custom-types/types'; + +const fipNumber = '94'; // Change me! + +// Do any deployments +// This should exclusively include new contract deployments +const deploy: DeployUpgradeFunc = async (deployAddress: string, addresses: NamedAddresses, logging: boolean) => { + console.log(`No deploy actions for fip${fipNumber}`); + return { + // put returned contract objects here + }; +}; + +// Do any setup necessary for running the test. +// This could include setting up Hardhat to impersonate accounts, +// ensuring contracts have a specific state, etc. +const setup: SetupUpgradeFunc = async (addresses, oldContracts, contracts, logging) => { + console.log(`No setup actions for fip${fipNumber}`); +}; + +// Tears down any changes made in setup() that need to be +// cleaned up before doing any validation checks. +const teardown: TeardownUpgradeFunc = async (addresses, oldContracts, contracts, logging) => { + console.log(`No actions to complete in teardown for fip${fipNumber}`); +}; + +// Run any validations required on the fip using mocha or console logging +// IE check balances, check state of contracts, etc. +const validate: ValidateUpgradeFunc = async (addresses, oldContracts, contracts, logging) => { + // Verify Rari timelock does not have GOVERN_ROLE role + const core = contracts.core; + const hasGovRole = await core.hasRole(ethers.utils.id('GOVERN_ROLE'), addresses.rariTimelock); + expect(hasGovRole).to.equal(false); +}; + +export { deploy, setup, teardown, validate }; diff --git a/proposals/description/fip_94.ts b/proposals/description/fip_94.ts new file mode 100644 index 000000000..9d648b66d --- /dev/null +++ b/proposals/description/fip_94.ts @@ -0,0 +1,21 @@ +import { ProposalDescription } from '@custom-types/types'; + +const fip_94: ProposalDescription = { + title: 'FIP-94: Remove GOVERN_ROLE role from Rari timelock', + commands: [ + { + target: 'core', + values: '0', + method: 'revokeRole(bytes32,address)', + arguments: [ + '0x899bd46557473cb80307a9dabc297131ced39608330a2d29b2d52b660c03923e', // GOVERN_ROLE + '{rariTimelock}' + ], + description: 'Revoke GOVERN_ROLE role from Rari timelock' + } + ], + description: ` + This FIP revokes the GOVERN_ROLE role from the Rari timelock as a safety mechanism.` +}; + +export default fip_94; diff --git a/protocol-configuration/permissions.ts b/protocol-configuration/permissions.ts index 6b63dd758..359bb248f 100644 --- a/protocol-configuration/permissions.ts +++ b/protocol-configuration/permissions.ts @@ -12,7 +12,7 @@ export const permissions = { 'balancerDepositFeiWeth' ], BURNER_ROLE: [], - GOVERN_ROLE: ['core', 'feiDAOTimelock', 'rariTimelock'], + GOVERN_ROLE: ['core', 'feiDAOTimelock'], PCV_CONTROLLER_ROLE: [ 'feiDAOTimelock', 'ratioPCVControllerV2', diff --git a/test/integration/proposals_config.ts b/test/integration/proposals_config.ts index caf9b649c..0f1d37b2a 100644 --- a/test/integration/proposals_config.ts +++ b/test/integration/proposals_config.ts @@ -1,16 +1,17 @@ import { ProposalCategory, ProposalsConfigMap } from '@custom-types/types'; -// import fip_xx_proposal from '@proposals/description/fip_xx'; +import fip_94 from '@proposals/description/fip_94'; const proposals: ProposalsConfigMap = { - /* - fip_xx : { - deploy: true, // deploy flag for whether to run deploy action during e2e tests or use mainnet state - skipDAO: false, // whether or not to simulate proposal in DAO - totalValue: 0, // amount of ETH to send to DAO execution - proposal: fip_xx_proposal // full proposal file, imported from '@proposals/description/fip_xx.ts' - } - */ + fip_94: { + deploy: false, + proposalId: null, + affectedContractSignoff: ['rariTimelock'], + deprecatedContractSignoff: [], + category: ProposalCategory.DAO, + totalValue: 0, + proposal: fip_94 + } }; export default proposals;