tenderly-wizard-v6
Version:
A tool for managing virtual testnets using Tenderly
86 lines (74 loc) • 2.42 kB
text/typescript
// @ts-ignore
import { ethers, network } from "hardhat";
import VirtualTestNet from "./virtual-test-net";
import { ChainId } from "zodiac-roles-sdk";
import { deployAccessControlSystemV1 } from "./deploy-roles-v1";
import { deployAccessControlSystemV2 } from "./deploy-roles-v2";
import { RolesVersion } from "../utils/types";
import { setGas } from "../utils/util";
import config from "../env-config";
export async function deploySafesOnVnet(
chainId: ChainId,
rolesVersion: RolesVersion
) {
await setGas();
let contractsAddr;
let deployedSnapshot;
let base: any;
const [
caller,
manager,
dummyOwnerOne,
dummyOwnerTwo,
dummyOwnerThree,
security,
] = await ethers.getSigners();
if (rolesVersion === "v1") {
base = await deployAccessControlSystemV1(chainId, {
proxied: true,
managerEOAs: [manager.address],
securityEOAs: [security.address],
invSafeThreshold: 1,
acSafeThreshold: 1,
sysAdminAddresses: [
dummyOwnerOne.address,
dummyOwnerTwo.address,
dummyOwnerThree.address,
],
});
} else {
base = await deployAccessControlSystemV2(chainId, {
proxied: true,
managerEOAs: [manager.address],
securityEOAs: [security.address],
invSafeThreshold: 1,
acSafeThreshold: 1,
sysAdminAddresses: [
dummyOwnerOne.address,
dummyOwnerTwo.address,
dummyOwnerThree.address,
],
});
}
deployedSnapshot = await network.provider.send("evm_snapshot", []);
console.log("deployedSnapshot: ", deployedSnapshot);
// add to .env
VirtualTestNet.addToEnvFile("TENDERLY_SNAPSHOT", deployedSnapshot);
VirtualTestNet.addToEnvFile("ACCESS_CONTROL_SAFE_ADDRESS", base?.acSafe);
VirtualTestNet.addToEnvFile("INVESTMENT_SAFE_ADDRESS", base?.invSafe);
VirtualTestNet.addToEnvFile("INVESTMENT_ROLES_ADDRESS", base?.invRoles);
VirtualTestNet.addToEnvFile("ACCESS_CONTROL_ROLES_ADDRESS", base?.acRoles);
contractsAddr = base;
return base;
}
async function main() {
const { ROLES_VERSION: rolesVersion } = config;
console.log(`Deploying with roles version: ${rolesVersion}`);
// @note tenderly fork ID defaults to 1 if not set in .env
const chainId = config.TENDERLY_FORK_ID;
await deploySafesOnVnet(chainId as ChainId, rolesVersion as RolesVersion);
}
main().catch(error => {
console.error(error);
process.exitCode = 1;
});