Skip to content

Commit 2dc5d1a

Browse files
dOrgJelliben-kaufman
authored andcommitted
Optimize Contracts Directory (#247)
* optimization script * import ABI utility * custom ABI import * remove bytecode option * formatting * cli fixes * scripts * no whitespace + do everything * export noWhitespace * no duplicates rc.34 & rc.35 * linter fixes * fix * revert duplicate optimization * contracts-optimized directory * revert * revert * added to migration
1 parent 4032b11 commit 2dc5d1a

File tree

7 files changed

+232
-58
lines changed

7 files changed

+232
-58
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ verify.js.map
66
verify.js
77
flattened.*.sol
88
deployment-state.json
9+
contracts-optimized

migrate-base.js

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
1-
async function migrateBase ({ arcVersion, web3, spinner, confirm, opts, logTx, previousMigration, getArcVersionNumber }) {
1+
const utils = require('./utils')
2+
3+
async function migrateBase ({ arcVersion, web3, spinner, confirm, opts, logTx, previousMigration, getArcVersionNumber, optimizedAbis }) {
24
if (!(await confirm('About to migrate base contracts. Continue?'))) {
35
return
46
}
57

8+
let contractsDir = 'contracts'
9+
if (optimizedAbis) {
10+
contractsDir = 'contracts-optimized'
11+
}
12+
613
const addresses = {}
714
const network = await web3.eth.net.getNetworkType()
815

@@ -60,15 +67,15 @@ async function migrateBase ({ arcVersion, web3, spinner, confirm, opts, logTx, p
6067

6168
if (network === 'private') {
6269
GENToken = await deploy(
63-
require(`./contracts/${arcVersion}/DAOToken.json`),
70+
utils.importAbi(`./${contractsDir}/${arcVersion}/DAOToken.json`),
6471
[],
6572
'DAOstack',
6673
'GEN',
6774
web3.utils.toWei('100000000')
6875
)
6976

7077
const GENTokenContract = await new web3.eth.Contract(
71-
require(`./contracts/${arcVersion}/DAOToken.json`).abi,
78+
utils.importAbi(`./${contractsDir}/${arcVersion}/DAOToken.json`).abi,
7279
GENToken,
7380
opts
7481
)
@@ -94,25 +101,25 @@ async function migrateBase ({ arcVersion, web3, spinner, confirm, opts, logTx, p
94101
}
95102

96103
await deploy(
97-
require(`./contracts/${arcVersion}/DAORegistry.json`),
104+
utils.importAbi(`./${contractsDir}/${arcVersion}/DAORegistry.json`),
98105
[],
99106
web3.eth.accounts.wallet[0].address
100107
)
101108
if (getArcVersionNumber(arcVersion) >= 29) {
102-
DAOTracker = await deploy(require(`./contracts/${arcVersion}/DAOTracker.json`))
109+
DAOTracker = await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/DAOTracker.json`))
103110
}
104111
} else {
105112
addresses['GEN'] = GENToken
106113
if (network === 'main') {
107114
await deploy(
108-
require(`./contracts/${arcVersion}/DAORegistry.json`),
115+
utils.importAbi(`./${contractsDir}/${arcVersion}/DAORegistry.json`),
109116
[],
110117
'0x85e7fa550b534656d04d143b9a23a11e05077da3' // DAOstack's controlled account
111118
)
112119
if (getArcVersionNumber(arcVersion) >= 29) {
113-
DAOTracker = await deploy(require(`./contracts/${arcVersion}/DAOTracker.json`))
120+
DAOTracker = await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/DAOTracker.json`))
114121
const daoTracker = new web3.eth.Contract(
115-
require(`./contracts/${arcVersion}/DAOTracker.json`).abi,
122+
utils.importAbi(`./${contractsDir}/${arcVersion}/DAOTracker.json`).abi,
116123
DAOTracker,
117124
opts
118125
)
@@ -124,14 +131,14 @@ async function migrateBase ({ arcVersion, web3, spinner, confirm, opts, logTx, p
124131
}
125132
} else {
126133
await deploy(
127-
require(`./contracts/${arcVersion}/DAORegistry.json`),
134+
utils.importAbi(`./${contractsDir}/${arcVersion}/DAORegistry.json`),
128135
[],
129136
'0x73Db6408abbea97C5DB8A2234C4027C315094936'
130137
)
131138
if (getArcVersionNumber(arcVersion) >= 29) {
132-
DAOTracker = await deploy(require(`./contracts/${arcVersion}/DAOTracker.json`))
139+
DAOTracker = await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/DAOTracker.json`))
133140
const daoTracker = new web3.eth.Contract(
134-
require(`./contracts/${arcVersion}/DAOTracker.json`).abi,
141+
utils.importAbi(`./${contractsDir}/${arcVersion}/DAOTracker.json`).abi,
135142
DAOTracker,
136143
opts
137144
)
@@ -144,50 +151,50 @@ async function migrateBase ({ arcVersion, web3, spinner, confirm, opts, logTx, p
144151
}
145152
}
146153

147-
const ControllerCreator = await deploy(require(`./contracts/${arcVersion}/ControllerCreator.json`))
154+
const ControllerCreator = await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/ControllerCreator.json`))
148155

149156
if (getArcVersionNumber(arcVersion) >= 29) {
150157
await deploy(
151-
require(`./contracts/${arcVersion}/DaoCreator.json`),
158+
utils.importAbi(`./${contractsDir}/${arcVersion}/DaoCreator.json`),
152159
['ControllerCreator', 'DAOTracker'],
153160
ControllerCreator,
154161
DAOTracker
155162
)
156163
} else {
157164
await deploy(
158-
require(`./contracts/${arcVersion}/DaoCreator.json`),
165+
utils.importAbi(`./${contractsDir}/${arcVersion}/DaoCreator.json`),
159166
['ControllerCreator'],
160167
ControllerCreator
161168
)
162169
}
163170
if (getArcVersionNumber(arcVersion) < 34) {
164-
await deploy(require(`./contracts/${arcVersion}/UController.json`))
171+
await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/UController.json`))
165172
}
166173
await deploy(
167-
require(`./contracts/${arcVersion}/GenesisProtocol.json`),
174+
utils.importAbi(`./${contractsDir}/${arcVersion}/GenesisProtocol.json`),
168175
['DAOToken'],
169176
GENToken
170177
)
171-
await deploy(require(`./contracts/${arcVersion}/SchemeRegistrar.json`))
172-
await deploy(require(`./contracts/${arcVersion}/UpgradeScheme.json`))
178+
await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/SchemeRegistrar.json`))
179+
await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/UpgradeScheme.json`))
173180
await deploy(
174-
require(`./contracts/${arcVersion}/GlobalConstraintRegistrar.json`)
181+
utils.importAbi(`./${contractsDir}/${arcVersion}/GlobalConstraintRegistrar.json`)
175182
)
176-
await deploy(require(`./contracts/${arcVersion}/ContributionReward.json`))
177-
await deploy(require(`./contracts/${arcVersion}/AbsoluteVote.json`))
178-
await deploy(require(`./contracts/${arcVersion}/QuorumVote.json`))
179-
await deploy(require(`./contracts/${arcVersion}/TokenCapGC.json`))
180-
await deploy(require(`./contracts/${arcVersion}/VoteInOrganizationScheme.json`))
181-
await deploy(require(`./contracts/${arcVersion}/OrganizationRegister.json`))
183+
await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/ContributionReward.json`))
184+
await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/AbsoluteVote.json`))
185+
await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/QuorumVote.json`))
186+
await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/TokenCapGC.json`))
187+
await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/VoteInOrganizationScheme.json`))
188+
await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/OrganizationRegister.json`))
182189
if (getArcVersionNumber(arcVersion) >= 22) {
183-
await deploy(require(`./contracts/${arcVersion}/Redeemer.json`))
190+
await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/Redeemer.json`))
184191
}
185192
if (getArcVersionNumber(arcVersion) >= 24) {
186193
if (getArcVersionNumber(arcVersion) < 34) {
187-
await deploy(require(`./contracts/${arcVersion}/UGenericScheme.json`))
194+
await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/UGenericScheme.json`))
188195
}
189196
} else {
190-
await deploy(require(`./contracts/${arcVersion}/GenericScheme.json`))
197+
await deploy(utils.importAbi(`./${contractsDir}/${arcVersion}/GenericScheme.json`))
191198
}
192199
let migration = { 'base': previousMigration.base || {} }
193200
migration.base[arcVersion] = addresses

migrate-dao.js

Lines changed: 34 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
const utils = require('./utils.js')
22
const sanitize = require('./sanitize')
33

4-
async function migrateDAO ({ arcVersion, web3, spinner, confirm, opts, migrationParams, logTx, previousMigration, customAbisLocation, restart, getState, setState, cleanState, sendTx, getArcVersionNumber }) {
4+
async function migrateDAO ({ arcVersion, web3, spinner, confirm, opts, migrationParams, logTx, previousMigration, customAbisLocation, restart, getState, setState, cleanState, sendTx, getArcVersionNumber, optimizedAbis }) {
55
const network = await web3.eth.net.getNetworkType()
66
if (restart) {
77
cleanState(network)
88
}
99

10+
let contractsDir = 'contracts'
11+
if (optimizedAbis) {
12+
contractsDir = 'contracts-optimized'
13+
}
14+
1015
let deploymentState = getState(network)
1116

1217
// sanitize the parameters
@@ -46,49 +51,49 @@ async function migrateDAO ({ arcVersion, web3, spinner, confirm, opts, migration
4651
} = base[arcVersion]
4752

4853
const daoCreator = new web3.eth.Contract(
49-
require(`./contracts/${arcVersion}/DaoCreator.json`).abi,
54+
utils.importAbi(`./${contractsDir}/${arcVersion}/DaoCreator.json`).abi,
5055
DaoCreator,
5156
opts
5257
)
5358

5459
const uController = getArcVersionNumber(arcVersion) < 34 ? new web3.eth.Contract(
55-
require(`./contracts/${arcVersion}/UController.json`).abi,
60+
utils.importAbi(`./${contractsDir}/${arcVersion}/UController.json`).abi,
5661
UController,
5762
opts
5863
) : null
5964

6065
const schemeRegistrar = new web3.eth.Contract(
61-
require(`./contracts/${arcVersion}/SchemeRegistrar.json`).abi,
66+
utils.importAbi(`./${contractsDir}/${arcVersion}/SchemeRegistrar.json`).abi,
6267
SchemeRegistrar,
6368
opts
6469
)
6570

6671
const contributionReward = new web3.eth.Contract(
67-
require(`./contracts/${arcVersion}/ContributionReward.json`).abi,
72+
utils.importAbi(`./${contractsDir}/${arcVersion}/ContributionReward.json`).abi,
6873
ContributionReward,
6974
opts
7075
)
7176

7277
const genericScheme = new web3.eth.Contract(
73-
getArcVersionNumber(arcVersion) >= 24 && getArcVersionNumber(arcVersion) < 34 ? require(`./contracts/${arcVersion}/UGenericScheme.json`).abi : require(`./contracts/${arcVersion}/GenericScheme.json`).abi,
78+
getArcVersionNumber(arcVersion) >= 24 && getArcVersionNumber(arcVersion) < 34 ? utils.importAbi(`./${contractsDir}/${arcVersion}/UGenericScheme.json`).abi : utils.importAbi(`./${contractsDir}/${arcVersion}/GenericScheme.json`).abi,
7479
getArcVersionNumber(arcVersion) >= 24 && getArcVersionNumber(arcVersion) < 34 ? UGenericScheme : GenericScheme,
7580
opts
7681
)
7782

7883
const globalConstraintRegistrar = new web3.eth.Contract(
79-
require(`./contracts/${arcVersion}/GlobalConstraintRegistrar.json`).abi,
84+
utils.importAbi(`./${contractsDir}/${arcVersion}/GlobalConstraintRegistrar.json`).abi,
8085
GlobalConstraintRegistrar,
8186
opts
8287
)
8388

8489
const upgradeScheme = new web3.eth.Contract(
85-
require(`./contracts/${arcVersion}/UpgradeScheme.json`).abi,
90+
utils.importAbi(`./${contractsDir}/${arcVersion}/UpgradeScheme.json`).abi,
8691
UpgradeScheme,
8792
opts
8893
)
8994

9095
const genesisProtocol = new web3.eth.Contract(
91-
require(`./contracts/${arcVersion}/GenesisProtocol.json`).abi,
96+
utils.importAbi(`./${contractsDir}/${arcVersion}/GenesisProtocol.json`).abi,
9297
GenesisProtocol,
9398
opts
9499
)
@@ -172,19 +177,19 @@ async function migrateDAO ({ arcVersion, web3, spinner, confirm, opts, migration
172177
}
173178

174179
avatar = new web3.eth.Contract(
175-
require(`./contracts/${arcVersion}/Avatar.json`).abi,
180+
utils.importAbi(`./${contractsDir}/${arcVersion}/Avatar.json`).abi,
176181
deploymentState.Avatar,
177182
opts
178183
)
179184

180185
daoToken = new web3.eth.Contract(
181-
require(`./contracts/${arcVersion}/DAOToken.json`).abi,
186+
utils.importAbi(`./${contractsDir}/${arcVersion}/DAOToken.json`).abi,
182187
await avatar.methods.nativeToken().call(),
183188
opts
184189
)
185190

186191
reputation = new web3.eth.Contract(
187-
require(`./contracts/${arcVersion}/Reputation.json`).abi,
192+
utils.importAbi(`./${contractsDir}/${arcVersion}/Reputation.json`).abi,
188193
await avatar.methods.nativeReputation().call(),
189194
opts
190195
)
@@ -194,7 +199,7 @@ async function migrateDAO ({ arcVersion, web3, spinner, confirm, opts, migration
194199
} else {
195200
spinner.start('Deploying Controller')
196201
controller = new web3.eth.Contract(
197-
require(`./contracts/${arcVersion}/Controller.json`).abi,
202+
utils.importAbi(`./${contractsDir}/${arcVersion}/Controller.json`).abi,
198203
await avatar.methods.owner().call(),
199204
opts
200205
)
@@ -203,11 +208,11 @@ async function migrateDAO ({ arcVersion, web3, spinner, confirm, opts, migration
203208
} else {
204209
if (deploymentState.DAOToken === undefined) {
205210
let { receipt, result } = await sendTx(new web3.eth.Contract(
206-
require(`./contracts/${arcVersion}/DAOToken.json`).abi,
211+
utils.importAbi(`./${contractsDir}/${arcVersion}/DAOToken.json`).abi,
207212
undefined,
208213
opts
209214
).deploy({
210-
data: require(`./contracts/${arcVersion}/DAOToken.json`).bytecode,
215+
data: utils.importAbi(`./${contractsDir}/${arcVersion}/DAOToken.json`).bytecode,
211216
arguments: [tokenName, tokenSymbol, 0]
212217
}), 'Deploying DAO Token')
213218
daoToken = result
@@ -217,18 +222,18 @@ async function migrateDAO ({ arcVersion, web3, spinner, confirm, opts, migration
217222
setState(deploymentState, network)
218223
}
219224
daoToken = new web3.eth.Contract(
220-
require(`./contracts/${arcVersion}/DAOToken.json`).abi,
225+
utils.importAbi(`./${contractsDir}/${arcVersion}/DAOToken.json`).abi,
221226
deploymentState.DAOToken,
222227
opts
223228
)
224229

225230
if (deploymentState.Reputation === undefined) {
226231
let { receipt, result } = await sendTx(new web3.eth.Contract(
227-
require(`./contracts/${arcVersion}/Reputation.json`).abi,
232+
utils.importAbi(`./${contractsDir}/${arcVersion}/Reputation.json`).abi,
228233
undefined,
229234
opts
230235
).deploy({
231-
data: require(`./contracts/${arcVersion}/Reputation.json`).bytecode
236+
data: utils.importAbi(`./${contractsDir}/${arcVersion}/Reputation.json`).bytecode
232237
}), 'Deploying Reputation')
233238
reputation = result
234239
await logTx(receipt, `${reputation.options.address} => Reputation`)
@@ -237,18 +242,18 @@ async function migrateDAO ({ arcVersion, web3, spinner, confirm, opts, migration
237242
setState(deploymentState, network)
238243
}
239244
reputation = new web3.eth.Contract(
240-
require(`./contracts/${arcVersion}/Reputation.json`).abi,
245+
utils.importAbi(`./${contractsDir}/${arcVersion}/Reputation.json`).abi,
241246
deploymentState.Reputation,
242247
opts
243248
)
244249

245250
if (deploymentState.Avatar === undefined) {
246251
let { receipt, result } = await sendTx(new web3.eth.Contract(
247-
require(`./contracts/${arcVersion}/Avatar.json`).abi,
252+
utils.importAbi(`./${contractsDir}/${arcVersion}/Avatar.json`).abi,
248253
undefined,
249254
opts
250255
).deploy({
251-
data: require(`./contracts/${arcVersion}/Avatar.json`).bytecode,
256+
data: utils.importAbi(`./${contractsDir}/${arcVersion}/Avatar.json`).bytecode,
252257
arguments: [orgName, daoToken.options.address, reputation.options.address]
253258
}), 'Deploying Avatar.')
254259
avatar = result
@@ -258,7 +263,7 @@ async function migrateDAO ({ arcVersion, web3, spinner, confirm, opts, migration
258263
setState(deploymentState, network)
259264
}
260265
avatar = new web3.eth.Contract(
261-
require(`./contracts/${arcVersion}/Avatar.json`).abi,
266+
utils.importAbi(`./${contractsDir}/${arcVersion}/Avatar.json`).abi,
262267
deploymentState.Avatar,
263268
opts
264269
)
@@ -305,11 +310,11 @@ async function migrateDAO ({ arcVersion, web3, spinner, confirm, opts, migration
305310
} else {
306311
if (deploymentState.Controller === undefined) {
307312
let { receipt, result } = await sendTx(new web3.eth.Contract(
308-
require(`./contracts/${arcVersion}/Controller.json`).abi,
313+
utils.importAbi(`./${contractsDir}/${arcVersion}/Controller.json`).abi,
309314
undefined,
310315
opts
311316
).deploy({
312-
data: require(`./contracts/${arcVersion}/Controller.json`).bytecode,
317+
data: utils.importAbi(`./${contractsDir}/${arcVersion}/Controller.json`).bytecode,
313318
arguments: [avatar.options.address]
314319
}), 'Deploying Controller')
315320
controller = result
@@ -319,15 +324,15 @@ async function migrateDAO ({ arcVersion, web3, spinner, confirm, opts, migration
319324
setState(deploymentState, network)
320325
}
321326
controller = new web3.eth.Contract(
322-
require(`./contracts/${arcVersion}/Controller.json`).abi,
327+
utils.importAbi(`./${contractsDir}/${arcVersion}/Controller.json`).abi,
323328
deploymentState.Controller,
324329
opts
325330
)
326331
}
327332

328333
if (migrationParams.noTrack !== true && getArcVersionNumber(arcVersion) >= 29 && deploymentState.trackedDAO !== true) {
329334
const daoTracker = new web3.eth.Contract(
330-
require(`./contracts/${arcVersion}/DAOTracker.json`).abi,
335+
utils.importAbi(`./${contractsDir}/${arcVersion}/DAOTracker.json`).abi,
331336
DAOTracker,
332337
opts
333338
)
@@ -370,7 +375,7 @@ async function migrateDAO ({ arcVersion, web3, spinner, confirm, opts, migration
370375

371376
if (network === 'private') {
372377
const daoRegistry = new web3.eth.Contract(
373-
require(`./contracts/${arcVersion}/DAORegistry.json`).abi,
378+
utils.importAbi(`./${contractsDir}/${arcVersion}/DAORegistry.json`).abi,
374379
DAORegistry,
375380
opts
376381
)
@@ -654,7 +659,7 @@ async function migrateDAO ({ arcVersion, web3, spinner, confirm, opts, migration
654659
const path = require('path')
655660
let contractJson
656661
if (standAlone.fromArc) {
657-
contractJson = require(`./contracts/${standAlone.arcVersion ? standAlone.arcVersion : arcVersion}/${standAlone.name}.json`)
662+
contractJson = utils.importAbi(`./${contractsDir}/${standAlone.arcVersion ? standAlone.arcVersion : arcVersion}/${standAlone.name}.json`)
658663
} else {
659664
contractJson = require(path.resolve(`${customAbisLocation}/${standAlone.name}.json`))
660665
}
@@ -728,7 +733,7 @@ async function migrateDAO ({ arcVersion, web3, spinner, confirm, opts, migration
728733
const path = require('path')
729734
let contractJson
730735
if (customeScheme.fromArc) {
731-
contractJson = require(`./contracts/${customeScheme.arcVersion ? customeScheme.arcVersion : arcVersion}/${customeScheme.name}.json`)
736+
contractJson = utils.importAbi(`./${contractsDir}/${customeScheme.arcVersion ? customeScheme.arcVersion : arcVersion}/${customeScheme.name}.json`)
732737
} else {
733738
contractJson = require(path.resolve(`${customAbisLocation}/${customeScheme.name}.json`))
734739
}

0 commit comments

Comments
 (0)