UNPKG

@gooddollar/goodprotocol

Version:
60 lines (47 loc) 1.78 kB
import { network, ethers, upgrades, run } from "hardhat"; import { Contract } from "ethers"; import { getImplementationAddress } from "@openzeppelin/upgrades-core"; import { deployDeterministic, printDeploy, verifyContract } from "./helpers"; import releaser from "../../scripts/releaser"; import ProtocolSettings from "../../releases/deploy-settings.json"; import dao from "../../releases/deployment.json"; const INITIAL_CAP = 100000000000; //1B G$s const { name } = network; export const deployWrapper = async (defaultAdmin = null) => { let release: { [key: string]: any } = dao[network.name]; let [root, ...signers] = await ethers.getSigners(); //generic call permissions let schemeMock = root; console.log("got signers:", { network, root: root.address, schemeMock: schemeMock.address, balance: await ethers.provider.getBalance(root.address).then(_ => _.toString()) }); console.log("MintBurnWrapper deploy params:", [ release.GoodDollar, defaultAdmin || release.GuardiansSafe, release.NameService ]); const Wrapper = (await deployDeterministic( { name: "GoodDollarMintBurnWrapper", salt: "MintBurnWrapper", isUpgradeable: true }, [defaultAdmin || release.GuardiansSafe, release.NameService] ).then(printDeploy)) as Contract; release = { GoodDollarMintBurnWrapper: Wrapper.address }; await releaser(release, network.name, "deployment", false); const impl = await getImplementationAddress(ethers.provider, Wrapper.address); await verifyContract(impl, "GoodDollarMintBurnWrapper", network.name); return Wrapper; }; export const main = async (networkName = name) => { await deployWrapper().catch(console.log); }; if (process.argv[1].includes("multichainWrapper")) { main(); }