Skip to content

Commit

Permalink
choire: updated hh deploy tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
naddison36 authored and alsco77 committed Sep 3, 2021
1 parent 61630e1 commit 3be1a8e
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 34 deletions.
2 changes: 1 addition & 1 deletion tasks/deployFeeders.ts
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ task("deployVault", "Deploy Feeder Pool with boosted dual vault")
dualRewardToken: dualRewardToken?.address,
}

await deployVault(signer, vaultData, chain)
await deployVault(hre, vaultData)
})

task("FeederWrapper-deploy", "Deploy a new FeederWrapper").setAction(async (taskArgs, hre) => {
Expand Down
5 changes: 3 additions & 2 deletions tasks/deployLegacy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { BigNumberish, Signer } from "ethers"
import { getChain, getChainAddress, resolveAddress } from "./utils/networkAddressFactory"
import { getSigner } from "./utils/signerFactory"
import { Chain, logTxDetails } from "./utils"
import { verifyEtherscan } from "./utils/etherscan"

interface UserBalance {
user: string
Expand Down Expand Up @@ -49,7 +50,7 @@ const vaults: VaultData[] = [
symbol: "v-fPmUSD/GUSD",
userBal: {
user: "0xf794CF2d946BC6eE6eD905F47db211EBd451Aa5F",
balance: simpleToExactAmount(1500000),
balance: simpleToExactAmount(425000),
},
},
{
Expand Down Expand Up @@ -177,7 +178,7 @@ task("LegacyVault.deploy", "Deploys a vault contract")
const tx2 = await proxyAdmin.acceptUpgradeRequest(vaultProxyAddress)
await logTxDetails(tx2, `${vault.underlyingTokenSymbol} acceptUpgradeRequest`)
} else {
await hre.run("verify:verify", {
await verifyEtherscan(hre, {
address: vaultImpl.address,
constructorArguments,
})
Expand Down
30 changes: 15 additions & 15 deletions tasks/deployRewards.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { ONE_WEEK } from "@utils/constants"

import { Contract } from "@ethersproject/contracts"
import { formatBytes32String } from "ethers/lib/utils"
import { simpleToExactAmount } from "@utils/math"
import { params } from "./taskUtils"
import {
AssetProxy__factory,
Expand Down Expand Up @@ -34,6 +35,12 @@ task("getBytecode-BoostedDualVault").setAction(async () => {

task("BoostDirector.deploy", "Deploys a new BoostDirector")
.addOptionalParam("stakingToken", "Symbol of the staking token", "MTA", types.string)
.addOptionalParam(
"vaults",
"Comma separated list of vault underlying token symbols, eg RmUSD,RmBTC",
"mUSD,mBTC,GUSD,BUSD,alUSD,HBTC,TBTC",
types.string,
)
.addOptionalParam("speed", "Defender Relayer speed param: 'safeLow' | 'average' | 'fast' | 'fastest'", "fast", types.string)
.setAction(async (taskArgs, hre) => {
const signer = await getSigner(hre, taskArgs.speed)
Expand All @@ -47,18 +54,12 @@ task("BoostDirector.deploy", "Deploys a new BoostDirector")
stakingToken.address,
])

const tx = await boostDirector.initialize([
resolveAddress("mUSD", chain, "vault"),
resolveAddress("mBTC", chain, "vault"),
resolveAddress("GUSD", chain, "vault"),
resolveAddress("BUSD", chain, "vault"),
resolveAddress("HBTC", chain, "vault"),
resolveAddress("TBTC", chain, "vault"),
resolveAddress("alUSD", chain, "vault"),
])
const vaultSymbols = taskArgs.vaults.split(",")
const vaultAddresses = vaultSymbols.map((symbol) => resolveAddress(symbol, chain, "vault"))
const tx = await boostDirector.initialize(vaultAddresses)
await logTxDetails(tx, "initialize BoostDirector")

await hre.run("verify:verify", {
await verifyEtherscan(hre, {
address: boostDirector.address,
constructorArguments: [nexusAddress, stakingToken.address],
})
Expand All @@ -68,24 +69,23 @@ task("Vault.deploy", "Deploys a vault contract")
.addParam("boosted", "True if a mainnet boosted vault", true, types.boolean)
.addParam("vaultName", "Vault name", undefined, types.string, false)
.addParam("vaultSymbol", "Vault symbol", undefined, types.string, false)
.addOptionalParam("stakingToken", "Symbol of staking token. eg MTA, BAL, RMTA", "MTA", types.string)
.addOptionalParam("stakingToken", "Symbol of staking token. eg MTA, BAL, RMTA, mUSD, RmUSD", "MTA", types.string)
.addOptionalParam("rewardsToken", "Symbol of rewards token. eg MTA or RMTA for Ropsten", "MTA", types.string)
.addParam("priceCoefficient", "Price coefficient", undefined, types.string, false)
.addOptionalParam("priceCoeff", "Price coefficient without 18 decimal places. eg 1 or 4800", 1, 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 vaultData: VaultData = {
boosted: taskArgs.boosted,
name: taskArgs.vaultName,
symbol: taskArgs.vaultSymbol,
priceCoeff: taskArgs.priceCoefficient,
priceCoeff: simpleToExactAmount(taskArgs.priceCoeff),
stakingToken: resolveAddress(taskArgs.stakingToken, chain),
rewardToken: resolveAddress(taskArgs.rewardsToken, chain),
}

await deployVault(signer, vaultData, chain)
await deployVault(hre, vaultData)
})

task("StakedToken.deploy", "Deploys a Staked Token behind a proxy")
Expand Down
45 changes: 33 additions & 12 deletions tasks/utils/feederUtils.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/* eslint-disable no-restricted-syntax */
/* eslint-disable no-await-in-loop */
import { DEAD_ADDRESS, ZERO_ADDRESS } from "@utils/constants"
import { BN } from "@utils/math"
import { BN, simpleToExactAmount } from "@utils/math"
import { Signer } from "ethers"
import { formatEther } from "ethers/lib/utils"
import {
Expand All @@ -23,7 +23,9 @@ import {
StakingRewards__factory,
} from "types/generated"
import { deployContract, logTxDetails } from "./deploy-utils"
import { getChainAddress } from "./networkAddressFactory"
import { verifyEtherscan } from "./etherscan"
import { getChain, getChainAddress } from "./networkAddressFactory"
import { getSigner } from "./signerFactory"
import { Chain, Token } from "./tokens"

interface Config {
Expand Down Expand Up @@ -130,64 +132,83 @@ export const deployFeederPool = async (signer: Signer, feederData: FeederData, c
}

export const deployVault = async (
signer: Signer,
hre: any,
vaultParams: VaultData,
chain = Chain.mainnet,
): Promise<BoostedDualVault | BoostedVault | StakingRewardsWithPlatformToken | StakingRewards> => {
const signer = await getSigner(hre)
const chain = getChain(hre)

const vaultData: VaultData = {
priceCoeff: BN.from(1),
priceCoeff: simpleToExactAmount(1),
...vaultParams,
}
const rewardsDistributorAddress = getChainAddress("RewardsDistributor", chain)
const boostCoeff = 48
let vault: BoostedDualVault | BoostedVault | StakingRewardsWithPlatformToken | StakingRewards
let constructorArguments: any[]
if (vaultData.boosted) {
if (vaultData.dualRewardToken) {
vault = await deployContract<BoostedDualVault>(new BoostedDualVault__factory(signer), "BoostedDualVault", [
constructorArguments = [
getChainAddress("Nexus", chain),
vaultData.stakingToken,
getChainAddress("BoostDirector", chain),
vaultData.priceCoeff,
boostCoeff,
vaultData.rewardToken,
vaultData.dualRewardToken,
])
]
vault = await deployContract<BoostedDualVault>(new BoostedDualVault__factory(signer), "BoostedDualVault", constructorArguments)
} else {
vault = await deployContract<BoostedVault>(new BoostedVault__factory(signer), "BoostedVault", [
constructorArguments = [
getChainAddress("Nexus", chain),
vaultData.stakingToken,
getChainAddress("BoostDirector", chain),
vaultData.priceCoeff,
boostCoeff,
vaultData.rewardToken,
])
]
vault = await deployContract<BoostedVault>(new BoostedVault__factory(signer), "BoostedVault", constructorArguments)
}
} else if (vaultData.dualRewardToken) {
constructorArguments = [getChainAddress("Nexus", chain), vaultData.stakingToken, vaultData.rewardToken, vaultData.dualRewardToken]
vault = await deployContract<StakingRewardsWithPlatformToken>(
new StakingRewardsWithPlatformToken__factory(signer),
"StakingRewardsWithPlatformToken",
[getChainAddress("Nexus", chain), vaultData.stakingToken, vaultData.rewardToken, vaultData.dualRewardToken],
constructorArguments,
)
} else {
vault = await deployContract<StakingRewards>(new StakingRewards__factory(signer), "StakingRewards", [
constructorArguments = [
getChainAddress("Nexus", chain),
vaultData.stakingToken,
getChainAddress("BoostDirector", chain),
vaultData.priceCoeff,
boostCoeff,
vaultData.rewardToken,
])
]
vault = await deployContract<StakingRewards>(new StakingRewards__factory(signer), "StakingRewards", constructorArguments)
}

await verifyEtherscan(hre, {
address: vault.address,
constructorArguments,
})

const initializeData = vault.interface.encodeFunctionData("initialize", [rewardsDistributorAddress, vaultData.name, vaultData.symbol])
const proxyAdminAddress = getChainAddress("DelayedProxyAdmin", chain)

// Proxy
const proxy = await deployContract(new AssetProxy__factory(signer), "AssetProxy for vault", [
vault.address,
proxyAdminAddress,
initializeData,
])

await verifyEtherscan(hre, {
address: proxy.address,
contract: "contracts/upgradability/Proxies.sol:AssetProxy",
constructorArguments: [vault.address, proxyAdminAddress, initializeData],
})

return vault.attach(proxy.address)
}

Expand Down
8 changes: 4 additions & 4 deletions tasks/utils/networkAddressFactory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -198,15 +198,15 @@ export const getChainAddress = (contractName: ContractNames, chain: Chain): stri
case "DelayedProxyAdmin":
return "0x2d369F83E9DC764a759a74e87a9Bc542a2BbfdF0"
case "BoostDirector":
return "0x8D084F66e8594C91461E4E0B85433feFf1CA8AA9"
return "0x363FDC050722e74C5549C11B7d2c9d68FB9D7411"
case "SignatureVerifier":
return "0x3Bf48139e7C714ADA37C97Cd29e0F04D9673494a"
case "QuestManager":
return "0x3e8aa84E846EEb89392E99d44cD51acA668ae7BA"
case "StakedTokenMTA":
return "0xf98c297368c3e341f7f6dC9eCE8D3A33CBE62B6A"
// case "StakedTokenBPT":
// return "0x4A869C278b7f397734F0dAFd4E5EEE1A1543Cb80"
return "0xa5583F67311231A2127D2C6f9a15aB112222C080"
case "StakedTokenBPT":
return "0x2813Baaf158F53F8251a369c296c7934cb1fbAF0"
case "PlatformTokenVendorFactory":
return "0x91fdDea51aD5A4e050c2A34e209284344206aF8e"
case "BalancerVault":
Expand Down
11 changes: 11 additions & 0 deletions tasks/utils/tokens.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ export const MmUSD: Token = {
decimals: 18,
quantityFormatter: "USD",
}
// Ropsten
export const RmUSD: Token = {
symbol: "RmUSD",
address: "0x4E1000616990D83e56f4b5fC6CC8602DcfD20459",
Expand All @@ -91,6 +92,15 @@ export const RmUSD: Token = {
savings: "0x5b7f01dAe6BCE656c9cA4175Eb3E406ADC6c7957",
vault: "0xDEFc008BAC1e38F13F081DDD20acf89985DFa7C8",
}
export const RmBTC: Token = {
symbol: "RmBTC",
address: "0x4A677A48A790f26eac4c97f495E537558Abf6A79",
chain: Chain.ropsten,
decimals: 18,
quantityFormatter: "BTC",
savings: "0xBfe31D984d688628d06Ae2Da1D640Cf5D9e242A5",
vault: "0x7799BEEAf20120CC78f5cF2EB9C85e395B43bF4D",
}

// USD Main Pool Assets on Mainnet
export const sUSD: Token = {
Expand Down Expand Up @@ -414,6 +424,7 @@ export const tokens = [
PDAI,
PWMATIC,
RmUSD,
RmBTC,
BAL,
RBAL,
]

0 comments on commit 3be1a8e

Please sign in to comment.