From c6fad49446341e57581f80b0bc307634fa827d55 Mon Sep 17 00:00:00 2001 From: Illia Likhoshva Date: Tue, 18 Jun 2024 18:22:57 +0300 Subject: [PATCH] Separate deployment of master sigs Move switch into method --- scripts/multisig/deploy_ecosysem_multisig.ts | 35 ++++++++++++++++++++ scripts/multisig/deploy_multisig.ts | 14 -------- src/contracts/contracts.ts | 33 ++++++++++-------- 3 files changed, 54 insertions(+), 28 deletions(-) create mode 100644 scripts/multisig/deploy_ecosysem_multisig.ts diff --git a/scripts/multisig/deploy_ecosysem_multisig.ts b/scripts/multisig/deploy_ecosysem_multisig.ts new file mode 100644 index 00000000..d0ad495a --- /dev/null +++ b/scripts/multisig/deploy_ecosysem_multisig.ts @@ -0,0 +1,35 @@ +import { ethers, network } from "hardhat"; +import { ContractNames } from "../../src"; +import { Andrii, AndriiTest, DimaTest, Igor, Kevin, Lang, Rory, SharedDev } from "../addresses"; +import { deploy } from "@airdao/deployments/deploying"; +import { MasterMultisig__factory } from "../../typechain-types"; + +export async function main() { + const [deployer] = await ethers.getSigners(); + + console.log("Deploing MasterMultisig for ECOSYSTEM..."); + if (network.name == "main") { + console.log("--- MAINNET DEPLOYMENT ---"); + await deploy({ + contractName: ContractNames.Ecosystem_MasterMultisig, + artifactName: "MasterMultisig", + deployArgs: [[Lang, Igor, Rory, Kevin, Andrii], [true, true, true, false, false], 51], + signer: deployer, + }); + } else { + console.log("Deploing MasterMultisig for ECOSYSTEM..."); + await deploy({ + contractName: ContractNames.Ecosystem_MasterMultisig, + artifactName: "MasterMultisig", + deployArgs: [[SharedDev, DimaTest, AndriiTest], [true, true, true], 51], + signer: deployer, + }); + } +} + +if (require.main === module) { + main().catch((error) => { + console.error(error); + process.exitCode = 1; + }); +} diff --git a/scripts/multisig/deploy_multisig.ts b/scripts/multisig/deploy_multisig.ts index 2cb8257c..1f0abba2 100644 --- a/scripts/multisig/deploy_multisig.ts +++ b/scripts/multisig/deploy_multisig.ts @@ -16,13 +16,6 @@ export async function main() { deployArgs: [[Lang, Igor, Rory, Kevin, Andrii], [true, true, true, false, false], 51], signer: deployer, }); - console.log("Deploing MasterMultisig for ECOSYSTEM..."); - await deploy({ - contractName: ContractNames.Ecosystem_MasterMultisig, - artifactName: "MasterMultisig", - deployArgs: [[Lang, Igor, Rory, Kevin, Andrii], [true, true, true, false, false], 51], - signer: deployer, - }); } else { await deploy({ contractName: ContractNames.MasterMultisig, @@ -30,13 +23,6 @@ export async function main() { deployArgs: [[SharedDev, DimaTest, AndriiTest], [true, true, true], 51], signer: deployer, }); - console.log("Deploing MasterMultisig for ECOSYSTEM..."); - await deploy({ - contractName: ContractNames.Ecosystem_MasterMultisig, - artifactName: "MasterMultisig", - deployArgs: [[SharedDev, DimaTest, AndriiTest], [true, true, true], 51], - signer: deployer, - }); } } diff --git a/src/contracts/contracts.ts b/src/contracts/contracts.ts index fe6b3dcf..3935acef 100644 --- a/src/contracts/contracts.ts +++ b/src/contracts/contracts.ts @@ -1,6 +1,6 @@ import { Contract, ethers, Signer } from "ethers"; -import { ContractNames, getMultisigNames, MultisigVersions } from "./names"; +import { ContractNames, MultisigVersions } from "./names"; type Deployment = { address: string; @@ -9,6 +9,22 @@ type Deployment = { fullyQualifiedName: string; }; +function allowedMultisigNames(multisigVersion: MultisigVersions) { + let allowedNames: ContractNames[] = []; + switch (multisigVersion) { + case MultisigVersions.ecosystem: + allowedNames = Object.values(ContractNames).filter((name) => name.startsWith("Ecosystem_")); + break; + case MultisigVersions.common: + allowedNames = Object.values(ContractNames).filter((name) => !name.startsWith("Ecosystem_")); + break; + default: + allowedNames = Object.values(ContractNames).filter((name) => !name.startsWith("Ecosystem_")); + break; + } + return allowedNames; +} + export class Contracts { private contracts: { [contractName: string]: Contract }; private nameByAddress: { [address: string]: ContractNames }; @@ -71,7 +87,7 @@ export class Contracts { ) { // eslint-disable-next-line @typescript-eslint/no-var-requires const deployments = require(`../../deployments/${chainId}.json`); - const versionNames = getMultisigNames(multisigVersion); + const versionNames = allowedMultisigNames(multisigVersion); if (!versionNames.includes(contractName)) return undefined; return { address: deployments[contractName].address, abi: deployments[contractName].abi }; } @@ -85,18 +101,7 @@ export function loadAllDeploymentsFromFile( // eslint-disable-next-line @typescript-eslint/no-var-requires const deployments = require(`../../deployments/${chainId}.json`); const result: any = {}; - let allowedNames: ContractNames[] = []; - switch (multisigVersion) { - case MultisigVersions.ecosystem: - allowedNames = Object.values(ContractNames).filter((name) => name.startsWith("Ecosystem_")); - break; - case MultisigVersions.common: - allowedNames = Object.values(ContractNames).filter((name) => !name.startsWith("Ecosystem_")); - break; - default: - allowedNames = Object.values(ContractNames).filter((name) => !name.startsWith("Ecosystem_")); - break; - }; + const allowedNames = allowedMultisigNames(multisigVersion); const filteredNames = Object.keys(deployments).filter((name) => allowedNames.includes(name as ContractNames)); for (const name of filteredNames) { const deployment = deployments[name] as Deployment;