UNPKG

@vechain/vebetterdao-contracts

Version:

Open-source repository that houses the smart contracts powering the decentralized VeBetterDAO on the VeChain Thor blockchain.

68 lines (67 loc) 3.01 kB
import { getConfig } from "@repo/config"; import { saveLibrariesToFile, upgradeProxy } from "../../../helpers"; import { getContractsConfig } from "@repo/config/contracts"; import { ethers } from "hardhat"; import { x2EarnLibraries } from "../../../libraries/x2EarnLibraries"; async function main() { if (!process.env.NEXT_PUBLIC_APP_ENV) { throw new Error("Missing NEXT_PUBLIC_APP_ENV"); } const config = getConfig(process.env.NEXT_PUBLIC_APP_ENV); const contractsConfig = getContractsConfig(process.env.NEXT_PUBLIC_APP_ENV); const deployer = (await ethers.getSigners())[0]; console.log(`Deploying X2EarnApps libraries on network: ${config.network.name} (env: ${config.environment}) with account: ${deployer.address}`); const { AdministrationUtils, EndorsementUtils, VoteEligibilityUtils } = await x2EarnLibraries({ logOutput: true, latestVersionOnly: true, }); const libraries = { X2EarnApps: { AdministrationUtils: await AdministrationUtils.getAddress(), EndorsementUtils: await EndorsementUtils.getAddress(), VoteEligibilityUtils: await VoteEligibilityUtils.getAddress(), }, }; console.log("Libraries deployed"); console.log("Libraries", libraries); console.log(`Upgrading X2EarnApps contract at address: ${config.x2EarnAppsContractAddress} on network: ${config.network.name}`); // Check if the node management contract is deployed if (!config.nodeManagementContractAddress) { console.log("NodeManagement contract not deployed, please deploy it first"); process.exit(1); } const nodeManagementContract = await ethers.getContractAt("NodeManagement", config.nodeManagementContractAddress); try { await nodeManagementContract.version(); } catch (e) { console.log("NodeManagement contract is not deployed"); console.log("Please deploy the NodeManagement contract first"); process.exit(1); } const x2EarnAppsV2 = (await upgradeProxy("X2EarnAppsV1", "X2EarnApps", config.x2EarnAppsContractAddress, [ contractsConfig.XAPP_GRACE_PERIOD, config.nodeManagementContractAddress, config.veBetterPassportContractAddress, config.x2EarnCreatorContractAddress, ], { version: 2, libraries: { AdministrationUtils: await AdministrationUtils.getAddress(), EndorsementUtils: await EndorsementUtils.getAddress(), VoteEligibilityUtils: await VoteEligibilityUtils.getAddress(), }, })); console.log(`X2EarnApps upgraded`); // check that upgrade was successful const version = await x2EarnAppsV2.version(); console.log(`New X2EarnApps version: ${version}`); if (parseInt(version) !== 2) { throw new Error(`X2EarnApps version is not 2: ${version}`); } console.log("Execution completed"); await saveLibrariesToFile(libraries); process.exit(0); } // Execute the main function main();