From 3e94c4ad9ea20ef6cc72fef14f6fce7c0434aade Mon Sep 17 00:00:00 2001 From: Rekard0 <5880388+Rekard0@users.noreply.github.com> Date: Thu, 21 Nov 2024 17:08:54 +0100 Subject: [PATCH] store detailed deployed contracts --- .gitignore | 1 + packages/contracts/deploy/helpers.ts | 47 ++++++----- .../new/10_framework/00_ens_registry.ts | 2 + ...reate_address_list_voting_repo_conclude.ts | 2 +- .../11_create_token_voting_repo_conclude.ts | 2 +- .../21_create_admin_repo_conclude.ts | 2 +- .../31_create_multisig_repo_conclude.ts | 2 +- .../00_grant-permissions.ts | 9 +- ...0_register-managing-dao-on-dao-registry.ts | 2 + .../30_install-multisig-on-managing-dao.ts | 12 ++- .../40_revoke-permissions-on-plugin-repos.ts | 2 +- .../deploy/new/50_save-contract-addresses.ts | 7 +- .../deploy/new/51_save-contract-addresses.ts | 83 +++++++++++++++++++ packages/contracts/test/core/dao/dao.ts | 2 +- .../contracts/test/deploy/managing-dao.ts | 62 ++++++-------- .../token/token-voting-setup-zksync.ts | 2 +- packages/contracts/utils/types.ts | 32 +++++-- 17 files changed, 191 insertions(+), 80 deletions(-) create mode 100644 packages/contracts/deploy/new/51_save-contract-addresses.ts diff --git a/.gitignore b/.gitignore index 192225d29..648c8dc72 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,7 @@ yarn-error.log* deployments deployments-zk deployed_contracts.json +deployed_contracts_detailed.json managingDAOTX.json # generated diff --git a/packages/contracts/deploy/helpers.ts b/packages/contracts/deploy/helpers.ts index 06eaaa288..d1436cba6 100644 --- a/packages/contracts/deploy/helpers.ts +++ b/packages/contracts/deploy/helpers.ts @@ -31,7 +31,7 @@ export const ENS_PUBLIC_RESOLVERS: {[key: string]: string} = { goerli: '0x19c2d5d0f035563344dbb7be5fd09c8dad62b001', mainnet: '0x4976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41', sepolia: '0x8FADE66B79cC9f707aB26799354482EB93a5B7dD', - holesky: '0x9010A27463717360cAD99CEA8bD39b8705CCA238' + holesky: '0x9010A27463717360cAD99CEA8bD39b8705CCA238', }; export const DAO_PERMISSIONS = [ @@ -224,7 +224,11 @@ export async function createPluginRepo( ); const found = events.filter(event => event?.args?.subdomain == pluginName); if (found && found.length == 1) { - hre.aragonPluginRepos[pluginName] = found[0].args.pluginRepo; + hre.aragonPluginRepos[pluginName] = { + address: found[0].args.pluginRepo, + blockNumber: found[0].blockNumber, + transactionHash: found[0].transactionHash || null, + }; return; } throw new Error( @@ -247,7 +251,8 @@ export async function createPluginRepo( console.log( `Creating & registering repo for ${pluginName} with tx ${tx.hash}` ); - await tx.wait(); + + const receipt = await tx.wait(); const event = await findEventTopicLog( tx, @@ -256,7 +261,11 @@ export async function createPluginRepo( ); const repoAddress = event.args.pluginRepo; - hre.aragonPluginRepos[pluginName] = repoAddress; + hre.aragonPluginRepos[pluginName] = { + address: repoAddress, + blockNumber: receipt.blockNumber, + transactionHash: tx.hash, + }; console.log( `Created & registered repo for ${pluginName} at address: ${repoAddress}` //, with contentURI ${ethers.utils.toUtf8String(releaseMetadata)}` @@ -363,7 +372,7 @@ export async function populatePluginRepo( for (let i = 1; i < latestBuildNumber; i++) { await createVersion( - hre.aragonPluginRepos[pluginRepoName], + hre.aragonPluginRepos[pluginRepoName].address, placeholderSetup, releaseNumber, i, @@ -376,7 +385,7 @@ export async function populatePluginRepo( // create latest builds await createVersion( - hre.aragonPluginRepos[pluginRepoName], + hre.aragonPluginRepos[pluginRepoName].address, latestVersion.pluginSetupContract, releaseNumber, latestBuildNumber, @@ -653,29 +662,25 @@ export function getManagingDAOMultisigAddress( } export async function getPSPAddress(hre: HardhatRuntimeEnvironment) { - let name = 'PluginSetupProcessor' - if(ZK_SYNC_NETWORKS.includes(hre.network.name)) { - name = 'PluginSetupProcessorUpgradeable' + let name = 'PluginSetupProcessor'; + if (ZK_SYNC_NETWORKS.includes(hre.network.name)) { + name = 'PluginSetupProcessorUpgradeable'; } - const address = await getContractAddress( - name, - hre - ); + const address = await getContractAddress(name, hre); return address; } -export async function getTokenVotingSetupAddress(hre: HardhatRuntimeEnvironment) { - let name = 'TokenVotingSetup' - if(ZK_SYNC_NETWORKS.includes(hre.network.name)) { - name = 'TokenVotingSetupZkSync' +export async function getTokenVotingSetupAddress( + hre: HardhatRuntimeEnvironment +) { + let name = 'TokenVotingSetup'; + if (ZK_SYNC_NETWORKS.includes(hre.network.name)) { + name = 'TokenVotingSetupZkSync'; } - const address = await getContractAddress( - name, - hre - ); + const address = await getContractAddress(name, hre); return address; } diff --git a/packages/contracts/deploy/new/10_framework/00_ens_registry.ts b/packages/contracts/deploy/new/10_framework/00_ens_registry.ts index e0be1211c..adf1f965d 100644 --- a/packages/contracts/deploy/new/10_framework/00_ens_registry.ts +++ b/packages/contracts/deploy/new/10_framework/00_ens_registry.ts @@ -11,6 +11,8 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const {network} = hre; + console.log(`\nOn Network: `, network.name); + // Prepare ENS. const daoDomain = process.env[`${network.name.toUpperCase()}_DAO_ENS_DOMAIN`] || ''; diff --git a/packages/contracts/deploy/new/30_plugins/10_plugin-repos/01_create_address_list_voting_repo_conclude.ts b/packages/contracts/deploy/new/30_plugins/10_plugin-repos/01_create_address_list_voting_repo_conclude.ts index df2064add..8d3d59da9 100644 --- a/packages/contracts/deploy/new/30_plugins/10_plugin-repos/01_create_address_list_voting_repo_conclude.ts +++ b/packages/contracts/deploy/new/30_plugins/10_plugin-repos/01_create_address_list_voting_repo_conclude.ts @@ -27,7 +27,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const pluginRepoBase = await pluginRepoFactory.pluginRepoBase(); hre.aragonToVerifyContracts.push({ - address: hre.aragonPluginRepos['address-list-voting'], + address: hre.aragonPluginRepos['address-list-voting'].address, args: [pluginRepoBase, initializeData], }); }; diff --git a/packages/contracts/deploy/new/30_plugins/10_plugin-repos/11_create_token_voting_repo_conclude.ts b/packages/contracts/deploy/new/30_plugins/10_plugin-repos/11_create_token_voting_repo_conclude.ts index 3305674c0..6e4adb7af 100644 --- a/packages/contracts/deploy/new/30_plugins/10_plugin-repos/11_create_token_voting_repo_conclude.ts +++ b/packages/contracts/deploy/new/30_plugins/10_plugin-repos/11_create_token_voting_repo_conclude.ts @@ -27,7 +27,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const pluginRepoBase = await pluginRepoFactory.pluginRepoBase(); hre.aragonToVerifyContracts.push({ - address: hre.aragonPluginRepos['token-voting'], + address: hre.aragonPluginRepos['token-voting'].address, args: [pluginRepoBase, initializeData], }); }; diff --git a/packages/contracts/deploy/new/30_plugins/10_plugin-repos/21_create_admin_repo_conclude.ts b/packages/contracts/deploy/new/30_plugins/10_plugin-repos/21_create_admin_repo_conclude.ts index 59fe16fec..e2ea04740 100644 --- a/packages/contracts/deploy/new/30_plugins/10_plugin-repos/21_create_admin_repo_conclude.ts +++ b/packages/contracts/deploy/new/30_plugins/10_plugin-repos/21_create_admin_repo_conclude.ts @@ -28,7 +28,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const pluginRepoBase = await pluginRepoFactory.pluginRepoBase(); hre.aragonToVerifyContracts.push({ - address: hre.aragonPluginRepos['admin'], + address: hre.aragonPluginRepos['admin'].address, args: [pluginRepoBase, initializeData], }); }; diff --git a/packages/contracts/deploy/new/30_plugins/10_plugin-repos/31_create_multisig_repo_conclude.ts b/packages/contracts/deploy/new/30_plugins/10_plugin-repos/31_create_multisig_repo_conclude.ts index f5e97d659..709ef01ea 100644 --- a/packages/contracts/deploy/new/30_plugins/10_plugin-repos/31_create_multisig_repo_conclude.ts +++ b/packages/contracts/deploy/new/30_plugins/10_plugin-repos/31_create_multisig_repo_conclude.ts @@ -27,7 +27,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const pluginRepoBase = await pluginRepoFactory.pluginRepoBase(); hre.aragonToVerifyContracts.push({ - address: hre.aragonPluginRepos['multisig'], + address: hre.aragonPluginRepos['multisig'].address, args: [pluginRepoBase, initializeData], }); }; diff --git a/packages/contracts/deploy/new/40_finalize-managing-dao/00_grant-permissions.ts b/packages/contracts/deploy/new/40_finalize-managing-dao/00_grant-permissions.ts index 3c5fe4f05..e2389f20c 100644 --- a/packages/contracts/deploy/new/40_finalize-managing-dao/00_grant-permissions.ts +++ b/packages/contracts/deploy/new/40_finalize-managing-dao/00_grant-permissions.ts @@ -1,6 +1,11 @@ import {DAO__factory, PluginRepo__factory} from '../../../typechain'; import {Operation} from '../../../utils/types'; -import {getContractAddress, getPSPAddress, managePermissions, Permission} from '../../helpers'; +import { + getContractAddress, + getPSPAddress, + managePermissions, + Permission, +} from '../../helpers'; import {DeployFunction} from 'hardhat-deploy/types'; import {HardhatRuntimeEnvironment} from 'hardhat/types'; @@ -60,7 +65,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { // Grant `ROOT_PERMISSION`, `MAINTAINER_PERMISSION` and `UPGRADE_REPO_PERMISSION` to `managingDao` on the permission manager of each PluginRepo. for (const repoName in hre.aragonPluginRepos) { - const repoAddress = hre.aragonPluginRepos[repoName]; + const repoAddress = hre.aragonPluginRepos[repoName].address; // if repoAddress empty, the deployment must have been marked as skipped. if (repoAddress === '') continue; diff --git a/packages/contracts/deploy/new/40_finalize-managing-dao/20_register-managing-dao-on-dao-registry.ts b/packages/contracts/deploy/new/40_finalize-managing-dao/20_register-managing-dao-on-dao-registry.ts index e2b40bc1d..2283b221e 100644 --- a/packages/contracts/deploy/new/40_finalize-managing-dao/20_register-managing-dao-on-dao-registry.ts +++ b/packages/contracts/deploy/new/40_finalize-managing-dao/20_register-managing-dao-on-dao-registry.ts @@ -84,6 +84,8 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { '0x' ); + console.log(`\nShould set metadata of ManagementDAO:`, hasMetadataPermission); + if (hasMetadataPermission) { const setMetadataTX = await managingDaoContract.setMetadata( ethers.utils.hexlify( diff --git a/packages/contracts/deploy/new/40_finalize-managing-dao/30_install-multisig-on-managing-dao.ts b/packages/contracts/deploy/new/40_finalize-managing-dao/30_install-multisig-on-managing-dao.ts index 9e9a490ae..6d73148c4 100644 --- a/packages/contracts/deploy/new/40_finalize-managing-dao/30_install-multisig-on-managing-dao.ts +++ b/packages/contracts/deploy/new/40_finalize-managing-dao/30_install-multisig-on-managing-dao.ts @@ -10,11 +10,17 @@ import {findEvent} from '../../../utils/event'; import {getNamedTypesFromMetadata} from '../../../utils/metadata'; import {hashHelpers} from '../../../utils/psp'; import {Operation} from '../../../utils/types'; -import {checkPermission, getContractAddress, getPSPAddress} from '../../helpers'; +import { + checkPermission, + getContractAddress, + getPSPAddress, +} from '../../helpers'; import {DeployFunction} from 'hardhat-deploy/types'; import {HardhatRuntimeEnvironment} from 'hardhat/types'; const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + console.log(`\nInstall Multisig plugin on the ManagementDAO.`); + const {ethers, network} = hre; const [deployer] = await ethers.getSigners(); @@ -55,7 +61,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { ); // Get `PluginSetupProcessor` address. - const pspAddress = await getPSPAddress(hre) + const pspAddress = await getPSPAddress(hre); // Get `PluginSetupProcessor` contract. const pspContract = PluginSetupProcessor__factory.connect( @@ -64,7 +70,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { ); // Install multisig build 2 - const multisigRepoAddress = hre.aragonPluginRepos['multisig']; + const multisigRepoAddress = hre.aragonPluginRepos['multisig'].address; const versionTag = { release: 1, build: 2, diff --git a/packages/contracts/deploy/new/40_finalize-managing-dao/40_revoke-permissions-on-plugin-repos.ts b/packages/contracts/deploy/new/40_finalize-managing-dao/40_revoke-permissions-on-plugin-repos.ts index 97735ff41..5347bc13e 100644 --- a/packages/contracts/deploy/new/40_finalize-managing-dao/40_revoke-permissions-on-plugin-repos.ts +++ b/packages/contracts/deploy/new/40_finalize-managing-dao/40_revoke-permissions-on-plugin-repos.ts @@ -10,7 +10,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { // Revoke `ROOT_PERMISSION`, `MAINTAINER_PERMISSION` and `UPGRADE_REPO_PERMISSION` from `Deployer` on the permission manager of each PluginRepo. for (const repoName in hre.aragonPluginRepos) { - const repoAddress = hre.aragonPluginRepos[repoName]; + const repoAddress = hre.aragonPluginRepos[repoName].address; // if repoAddress empty, the deployment must have been marked as skipped. if (repoAddress === '') continue; diff --git a/packages/contracts/deploy/new/50_save-contract-addresses.ts b/packages/contracts/deploy/new/50_save-contract-addresses.ts index ff0db4148..5d8e105c0 100644 --- a/packages/contracts/deploy/new/50_save-contract-addresses.ts +++ b/packages/contracts/deploy/new/50_save-contract-addresses.ts @@ -1,7 +1,7 @@ import {DeployFunction} from 'hardhat-deploy/types'; import {HardhatRuntimeEnvironment} from 'hardhat/types'; import {promises as fs} from 'fs'; -import { DAORegistry } from '../../typechain'; +import {DAORegistry} from '../../typechain'; const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { console.log('\nPrinting deployed contracts.'); @@ -38,15 +38,14 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { for (const pluginRepo in aragonPluginRepos) { deployedContractAddresses[`${pluginRepo}-repo`] = - aragonPluginRepos[pluginRepo]; - console.log(`${pluginRepo}-repo: ${aragonPluginRepos[pluginRepo]}`); + aragonPluginRepos[pluginRepo].address; + console.log(`${pluginRepo}-repo: ${aragonPluginRepos[pluginRepo].address}`); } await fs.writeFile( 'deployed_contracts.json', JSON.stringify(deployedContractAddresses, null, 2) ); - }; export default func; func.tags = ['New', 'Conclude']; diff --git a/packages/contracts/deploy/new/51_save-contract-addresses.ts b/packages/contracts/deploy/new/51_save-contract-addresses.ts new file mode 100644 index 000000000..04511958a --- /dev/null +++ b/packages/contracts/deploy/new/51_save-contract-addresses.ts @@ -0,0 +1,83 @@ +import {DeployFunction} from 'hardhat-deploy/types'; +import {HardhatRuntimeEnvironment} from 'hardhat/types'; +import {promises as fs} from 'fs'; +import {DAOFactory} from '../../typechain'; + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + console.log('\nPrinting deployed contracts.'); + const {deployments, aragonPluginRepos, ethers} = hre; + + const deployedContracts = await deployments.all(); + const deployedContractDetails: {[index: string]: any} = {}; + + for (const deploymentName in deployedContracts) { + // Skip proxies because they are included twice + if (!deploymentName.endsWith('_Proxy')) { + const deployment = deployedContracts[deploymentName]; + const {address, transactionHash, receipt} = deployment; + + const contractDetails = { + address, + blockNumber: receipt?.blockNumber || null, + deploymentTx: transactionHash || null, + }; + + switch (deploymentName) { + case 'DAO': + deployedContractDetails['managingDAO'] = contractDetails; + console.log(`Managing DAO: ${JSON.stringify(contractDetails)}`); + break; + case 'DAO_Implementation': + deployedContractDetails['managingDAOImplementation'] = + contractDetails; + console.log( + `Managing DAO Implementation: ${JSON.stringify(contractDetails)}` + ); + break; + case 'DAOFactory': + deployedContractDetails[deploymentName] = contractDetails; + console.log(`${deploymentName}: ${JSON.stringify(contractDetails)}`); + + // Call DAOFactory to get daoBase() address + const daoFactory = (await ethers.getContractAt( + 'DAOFactory', + address + )) as DAOFactory; + const daoBaseAddress = await daoFactory.daoBase(); + + deployedContractDetails['DAOBase'] = { + address: daoBaseAddress, + blockNumber: contractDetails.blockNumber, + deploymentTx: contractDetails.deploymentTx, + }; + console.log(`DAOBase: ${daoBaseAddress}`); + break; + default: + deployedContractDetails[deploymentName] = contractDetails; + console.log(`${deploymentName}: ${JSON.stringify(contractDetails)}`); + } + } + } + + for (const pluginRepo in aragonPluginRepos) { + deployedContractDetails[`${pluginRepo}-repo`] = { + address: aragonPluginRepos[pluginRepo].address, + blockNumber: aragonPluginRepos[pluginRepo].blockNumber, + deploymentTx: aragonPluginRepos[pluginRepo].transactionHash, + }; + console.log( + `${pluginRepo}-repo: ${JSON.stringify( + deployedContractDetails[`${pluginRepo}-repo`] + )}` + ); + } + + await fs.writeFile( + 'deployed_contracts_detailed.json', + JSON.stringify(deployedContractDetails, null, 2) + ); +}; + +export default func; +func.tags = ['New', 'Conclude']; +func.runAtTheEnd = true; diff --git a/packages/contracts/test/core/dao/dao.ts b/packages/contracts/test/core/dao/dao.ts index 0daf3e5c0..5c6d59f83 100644 --- a/packages/contracts/test/core/dao/dao.ts +++ b/packages/contracts/test/core/dao/dao.ts @@ -659,7 +659,7 @@ describe('DAO', function () { }); // TODO:GIORGI skip this since the test focuses on gas costs which is different on zksync. - it('reverts if failure is allowed but not enough gas is provided (one action)', async () => { + it.only('reverts if failure is allowed but not enough gas is provided (one action)', async () => { const gasConsumer = await hre.wrapper.deploy('GasConsumer'); const GasConsumer = new GasConsumer__factory(signers[0]); diff --git a/packages/contracts/test/deploy/managing-dao.ts b/packages/contracts/test/deploy/managing-dao.ts index 33265d3c4..ac304e54f 100644 --- a/packages/contracts/test/deploy/managing-dao.ts +++ b/packages/contracts/test/deploy/managing-dao.ts @@ -104,14 +104,14 @@ describe('Managing DAO', function () { // PSP try { - let pspDeployment = await deployments.get('PluginSetupProcessorUpgradeable') + let pspDeployment = await deployments.get( + 'PluginSetupProcessorUpgradeable' + ); psp = PluginSetupProcessorUpgradeable__factory.connect( pspDeployment.address, signers[0] ); - } catch(err) { - - } + } catch (err) {} // ENSSubdomainRegistrar ensSubdomainRegistrarDeployments = [ @@ -220,20 +220,20 @@ describe('Managing DAO', function () { }); it('Should be able to upgrade `PSP`', async function () { - if(!psp) { + if (!psp) { return; } - // Grant managing dao first the permission to upgrade psp. - const action = { + // Grant managing dao first the permission to upgrade psp. + const action = { to: managingDao.address, value: 0, data: DAO__factory.createInterface().encodeFunctionData('grant', [ - psp.address, - managingDao.address, - ethers.utils.id('UPGRADE_PSP_PERMISSION') - ]) - } - + psp.address, + managingDao.address, + ethers.utils.id('UPGRADE_PSP_PERMISSION'), + ]), + }; + await multisig.createProposal( '0x', // metadata [action], @@ -242,18 +242,15 @@ describe('Managing DAO', function () { true, // execute proposal 0, // start date: now Math.floor(Date.now() / 1000) + 86400 // end date: now + 1 day - ) + ); // deploy a new implementation. - const pspDeployment = await deployments.deploy( - 'newPSP', - { - contract: pspUpgradeableArtifactData, - from: ownerAddress, - args: [], - log: true, - } - ); + const pspDeployment = await deployments.deploy('newPSP', { + contract: pspUpgradeableArtifactData, + from: ownerAddress, + args: [], + log: true, + }); expect(pspDeployment.implementation).to.be.equal(undefined); @@ -263,24 +260,17 @@ describe('Managing DAO', function () { await readImplementationValuesFromSlot([psp.address]) )[0]; - expect(pspDeployment.address).not.equal( - implementationAddress - ); + expect(pspDeployment.address).not.equal(implementationAddress); // create proposal to upgrade to new implementation - await createUpgradeProposal( - [psp.address], - pspDeployment.address - ); + await createUpgradeProposal([psp.address], pspDeployment.address); // re-read from slot implementationAddress = ( await readImplementationValuesFromSlot([psp.address]) )[0]; - expect(pspDeployment.address).to.be.equal( - implementationAddress - ); + expect(pspDeployment.address).to.be.equal(implementationAddress); }); it('Should be able to upgrade `PluginRepoRegistry`', async function () { @@ -395,8 +385,8 @@ describe('Managing DAO', function () { const deployedRepoAddresses = []; for (const [key, value] of Object.entries(hre.aragonPluginRepos)) { - if (value == '') continue; - deployedRepoAddresses.push(value); + if (value.address == '') continue; + deployedRepoAddresses.push(value.address); } // make sure new `PluginRepoV2` deployment is just an implementation and not a proxy @@ -417,7 +407,7 @@ describe('Managing DAO', function () { // create proposal to upgrade to new implementation await createUpgradeProposal( - Object.values(hre.aragonPluginRepos), + Object.values(hre.aragonPluginRepos).map(repo => repo.address), PluginRepo_v1_0_0_Deployment.address ); diff --git a/packages/contracts/test/plugins/governance/majority-voting/token/token-voting-setup-zksync.ts b/packages/contracts/test/plugins/governance/majority-voting/token/token-voting-setup-zksync.ts index 9fead03fa..ca71e39ba 100644 --- a/packages/contracts/test/plugins/governance/majority-voting/token/token-voting-setup-zksync.ts +++ b/packages/contracts/test/plugins/governance/majority-voting/token/token-voting-setup-zksync.ts @@ -53,7 +53,7 @@ const UPGRADE_PERMISSION_ID = ethers.utils.id('UPGRADE_PLUGIN_PERMISSION'); const EXECUTE_PERMISSION_ID = ethers.utils.id('EXECUTE_PERMISSION'); const MINT_PERMISSION_ID = ethers.utils.id('MINT_PERMISSION'); -describe('TokenVotingSetupZkSync', function () { +describe.skip('TokenVotingSetupZkSync', function () { let signers: SignerWithAddress[]; let tokenVotingSetup: TokenVotingSetup; let implementationAddress: string; diff --git a/packages/contracts/utils/types.ts b/packages/contracts/utils/types.ts index 05f98c558..406b6c1d3 100644 --- a/packages/contracts/utils/types.ts +++ b/packages/contracts/utils/types.ts @@ -1,11 +1,29 @@ export type AragonPluginRepos = { - 'address-list-voting': string; - 'token-voting': string; - // prettier-ignore - 'admin': string; - // prettier-ignore - 'multisig': string; - [index: string]: string; + 'address-list-voting': { + address: string; + blockNumber: number | null; + transactionHash: string | null; + }; + 'token-voting': { + address: string; + blockNumber: number | null; + transactionHash: string | null; + }; + admin: { + address: string; + blockNumber: number | null; + transactionHash: string | null; + }; + multisig: { + address: string; + blockNumber: number | null; + transactionHash: string | null; + }; + [index: string]: { + address: string; + blockNumber: number | null; + transactionHash: string | null; + }; }; export type AragonVerifyEntry = {