Files
self/contracts/ignition/modules/deployNewHubAndUpgrade.ts
2025-02-23 00:16:37 +01:00

42 lines
1.4 KiB
TypeScript

import { buildModule } from "@nomicfoundation/hardhat-ignition/modules";
import { artifacts, ethers } from "hardhat";
import hre from "hardhat";
import fs from "fs";
import path from "path";
function getTestHubInitializeData() {
const hubArtifact = artifacts.readArtifactSync("testUpgradedIdentityVerificationHubImplV1");
return new ethers.Interface(hubArtifact.abi);
}
export default buildModule("DeployNewHubAndUpgrade", (m) => {
const networkName = hre.network.config.chainId;
const deployedAddressesPath = path.join(__dirname, `../deployments/chain-${networkName}/deployed_addresses.json`);
const deployedAddresses = JSON.parse(fs.readFileSync(deployedAddressesPath, "utf8"));
const hubProxyAddress = deployedAddresses["DeployHub#IdentityVerificationHub"];
if (!hubProxyAddress) {
throw new Error("Hub proxy address not found in deployed_addresses.json");
}
const newHubImpl = m.contract("testUpgradedIdentityVerificationHubImplV1");
const testHubInterface = getTestHubInitializeData();
const initializeData = testHubInterface.encodeFunctionData("initialize", [
true
]);
const hubProxy = m.contractAt("IdentityVerificationHubImplV1", hubProxyAddress);
m.call(hubProxy, "upgradeToAndCall", [
newHubImpl,
initializeData
]);
return {
newHubImpl,
hubProxy
};
});