UNPKG

@vechain/vebetterdao-contracts

Version:

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

47 lines (46 loc) 2.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const config_1 = require("@repo/config"); const hardhat_1 = require("hardhat"); const navigatorRegistryLibraries_1 = require("../../../libraries/navigatorRegistryLibraries"); const helpers_1 = require("../../../helpers"); 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 deployer = (await hardhat_1.ethers.getSigners())[0]; const proxyAddress = config.navigatorRegistryContractAddress; console.log(`Upgrading NavigatorRegistry on network: ${config.network.name} (env: ${config.environment}) with account: ${deployer.address}`); console.log(`Proxy address: ${proxyAddress}`); // Check current version const current = (await hardhat_1.ethers.getContractAt("NavigatorRegistry", proxyAddress)); const currentVersion = await current.version(); console.log(`Current version: ${currentVersion}`); // Deploy libraries console.log("Deploying NavigatorRegistry libraries..."); const libs = await (0, navigatorRegistryLibraries_1.navigatorRegistryLibraries)(true); const libraries = { "contracts/navigator/libraries/NavigatorStakingUtils.sol:NavigatorStakingUtils": await libs.NavigatorStakingUtils.getAddress(), "contracts/navigator/libraries/NavigatorDelegationUtils.sol:NavigatorDelegationUtils": await libs.NavigatorDelegationUtils.getAddress(), "contracts/navigator/libraries/NavigatorVotingUtils.sol:NavigatorVotingUtils": await libs.NavigatorVotingUtils.getAddress(), "contracts/navigator/libraries/NavigatorFeeUtils.sol:NavigatorFeeUtils": await libs.NavigatorFeeUtils.getAddress(), "contracts/navigator/libraries/NavigatorSlashingUtils.sol:NavigatorSlashingUtils": await libs.NavigatorSlashingUtils.getAddress(), "contracts/navigator/libraries/NavigatorLifecycleUtils.sol:NavigatorLifecycleUtils": await libs.NavigatorLifecycleUtils.getAddress(), }; console.log("Libraries deployed"); // Upgrade without reinitializer — no storage changes, only library logic change const upgraded = (await (0, helpers_1.upgradeProxy)("NavigatorRegistry", "NavigatorRegistry", proxyAddress, [], { libraries, logOutput: true, })); const newVersion = await upgraded.version(); console.log(`New version: ${newVersion} (expected same as before: ${currentVersion})`); // Sanity check: verify the new FLAG_BELOW_MIN_STAKE constant is accessible // (it's a library constant, so we just verify the contract is functional) const minStake = await upgraded.getMinStake(); console.log(`MinStake: ${hardhat_1.ethers.formatEther(minStake)} B3TR`); console.log("Upgrade completed successfully — FLAG_BELOW_MIN_STAKE slashing is now active"); process.exit(0); } main();