Skip to content

Commit de4c762

Browse files
committed
deployment script
1 parent f9fc158 commit de4c762

File tree

3 files changed

+61
-25
lines changed

3 files changed

+61
-25
lines changed

README.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,14 @@ yarn test
3838

3939
## Testnets
4040

41-
There is a testnet deployment on Rinkeby. It rebases hourly using real market data.
42-
43-
- ERC-20 Token: [0x027dbcA046ca156De9622cD1e2D907d375e53aa7](https://rinkeby.etherscan.io/token/0x027dbcA046ca156De9622cD1e2D907d375e53aa7)
44-
- Supply Policy: [0x1D2771AFC894107c4edc072e3bd15Cb7F1BCC007](https://rinkeby.etherscan.io/address/0x1D2771AFC894107c4edc072e3bd15Cb7F1BCC007)
45-
- Orchestrator: [0xF473604Be74A69a6bB4ebED33A91a291f6C5b5DE](https://rinkeby.etherscan.io/address/0xF473604Be74A69a6bB4ebED33A91a291f6C5b5DE)
46-
- Market Oracle: [0x47fB203e1d75FB2c518Cd56f3a8094D22A46aF83](https://rinkeby.etherscan.io/address/0x47fB203e1d75FB2c518Cd56f3a8094D22A46aF83)
47-
- CPI Oracle: [0xDB021b1B247fe2F1fa57e0A87C748Cc1E321F07F](https://rinkeby.etherscan.io/address/0xDB021b1B247fe2F1fa57e0A87C748Cc1E321F07F)
41+
There is a testnet deployment on Kovan. It rebases hourly using real market data.
42+
43+
- ERC-20 Token: [0x3E0437898a5667a4769B1Ca5A34aAB1ae7E81377](https://kovan.etherscan.io/token/0x3E0437898a5667a4769B1Ca5A34aAB1ae7E81377)
44+
- Supply Policy: [0xBB4617d26E704Ac0568E1cbf5232990a8b7846A4](https://kovan.etherscan.io/address/0xBB4617d26E704Ac0568E1cbf5232990a8b7846A4)
45+
- Orchestrator: [0xdAcA62767840febA20Ae103d8B5BF923517FA3b9](https://kovan.etherscan.io/address/0xdAcA62767840febA20Ae103d8B5BF923517FA3b9)
46+
- Market Oracle: [0xFC344AF21d647f4244B5F098203A178BF26c51Dc](https://kovan.etherscan.io/address/0xFC344AF21d647f4244B5F098203A178BF26c51Dc)
47+
- CPI Oracle: [0xCedc17B394051d0E222797588f3e5ECe5023FB4A](https://kovan.etherscan.io/address/0xCedc17B394051d0E222797588f3e5ECe5023FB4A)
48+
- WAMPL: [0x33e24a1902620BeFB88D40714EF980Cd8653234e](https://kovan.etherscan.io/address/0x33e24a1902620BeFB88D40714EF980Cd8653234e)
4849

4950
## Contribute
5051

hardhat.config.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { HardhatUserConfig } from 'hardhat/config'
2+
import { Wallet } from 'ethers'
23

34
import '@nomiclabs/hardhat-ethers'
45
import '@nomiclabs/hardhat-waffle'
@@ -19,12 +20,21 @@ export default {
1920
},
2021
rinkeby: {
2122
url: `https://rinkeby.infura.io/v3/${process.env.INFURA_SECRET}`,
23+
accounts: {
24+
mnemonic: process.env.DEV_MNEMONIC || Wallet.createRandom().mnemonic.phrase,
25+
},
2226
},
2327
kovan: {
2428
url: `https://kovan.infura.io/v3/${process.env.INFURA_SECRET}`,
29+
accounts: {
30+
mnemonic: process.env.DEV_MNEMONIC || Wallet.createRandom().mnemonic.phrase,
31+
},
2532
},
2633
mainnet: {
2734
url: `https://mainnet.infura.io/v3/${process.env.INFURA_SECRET}`,
35+
accounts: {
36+
mnemonic: process.env.PROD_MNEMONIC || Wallet.createRandom().mnemonic.phrase,
37+
},
2838
},
2939
},
3040
solidity: {

scripts/deploy.ts

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,22 @@ const parseEvents = (
1414
.map((log) => contractInterface.parseLog(log))
1515
.filter((log) => log.name === eventName)
1616

17-
task('ampl:deploy', 'Deploy ampleforth contracts').setAction(
18-
async (args, bre) => {
17+
task('deploy:ampl', 'Deploy ampleforth contracts').setAction(
18+
async (args, hre) => {
1919
console.log(args)
2020

2121
// get signers
22-
const deployer = (await bre.ethers.getSigners())[0]
22+
const deployer = (await hre.ethers.getSigners())[0]
2323
console.log('Deployer', await deployer.getAddress())
2424

2525
// set init params
2626
const owner = await deployer.getAddress()
27-
const BASE_CPI = bre.ethers.utils.parseUnits('1', 20)
27+
const BASE_CPI = hre.ethers.utils.parseUnits('1', 20)
2828

2929
// deploy UFragments
3030
const uFragments = await (
31-
await bre.upgrades.deployProxy(
32-
(await bre.ethers.getContractFactory('UFragments')).connect(deployer),
31+
await hre.upgrades.deployProxy(
32+
(await hre.ethers.getContractFactory('UFragments')).connect(deployer),
3333
[owner],
3434
{
3535
initializer: 'initialize(address)',
@@ -40,8 +40,8 @@ task('ampl:deploy', 'Deploy ampleforth contracts').setAction(
4040

4141
// deploy Policy
4242
const uFragmentsPolicy = await (
43-
await bre.upgrades.deployProxy(
44-
(await bre.ethers.getContractFactory('UFragmentsPolicy')).connect(
43+
await hre.upgrades.deployProxy(
44+
(await hre.ethers.getContractFactory('UFragmentsPolicy')).connect(
4545
deployer,
4646
),
4747
[owner, uFragments.address, BASE_CPI.toString()],
@@ -54,21 +54,21 @@ task('ampl:deploy', 'Deploy ampleforth contracts').setAction(
5454

5555
// deploy Orchestrator
5656
const orchestrator = await (
57-
await bre.ethers.getContractFactory('Orchestrator')
57+
await hre.ethers.getContractFactory('Orchestrator')
5858
)
5959
.connect(deployer)
6060
.deploy(uFragmentsPolicy.address)
6161
console.log('Orchestrator deployed to:', orchestrator.address)
6262
},
6363
)
6464

65-
task('ampl:upgrade', 'Upgrade ampleforth contracts')
65+
task('upgrade:ampl', 'Upgrade ampleforth contracts')
6666
.addParam('contract', 'which implementation contract to use')
6767
.addParam('address', 'which proxy address to upgrade')
6868
.addOptionalParam('multisig', 'which multisig address to use for upgrade')
69-
.setAction(async (args, bre) => {
69+
.setAction(async (args, hre) => {
7070
console.log(args)
71-
const upgrades = bre.upgrades as any
71+
const upgrades = hre.upgrades as any
7272

7373
// can only upgrade token or policy
7474
const supported = ['UFragments', 'UFragmentsPolicy']
@@ -79,23 +79,23 @@ task('ampl:upgrade', 'Upgrade ampleforth contracts')
7979
}
8080

8181
// get signers
82-
const deployer = (await bre.ethers.getSigners())[0]
82+
const deployer = (await hre.ethers.getSigners())[0]
8383
console.log('Deployer', await deployer.getAddress())
8484

8585
if (args.multisig) {
8686
// deploy new implementation
8787
const implementation = await upgrades.prepareUpgrade(
8888
args.address,
89-
await bre.ethers.getContractFactory(args.contract),
89+
await hre.ethers.getContractFactory(args.contract),
9090
)
9191
console.log(
9292
`New implementation for ${args.contract} deployed to`,
9393
implementation,
9494
)
9595

9696
// prepare upgrade transaction
97-
const admin = new bre.ethers.Contract(
98-
await getAdminAddress(bre.ethers.provider, args.address),
97+
const admin = new hre.ethers.Contract(
98+
await getAdminAddress(hre.ethers.provider, args.address),
9999
ProxyAdmin.abi,
100100
deployer,
101101
)
@@ -106,7 +106,7 @@ task('ampl:upgrade', 'Upgrade ampleforth contracts')
106106
console.log(`Upgrade transaction`, upgradeTx)
107107

108108
// send upgrade transaction to multisig
109-
const multisig = new bre.ethers.Contract(
109+
const multisig = new hre.ethers.Contract(
110110
args.multisig,
111111
MultiSigWallet,
112112
deployer,
@@ -126,8 +126,33 @@ task('ampl:upgrade', 'Upgrade ampleforth contracts')
126126
} else {
127127
await upgrades.upgradeProxy(
128128
args.address,
129-
await bre.ethers.getContractFactory(args.contract),
129+
await hre.ethers.getContractFactory(args.contract),
130130
)
131131
console.log(args.contract, 'upgraded')
132132
}
133133
})
134+
135+
task('deploy:wampl', 'Deploy wampl contract')
136+
.addParam('ampl', 'The address to the AMPL token')
137+
.addParam('name', 'The ERC-20 name of the wAMPL token')
138+
.addParam('symbol', 'The ERC-20 symbol of the wAMPL token')
139+
.setAction(async (args, hre) => {
140+
console.log(args)
141+
142+
// get signers
143+
const deployer = (await hre.ethers.getSigners())[0]
144+
console.log('Deployer', await deployer.getAddress())
145+
146+
// deploy contract
147+
const constructorArguments = [args.ampl, args.name, args.symbol]
148+
const wampl = await (await hre.ethers.getContractFactory('WAMPL'))
149+
.connect(deployer)
150+
.deploy(...constructorArguments)
151+
console.log('wAMPL deployed to:', wampl.address)
152+
await wampl.deployTransaction.wait()
153+
154+
await hre.run('verify:verify', {
155+
address: wampl.address,
156+
constructorArguments,
157+
})
158+
})

0 commit comments

Comments
 (0)