@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
JavaScript
;
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();