-
Notifications
You must be signed in to change notification settings - Fork 83
/
Copy pathdeployEmissionsController.ts
147 lines (121 loc) · 7.86 KB
/
deployEmissionsController.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
import "ts-node/register"
import "tsconfig-paths/register"
import { task, types } from "hardhat/config"
import { MockRootChainManager__factory } from "types/generated"
import { simpleToExactAmount } from "@utils/math"
import { getSigner } from "./utils/signerFactory"
import {
deployBasicForwarder,
deployBridgeForwarder,
deployVotiumBribeForwarder,
deployEmissionsController,
deployL2BridgeRecipients,
deployL2EmissionsController,
deployRevenueBuyBack,
deploySplitRevenueBuyBack,
deployBalRewardsForwarder,
MCCP24_CONFIG,
} from "./utils/emissions-utils"
import { getChain, resolveAddress } from "./utils/networkAddressFactory"
import { deployContract } from "./utils/deploy-utils"
import { Chain } from "./utils/tokens"
task("deploy-emissions-polly", "Deploys L2EmissionsController and L2 Bridge Recipients for Polygon mUSD Vault and FRAX Farm")
.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 streamerAddress = resolveAddress("BpMTAStreamer", chain)
const l2EmissionsController = await deployL2EmissionsController(signer, hre)
console.log(`Set EmissionsController contract name in networkAddressFactory to ${l2EmissionsController.address}`)
const pmUSDbridgeRecipient = await deployL2BridgeRecipients(signer, hre, l2EmissionsController.address)
console.log(`Set PmUSD bridgeRecipient to ${pmUSDbridgeRecipient.address}`)
const pBALridgeRecipient = await deployL2BridgeRecipients(signer, hre, l2EmissionsController.address)
console.log(`Set PBAL bridgeRecipient to ${pBALridgeRecipient.address}`)
const forwarder = await deployBalRewardsForwarder(signer, l2EmissionsController.address, streamerAddress, hre)
console.log(`Invoke EmissionsController.addRecipient(${pBALridgeRecipient.address},${forwarder.address})`)
})
task("deploy-emissions")
.addOptionalParam("deployProxy", "Whether deploy proxy or implementation only.", true, types.boolean)
.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 emissionsController = await deployEmissionsController(signer, hre, taskArgs.deployProxy, MCCP24_CONFIG)
console.log(`Set EmissionsController in the networkAddressFactory to ${emissionsController.address}`)
})
task("deploy-bridge-forwarder", "Deploys a BridgeForwarder contract on mainnet for Polygon dials.")
.addParam(
"token",
"Token on the Polygon network that is configured with `bridgeRecipient`. eg mUSD, FRAX, BAL.",
undefined,
types.string,
)
.addOptionalParam("useProxy", "Deploy with proxy", true, types.boolean)
.addOptionalParam("speed", "Defender Relayer speed param: 'safeLow' | 'average' | 'fast' | 'fastest'", "fast", types.string)
.setAction(async (taskArgs, hre) => {
const chain = getChain(hre)
const signer = await getSigner(hre, taskArgs.speed)
const l2Chain = chain === Chain.mainnet ? Chain.polygon : Chain.mumbai
const bridgeRecipientAddress = resolveAddress(taskArgs.token, l2Chain, "bridgeRecipient")
await deployBridgeForwarder(signer, hre, bridgeRecipientAddress, taskArgs.useProxy)
})
task("deploy-basic-forwarder", "Deploys a basic rewards forwarder from the emissions controller.")
.addParam("recipient", "Contract or EOA that will receive the MTA rewards.", undefined, types.string)
.addOptionalParam("owner", "Contract owner to transfer ownership to after deployment.", undefined, types.string)
.addOptionalParam("speed", "Defender Relayer speed param: 'safeLow' | 'average' | 'fast' | 'fastest'", "fast", types.string)
.setAction(async (taskArgs, hre) => {
const chain = getChain(hre)
const signer = await getSigner(hre, taskArgs.speed)
const emissionsControllerAddress = resolveAddress("EmissionsController", chain)
await deployBasicForwarder(signer, emissionsControllerAddress, taskArgs.recipient, hre, taskArgs.owner)
})
task("deploy-votium-forwarder", "Deploys a Votium forwarder from the emissions controller.")
.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 votiumBribeForwarder = await deployVotiumBribeForwarder(signer, hre)
console.log(`Set VotiumForwarder contract name in networkAddressFactory to ${votiumBribeForwarder.address}`)
})
task("deploy-revenue-buy-back")
.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 revenueRecipient = await deployRevenueBuyBack(signer, hre)
console.log(`Governor call SavingsManager.setRevenueRecipient to ${revenueRecipient.address} for mUSD and mBTC`)
console.log(`Governor call setMassetConfig for mUSD and mBTC`)
})
task("deploy-split-revenue-buy-back")
.addOptionalParam("fee", "Portion of revenue to be sent to treasury as a percentage.", 50, 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 treasuryFee = simpleToExactAmount(taskArgs.fee, 16)
const revenueRecipient = await deploySplitRevenueBuyBack(signer, hre, treasuryFee)
console.log(`Governor call RevenueSplitBuyBack.mapBasset for mUSD and mBTC`)
console.log(`Governor call SavingsManager.setRevenueRecipient to ${revenueRecipient.address} for mUSD and mBTC`)
})
task("deploy-mock-root-chain-manager", "Deploys a mocked Polygon PoS Bridge")
.addOptionalParam("speed", "Defender Relayer speed param: 'safeLow' | 'average' | 'fast' | 'fastest'", "fast", types.string)
.setAction(async (taskArgs, hre) => {
const signer = await getSigner(hre, taskArgs.speed)
await deployContract(new MockRootChainManager__factory(signer), "MockRootChainManager")
})
task("deploy-bal-reward-forwarder", "Deploys a basic rewards forwarder from the emissions controller.")
.addParam("recipient", "Contract or EOA that will receive the MTA rewards.", undefined, types.string)
.addOptionalParam("owner", "Contract owner to transfer ownership to after deployment.", undefined, types.string)
.addOptionalParam("speed", "Defender Relayer speed param: 'safeLow' | 'average' | 'fast' | 'fastest'", "fast", types.string)
.setAction(async (taskArgs, hre) => {
const chain = getChain(hre)
const signer = await getSigner(hre, taskArgs.speed)
const emissionsControllerAddress = resolveAddress("EmissionsController", chain)
await deployBalRewardsForwarder(signer, emissionsControllerAddress, taskArgs.recipient, hre, taskArgs.owner)
})
task("deploy-bridge-recipient", "Deploys L2 Bridge Recipients for Polygon")
.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 emissionsControllerAddress = resolveAddress("EmissionsController", chain)
const bridgeRecipient = await deployL2BridgeRecipients(signer, hre, emissionsControllerAddress)
console.log(`New bridgeRecipient to ${bridgeRecipient.address}`)
})
module.exports = {}