1
- import { task } from 'hardhat/config' ;
2
- import { BigNumber as BN } from 'ethers' ;
3
1
import { expect } from 'chai' ;
4
2
import fs from 'fs' ;
5
3
@@ -12,25 +10,23 @@ import {
12
10
TimelockController ,
13
11
ArenaGovernor__factory ,
14
12
ArenaGovernor ,
15
- TokenSale__factory ,
16
- TokenSale ,
17
- } from '../typechain' ;
13
+ } from '../../typechain' ;
18
14
19
15
import { allConfigs } from './config' ;
16
+ import { HardhatRuntimeEnvironment } from 'hardhat/types' ;
20
17
21
18
let deployerAddress : string ;
22
19
let token : ArenaToken ;
23
20
let revokableTokenLock : RevokableTokenLock ;
24
21
let timelock : TimelockController ;
25
22
let governor : ArenaGovernor ;
26
- let tokenSale : TokenSale ;
27
23
28
24
// see OZ docs: https://docs.openzeppelin.com/contracts/4.x/api/governance#timelock-roles
29
25
const ADMIN_ROLE = '0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5' ;
30
26
const PROPOSER_ROLE = '0xb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1' ;
31
27
const EXECUTOR_ROLE = '0xd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63' ;
32
28
33
- task ( 'deploy' , 'deploy contracts' ) . setAction ( async ( taskArgs , hre ) => {
29
+ export async function deployGov ( hre : HardhatRuntimeEnvironment ) {
34
30
const networkId = hre . network . config . chainId as number ;
35
31
const [ deployer ] = await hre . ethers . getSigners ( ) ;
36
32
deployerAddress = await deployer . getAddress ( ) ;
@@ -81,20 +77,8 @@ task('deploy', 'deploy contracts').setAction(async (taskArgs, hre) => {
81
77
await governor . deployed ( ) ;
82
78
console . log ( `governor address: ${ governor . address } ` ) ;
83
79
84
- console . log ( `deploying tokensale...` ) ;
85
- const TokenSaleFactory = ( await hre . ethers . getContractFactory ( 'TokenSale' ) ) as TokenSale__factory ;
86
- tokenSale = await TokenSaleFactory . deploy (
87
- config . TOKEN_SALE_USDC ,
88
- token . address ,
89
- config . TOKEN_SALE_START ,
90
- config . TOKEN_SALE_DURATION ,
91
- config . TOKEN_SALE_ARENA_PRICE ,
92
- config . TOKEN_SALE_RECIPIENT ,
93
- revokableTokenLock . address ,
94
- config . VEST_DURATION
95
- ) ;
96
- await tokenSale . deployed ( ) ;
97
- console . log ( `tokensale address: ${ tokenSale . address } ` ) ;
80
+ console . log ( `transfer remaining tokens to timelock` ) ;
81
+ await token . transfer ( timelock . address , config . FREE_SUPPLY ) ;
98
82
99
83
// give governor proposer role
100
84
// https://docs.openzeppelin.com/contracts/4.x/api/governance#timelock-proposer
@@ -111,26 +95,10 @@ task('deploy', 'deploy contracts').setAction(async (taskArgs, hre) => {
111
95
112
96
// set revoker role in TokenLock to timelock
113
97
await revokableTokenLock . setRevoker ( timelock . address ) ;
114
- // set token sale in TokenLock
115
- await revokableTokenLock . setTokenSale ( tokenSale . address ) ;
116
98
117
99
// transfer tokenlock admin role to timelock
118
100
await revokableTokenLock . transferOwnership ( timelock . address ) ;
119
101
120
- // set up token sale whitelist
121
- await tokenSale . changeWhiteList (
122
- config . TOKEN_SALE_WHITELIST . map ( ( { buyer} ) => buyer ) ,
123
- config . TOKEN_SALE_WHITELIST . map ( ( { arenaAmount} ) => arenaAmount )
124
- ) ;
125
- // transfer token sale admin role to timelock
126
- await tokenSale . transferOwnership ( timelock . address ) ;
127
-
128
- // transfer all tokens held by deployer to token sale and timelock
129
- const TOKEN_SALE_SUPPLY = config . TOKEN_SALE_WHITELIST . reduce ( ( sum , el ) => sum . add ( el . arenaAmount ) , BN . from ( `0` ) ) ;
130
- console . log ( `transferring ${ TOKEN_SALE_SUPPLY . toString ( ) } ARENA to TokenSale. Remaining back to Timelock` ) ;
131
- await token . transfer ( tokenSale . address , TOKEN_SALE_SUPPLY ) ;
132
- await token . transfer ( timelock . address , config . FREE_SUPPLY . sub ( TOKEN_SALE_SUPPLY ) ) ;
133
-
134
102
// transfer token admin role to timelock
135
103
await token . transferOwnership ( timelock . address ) ;
136
104
@@ -141,7 +109,6 @@ task('deploy', 'deploy contracts').setAction(async (taskArgs, hre) => {
141
109
tokenLock : revokableTokenLock . address ,
142
110
timelock : timelock . address ,
143
111
governor : governor . address ,
144
- tokenSale : tokenSale . address ,
145
112
} ;
146
113
let exportJson = JSON . stringify ( addressesToExport , null , 2 ) ;
147
114
fs . writeFileSync ( config . EXPORT_FILENAME , exportJson ) ;
@@ -169,9 +136,6 @@ task('deploy', 'deploy contracts').setAction(async (taskArgs, hre) => {
169
136
// TokenLock revoker should be timelock
170
137
expect ( await revokableTokenLock . revoker ( ) ) . to . be . eq ( timelock . address ) ;
171
138
172
- // TokenLock token sale should be set
173
- expect ( await revokableTokenLock . tokenSale ( ) ) . to . be . eq ( tokenSale . address ) ;
174
-
175
139
// TokenLock owner should be timelock
176
140
expect ( await revokableTokenLock . owner ( ) ) . to . be . eq ( timelock . address ) ;
177
141
@@ -181,11 +145,6 @@ task('deploy', 'deploy contracts').setAction(async (taskArgs, hre) => {
181
145
// check Token's tokenlock has been set
182
146
expect ( await token . tokenLock ( ) ) . to . be . eq ( revokableTokenLock . address ) ;
183
147
184
- // check TokenSale's tokenlock has been set
185
- expect ( await tokenSale . tokenLock ( ) ) . to . be . eq ( revokableTokenLock . address ) ;
186
- // Token's owner should be timelock
187
- expect ( await tokenSale . owner ( ) ) . to . be . eq ( timelock . address ) ;
188
-
189
148
/////////////////////////
190
149
// CONFIG VERIFICATION //
191
150
/////////////////////////
@@ -194,11 +153,8 @@ task('deploy', 'deploy contracts').setAction(async (taskArgs, hre) => {
194
153
// check ArenaToken's token balance == AIRDROP_SUPPLY
195
154
expect ( await token . balanceOf ( token . address ) ) . to . be . eq ( config . AIRDROP_SUPPLY ) ;
196
155
197
- // check timelock's token balance == TOKEN_SALE_SUPPLY
198
- expect ( await token . balanceOf ( tokenSale . address ) ) . to . be . eq ( TOKEN_SALE_SUPPLY ) ;
199
-
200
- // check timelock's token balance == FREE_SUPPLY - TOKEN_SALE_SUPPLY (rest of it)
201
- expect ( await token . balanceOf ( timelock . address ) ) . to . be . eq ( config . FREE_SUPPLY . sub ( TOKEN_SALE_SUPPLY ) ) ;
156
+ // check timelock's token balance == FREE_SUPPLY
157
+ expect ( await token . balanceOf ( timelock . address ) ) . to . be . eq ( config . FREE_SUPPLY ) ;
202
158
203
159
// check timelock's minDelay
204
160
expect ( await timelock . getMinDelay ( ) ) . to . be . eq ( config . TIMELOCK_DELAY ) ;
@@ -214,4 +170,4 @@ task('deploy', 'deploy contracts').setAction(async (taskArgs, hre) => {
214
170
215
171
console . log ( 'verification complete!' ) ;
216
172
process . exit ( 0 ) ;
217
- } ) ;
173
+ }
0 commit comments