UNPKG

@vechain/vebetterdao-contracts

Version:

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

70 lines (69 loc) 3.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const config_1 = require("@repo/config"); const helpers_1 = require("../../../helpers"); const contracts_1 = require("@repo/config/contracts"); const hardhat_1 = require("hardhat"); const x2EarnLibraries_1 = require("../../../libraries/x2EarnLibraries"); async function main() { if (!process.env.NEXT_PUBLIC_APP_ENV) { throw new Error("Missing NEXT_PUBLIC_APP_ENV"); } const config = (0, config_1.getConfig)(process.env.NEXT_PUBLIC_APP_ENV); const contractsConfig = (0, contracts_1.getContractsConfig)(process.env.NEXT_PUBLIC_APP_ENV); const deployer = (await hardhat_1.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 (0, x2EarnLibraries_1.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 hardhat_1.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 (0, helpers_1.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 (0, helpers_1.saveLibrariesToFile)(libraries); process.exit(0); } // Execute the main function main();