Skip to content

Commit

Permalink
chore: add override options to deployContract
Browse files Browse the repository at this point in the history
  • Loading branch information
naddison36 committed Sep 8, 2021
1 parent 9f1f160 commit 86edf21
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 8 deletions.
31 changes: 25 additions & 6 deletions tasks/deployLegacy.ts
Expand Up @@ -2,11 +2,11 @@
/* eslint-disable no-restricted-syntax */
import "ts-node/register"
import "tsconfig-paths/register"
import { subtask, task, types } from "hardhat/config"
import { task, types } from "hardhat/config"

import { BN, simpleToExactAmount } from "@utils/math"
import { DelayedProxyAdmin__factory } from "types"
import { Contract } from "@ethersproject/contracts"
import { Overrides, Contract } from "@ethersproject/contracts"
import { ONE_DAY } from "@utils/constants"
import { expect } from "chai"
import { BigNumberish, Signer } from "ethers"
Expand Down Expand Up @@ -110,11 +110,18 @@ const vaults: VaultData[] = [
]

task("LegacyVault.deploy", "Deploys a vault contract")
.addOptionalParam("gasPrice", "The max gas price in Gwei. maxGas = baseFee + maxPriority", undefined, types.int)
.addOptionalParam("speed", "Defender Relayer speed param: 'safeLow' | 'average' | 'fast' | 'fastest'", "fast", types.string)
.setAction(async (taskArgs, hre) => {
const signer = await getSigner(hre, taskArgs.speed)
const chain = getChain(hre)

const overrides: Overrides = taskArgs.gasPrice
? {
gasPrice: simpleToExactAmount(taskArgs.gasPrice, 9),
}
: {}

const governorAddress = resolveAddress("Governor", chain)
if (hre.network.name === "hardhat") {
// TODO use impersonate function instead of the following
Expand Down Expand Up @@ -147,7 +154,7 @@ task("LegacyVault.deploy", "Deploys a vault contract")
const vaultFactory = await hre.ethers.getContractFactory(
`contracts/legacy/v-${vault.underlyingTokenSymbol}.sol:${contractName}`,
)
vaultImpl = await deployContract(vaultFactory.connect(signer), `${vault.underlyingTokenSymbol} vault`)
vaultImpl = await deployContract(vaultFactory.connect(signer), `${vault.underlyingTokenSymbol} vault`, [], overrides)
} else if (vault.platformToken) {
const platformTokenAddress = resolveAddress(vault.platformToken, chain)
constructorArguments = [
Expand All @@ -162,11 +169,21 @@ task("LegacyVault.deploy", "Deploys a vault contract")
const vaultFactory = await hre.ethers.getContractFactory(
`contracts/legacy/v-${vault.underlyingTokenSymbol}.sol:${contractName}`,
)
vaultImpl = await deployContract(vaultFactory.connect(signer), `${vault.underlyingTokenSymbol} vault`, constructorArguments)
vaultImpl = await deployContract(
vaultFactory.connect(signer),
`${vault.underlyingTokenSymbol} vault`,
constructorArguments,
overrides,
)
} else {
constructorArguments = [nexusAddress, stakingTokenAddress, boostDirectorAddress, priceCoeff, boostCoeff, rewardTokenAddress]
const vaultFactory = await hre.ethers.getContractFactory(`contracts/legacy/v-mBTC.sol:${contractName}`)
vaultImpl = await deployContract(vaultFactory.connect(signer), `${vault.underlyingTokenSymbol} vault`, constructorArguments)
vaultImpl = await deployContract(
vaultFactory.connect(signer),
`${vault.underlyingTokenSymbol} vault`,
constructorArguments,
overrides,
)
}

if (hre.network.name === "hardhat") {
Expand All @@ -193,7 +210,9 @@ task("LegacyVault.deploy", "Deploys a vault contract")
}
}

await vaultVerification(hre, signer, chain)
if (hre.network.name === "hardhat") {
await vaultVerification(hre, signer, chain)
}
})

task("LegacyVault.check", "Checks the vaults post upgrade")
Expand Down
5 changes: 3 additions & 2 deletions tasks/utils/deploy-utils.ts
@@ -1,12 +1,13 @@
import { Contract, ContractFactory, ContractReceipt, ContractTransaction } from "ethers"
import { Contract, ContractFactory, ContractReceipt, ContractTransaction, Overrides } from "ethers"
import { formatUnits } from "@ethersproject/units"

export const deployContract = async <T extends Contract>(
contractFactory: ContractFactory,
contractName = "Contract",
contractorArgs: Array<unknown> = [],
overrides: Overrides = {},
): Promise<T> => {
const contract = (await contractFactory.deploy(...contractorArgs)) as T
const contract = (await contractFactory.deploy(...contractorArgs, overrides)) as T
console.log(
`Deployed ${contractName} contract with hash ${contract.deployTransaction.hash} from ${
contract.deployTransaction.from
Expand Down

0 comments on commit 86edf21

Please sign in to comment.