@gooddollar/goodcontracts
Version:
GoodDollar Contracts
84 lines (77 loc) • 2.63 kB
text/typescript
import { ethers, upgrades, network } from "hardhat";
import { networkNames } from "@openzeppelin/upgrades-core";
import { getSettings, releaser } from "../../scripts/getMigrationSettings";
console.log({ networkNames, network: network.name, upgrade: process.env.UPGRADE });
const { name: networkName } = network;
networkNames[1] = networkName;
networkNames[122] = networkName;
networkNames[3] = networkName;
async function deploy() {
const {
daoAddresses,
modelAddresses,
upgradableAddresses,
founders
} = await getSettings(networkName);
const FStaking = await ethers.getContractFactory("FuseStakingV3");
const fstaking = await upgrades.deployProxy(FStaking, [], { kind: "transparent" });
const deployed = await fstaking.deployed();
console.log("FuseStakig deployed to:", fstaking.address);
releaser({ FuseStaking: fstaking.address }, networkName);
console.log("setting defaults...", {
gd: daoAddresses.GoodDollar,
ubi: modelAddresses.UBIScheme
});
await deployed.upgrade1(
daoAddresses.GoodDollar,
modelAddresses.UBIScheme,
"0x0000000000000000000000000000000000000000"
);
}
async function upgrade() {
console.log("Upgrading...");
const {
daoAddresses,
modelAddresses,
upgradableAddresses,
founders
} = await getSettings(networkName);
console.log({ daoAddresses, modelAddresses, upgradableAddresses, founders });
const FStakingV3 = await ethers.getContractFactory("FuseStakingV3");
const staking = await upgrades.upgradeProxy(
upgradableAddresses.FuseStaking,
FStakingV3
);
// staking.upgrade1(daoAddresses.GoodDollar, modelAddresses.UBIScheme);
console.log("Fusestaking upgraded", { staking: staking.address });
await staking.upgrade3();
}
async function upgradeByAvatar() {
const {
daoAddresses,
modelAddresses,
upgradableAddresses,
founders
} = await getSettings(networkName);
const FStakingV3 = await ethers.getContractFactory("FuseStakingV3");
const impl = await FStakingV3.deploy();
console.log("new impl at:", impl.address);
const upgradeScheme = await (
await ethers.getContractFactory("UpgradeImplScheme.sol")
).deploy(
daoAddresses.Avatar,
impl.address,
upgradableAddresses.FuseStaking,
"0x57179b2A8eB019157b0C3E761cdB26c82C982a3B",
"",
0
);
console.log("scheme at:", upgradeScheme.address);
}
async function main() {
const { upgradableAddresses } = await getSettings(networkName);
if (process.env.FORCE === "true" || upgradableAddresses.FuseStaking == null) {
return deploy();
} else return upgrade();
}
main().catch(e => console.log(e));