-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathMakefile
More file actions
411 lines (363 loc) · 29.3 KB
/
Makefile
File metadata and controls
411 lines (363 loc) · 29.3 KB
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
# Binaries
BIN_HARDHAT := ./node_modules/.bin/hardhat
BIN_ECHIDNA := echidna
BIN_MYTH := myth
# Configs
CONFIG_ECHIDNA := echidna.config.yaml
CONFIG_SOLC := solc.json
# Networks
NETWORK_HARDHAT := hardhat
NETWORK_LOCALHOST := localhost
NETWORK_SEPOLIA := sepolia
NETWORK_AMOY := amoy
NETWORK_ETHEREUM := ethereum
NETWORK_POLYGON := polygon
# Hardhat contract addresses
HARDHAT_VALIDATOR_REGISTRY := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
HARDHAT_MATIC_X := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
HARDHAT_CHILD_POOL := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
HARDHAT_FX_STATE_ROOT_TUNNEL := 0x5FbDB2315678afecb367f032d93F642f64180aa3
HARDHAT_FX_STATE_CHILD_TUNNEL := 0x5FbDB2315678afecb367f032d93F642f64180aa3
HARDHAT_TIMELOCK_CONTROLLER := 0x5FbDB2315678afecb367f032d93F642f64180aa3
HARDHAT_STAKE_MANAGER := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
HARDHAT_CHECKPOINT_MANAGER := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
HARDHAT_FX_ROOT := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
HARDHAT_FX_CHILD := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
HARDHAT_MATIC := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
HARDHAT_POL := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
HARDHAT_MANAGER := 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
HARDHAT_TREASURY := 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
HARDHAT_INSTANT_POOL_OWNER := 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
# Localhost contract addresses
LOCALHOST_VALIDATOR_REGISTRY := 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512
LOCALHOST_MATIC_X := 0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9
LOCALHOST_CHILD_POOL := 0x5FC8d32690cc91D4c39d9d3abcBD16989F875707
LOCALHOST_FX_STATE_ROOT_TUNNEL := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
LOCALHOST_FX_STATE_CHILD_TUNNEL := 0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9
LOCALHOST_TIMELOCK_CONTROLLER := 0x0165878A594ca255338adfa4d48449f69242Eb8F
LOCALHOST_STAKE_MANAGER := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
LOCALHOST_CHECKPOINT_MANAGER := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
LOCALHOST_FX_ROOT := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
LOCALHOST_FX_CHILD := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
LOCALHOST_MATIC := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
LOCALHOST_POL := 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
LOCALHOST_MANAGER := 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
LOCALHOST_TREASURY := 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
LOCALHOST_INSTANT_POOL_OWNER := 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
# Sepolia contract addresses
SEPOLIA_VALIDATOR_REGISTRY := 0xE98fc808E8aE8025a1D17d6F4Fbc3Df226788438
SEPOLIA_MATIC_X := 0xB51AAb302085F436204c4B1964fBE74517B2D4b6
SEPOLIA_FX_STATE_ROOT_TUNNEL := 0x1316e16f56a5A05538277906E12b77F2B39B4d79
SEPOLIA_TIMELOCK_CONTROLLER := 0x5039f9ccD7D8166fbc6F06C10975869ab9E8D108
SEPOLIA_STAKE_MANAGER := 0x4AE8f648B1Ec892B6cc68C89cc088583964d08bE
SEPOLIA_CHECKPOINT_MANAGER := 0xbd07D7E1E93c8d4b2a261327F3C28a8EA7167209
SEPOLIA_FX_ROOT := 0x0E13EBEdDb8cf9f5987512d5E081FdC2F5b0991e
SEPOLIA_MATIC := 0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53
SEPOLIA_POL := 0x44499312f493F62f2DFd3C6435Ca3603EbFCeeBa
SEPOLIA_MANAGER := 0x369B31971250859d3AD37E7cEDCF42AA5CF2C4F4
SEPOLIA_TREASURY := 0xdeb90df43BBa8FC0e2C08C54dC0F48cfc694F896
SEPOLIA_DEPLOYER := 0x8C6B3eE457b193A49794df466957441b4AccD102
# Amoy contract addresses
AMOY_MATIC_X := 0xFD837d45dd6Af18D039122301C3331D4A4307351
AMOY_CHILD_POOL := 0x54a994B66FA7eA7160D6281002B56a041db0b5a5
AMOY_FX_CHILD := 0xE5930336866d0388f0f745A2d9207C7781047C0f
AMOY_FX_STATE_CHILD_TUNNEL := 0xDC5e26af83c1694A655beBe22689f12A42573d94
AMOY_MANAGER := 0x8C6B3eE457b193A49794df466957441b4AccD102
AMOY_TREASURY := 0x8C6B3eE457b193A49794df466957441b4AccD102
AMOY_INSTANT_POOL_OWNER := 0x8C6B3eE457b193A49794df466957441b4AccD102
AMOY_DEPLOYER := 0x8C6B3eE457b193A49794df466957441b4AccD102
# Ethereum (Preprod) contract addresses
ETHEREUM_PREPROD_VALIDATOR_REGISTRY := 0xcEbaFD96Df8a1Cc63ee77770296F14B68089Ab04
ETHEREUM_PREPROD_VALIDATOR_REGISTRY_IMPLEMENTATION := 0xaC72d5A7078F5E6B1661c0c4fe036573c771e568
ETHEREUM_PREPROD_MATIC_X := 0xD22dd194B8ec2abEeeFAC36a69cd8898FB6C43b3
ETHEREUM_PREPROD_MATIC_X_IMPLEMENTATION := 0xA5Fdb8D80621AA2DE1Ac5600EF9997cb88D1fEA0
ETHEREUM_PREPROD_FX_STATE_ROOT_TUNNEL := 0xcD7AdBBF3030AFFa7766606c5EA9E016141422Ca
ETHEREUM_PREPROD_TIMELOCK_CONTROLLER := 0x420d319efe3Dd573Ccf3219dDdf60C83902B9f10
ETHEREUM_PREPROD_STAKE_MANAGER := 0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908
ETHEREUM_PREPROD_CHECKPOINT_MANAGER := 0x86E4Dc95c7FBdBf52e33D563BbDB00823894C287
ETHEREUM_PREPROD_FX_ROOT := 0xfe5e5D361b2ad62c541bAb87C45a0B9B018389a2
ETHEREUM_PREPROD_MATIC := 0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0
ETHEREUM_PREPROD_POL := 0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6
ETHEREUM_PREPROD_MANAGER := 0xf9CBb2BF3f14c9F6De3F16fc0da4bAaDa25ebDC7
ETHEREUM_PREPROD_TREASURY := 0xf9CBb2BF3f14c9F6De3F16fc0da4bAaDa25ebDC7
ETHEREUM_PREPROD_DEPLOYER := 0x6FCBE6C2d6f6c890fD0cC5b0288E2D474D90BB1F
# Ethereum (Prod) contract addresses
ETHEREUM_PROD_VALIDATOR_REGISTRY := 0xf556442D5B77A4B0252630E15d8BbE2160870d77
ETHEREUM_PROD_VALIDATOR_REGISTRY_IMPLEMENTATION := 0xaC72d5A7078F5E6B1661c0c4fe036573c771e568
ETHEREUM_PROD_MATIC_X := 0xf03A7Eb46d01d9EcAA104558C732Cf82f6B6B645
ETHEREUM_PROD_MATIC_X_IMPLEMENTATION := 0xA5Fdb8D80621AA2DE1Ac5600EF9997cb88D1fEA0
ETHEREUM_PROD_FX_STATE_ROOT_TUNNEL := 0x40FB804Cc07302b89EC16a9f8d040506f64dFe29
ETHEREUM_PROD_TIMELOCK_CONTROLLER := 0x20Ea6f63de406040E1e4B67aD98E84A0Eb3778Be
ETHEREUM_PROD_STAKE_MANAGER := 0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908
ETHEREUM_PROD_CHECKPOINT_MANAGER := 0x86E4Dc95c7FBdBf52e33D563BbDB00823894C287
ETHEREUM_PROD_FX_ROOT := 0xfe5e5D361b2ad62c541bAb87C45a0B9B018389a2
ETHEREUM_PROD_MATIC := 0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0
ETHEREUM_PROD_POL := 0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6
ETHEREUM_PROD_MANAGER := 0x80A43dd35382C4919991C5Bca7f46Dd24Fde4C67
ETHEREUM_PROD_TREASURY := 0x01422247a1d15BB4FcF91F5A077Cf25BA6460130
ETHEREUM_PROD_DEPLOYER := 0x75db63125A4f04E59A1A2Ab4aCC4FC1Cd5Daddd5
# Polygon (Preprod) contract addresses
POLYGON_PREPROD_MATIC_X := 0x797Ea002716E9a91F764721bBf3C4F34548B87F8
POLYGON_PREPROD_CHILD_POOL := 0x86182711ee76085444FD66E8a4d58A15f9b6EfAC
POLYGON_PREPROD_FX_CHILD := 0x8397259c983751DAf40400790063935a11afa28a
POLYGON_PREPROD_FX_STATE_CHILD_TUNNEL := 0x976BdbC06B84349C003A4C7Afeb2bAbdfd689bAa
POLYGON_PREPROD_MANAGER := 0x6FCBE6C2d6f6c890fD0cC5b0288E2D474D90BB1F
POLYGON_PREPROD_TREASURY := 0x6FCBE6C2d6f6c890fD0cC5b0288E2D474D90BB1F
POLYGON_PREPROD_INSTANT_POOL_OWNER := 0x6FCBE6C2d6f6c890fD0cC5b0288E2D474D90BB1F
POLYGON_PREPROD_DEPLOYER := 0x6FCBE6C2d6f6c890fD0cC5b0288E2D474D90BB1F
# Polygon (Prod) contract addresses
POLYGON_PROD_MATIC_X := 0xfa68FB4628DFF1028CFEc22b4162FCcd0d45efb6
POLYGON_PROD_CHILD_POOL := 0xfd225C9e6601C9d38d8F98d8731BF59eFcF8C0E3
POLYGON_PROD_FX_CHILD := 0x8397259c983751DAf40400790063935a11afa28a
POLYGON_PROD_FX_STATE_CHILD_TUNNEL := 0x97E58a6950D86d751082D5e1d350e74c19047570
POLYGON_PROD_MANAGER := 0x80A43dd35382C4919991C5Bca7f46Dd24Fde4C67
POLYGON_PROD_TREASURY := 0x80A43dd35382C4919991C5Bca7f46Dd24Fde4C67
POLYGON_PROD_INSTANT_POOL_OWNER := 0x51358004cFe135E64453d7F6a0dC433CAba09A2a
POLYGON_PROD_DEPLOYER := 0x75db63125A4f04E59A1A2Ab4aCC4FC1Cd5Daddd5
# Contract paths
CONTRACT_PATH_VALIDATOR_REGISTRY := contracts/ValidatorRegistry.sol
CONTRACT_PATH_MATIC_X := contracts/MaticX.sol
CONTRACT_PATH_CHILD_POOL := contracts/ChildPool.sol
# Contract data
VALIDATOR_REGISTRY_VERSION := 2
MATIC_X_VERSION := 2
MATIC_X_FEE_PERCENT := 1100
TIMELOCK_CONTROLLER_SHORT_DELAY := 300
TIMELOCK_CONTROLLER_LONG_DELAY := 86400
all: hardhat
hardhat: deploy-validatorregistry-hardhat deploy-childpool-hardhat deploy-fxstateroottunnel-hardhat deploy-fxstatechildtunnel-hardhat
localhost: deploy-validatorregistry-localhost deploy-fxstateroottunnel-localhost deploy-fxstatechildtunnel-localhost deploy-childpool-localhost deploy-timelockcontroller-localhost
# Deploy the ValidatorRegistry contract
deploy-validatorregistry-hardhat:
$(BIN_HARDHAT) deploy:validator-registry --network $(NETWORK_HARDHAT) --stake-manager $(HARDHAT_STAKE_MANAGER) --matic $(HARDHAT_MATIC) --matic-x $(HARDHAT_MATIC_X) --manager $(HARDHAT_MANAGER)
deploy-validatorregistry-localhost:
$(BIN_HARDHAT) deploy:validator-registry --network $(NETWORK_LOCALHOST) --stake-manager $(LOCALHOST_STAKE_MANAGER) --matic $(LOCALHOST_MATIC) --matic-x $(LOCALHOST_MATIC_X) --manager $(LOCALHOST_MANAGER)
deploy-validatorregistry-sepolia:
$(BIN_HARDHAT) deploy:validator-registry --network $(NETWORK_SEPOLIA) --stake-manager $(SEPOLIA_STAKE_MANAGER) --matic $(SEPOLIA_MATIC) --matic-x $(SEPOLIA_MATIC_X) --manager $(SEPOLIA_MANAGER)
deploy-validatorregistry-ethereum-preprod:
$(BIN_HARDHAT) deploy:validator-registry --network $(NETWORK_ETHEREUM) --stake-manager $(ETHEREUM_PREPROD_STAKE_MANAGER) --matic $(ETHEREUM_PREPROD_MATIC) --matic-x $(ETHEREUM_PREPROD_MATIC_X) --manager $(ETHEREUM_PREPROD_MANAGER)
deploy-validatorregistry-ethereum-prod:
$(BIN_HARDHAT) deploy:validator-registry --network $(NETWORK_ETHEREUM) --stake-manager $(ETHEREUM_PROD_STAKE_MANAGER) --matic $(ETHEREUM_PROD_MATIC) --matic-x $(ETHEREUM_PROD_MATIC_X) --manager $(ETHEREUM_PROD_MANAGER)
# Deploy the MaticX contract
deploy-maticx-hardhat:
$(BIN_HARDHAT) deploy:matic-x --network $(NETWORK_HARDHAT) --validator-registry $(HARDHAT_VALIDATOR_REGISTRY) --stake-manager $(HARDHAT_STAKE_MANAGER) --matic $(HARDHAT_MATIC) --manager $(HARDHAT_MANAGER) --treasury $(HARDHAT_TREASURY)
deploy-maticx-localhost:
$(BIN_HARDHAT) deploy:matic-x --network $(NETWORK_LOCALHOST) --validator-registry $(LOCALHOST_VALIDATOR_REGISTRY) --stake-manager $(LOCALHOST_STAKE_MANAGER) --matic $(LOCALHOST_MATIC) --manager $(LOCALHOST_MANAGER) --treasury $(LOCALHOST_TREASURY)
deploy-maticx-sepolia:
$(BIN_HARDHAT) deploy:matic-x --network $(NETWORK_SEPOLIA) --validator-registry $(SEPOLIA_VALIDATOR_REGISTRY) --stake-manager $(SEPOLIA_STAKE_MANAGER) --matic $(SEPOLIA_MATIC) --manager $(SEPOLIA_MANAGER) --treasury $(SEPOLIA_TREASURY)
deploy-maticx-amoy:
$(BIN_HARDHAT) deploy:u-child-erc20 --network $(NETWORK_AMOY) --name "Liquid Staking Matic (PoS)" --symbol "MaticX" --child-chain-manager $(AMOY_MANAGER)
deploy-maticx-ethereum-preprod:
$(BIN_HARDHAT) deploy:matic-x --network $(NETWORK_ETHEREUM) --validator-registry $(ETHEREUM_PREPROD_VALIDATOR_REGISTRY) --stake-manager $(ETHEREUM_PREPROD_STAKE_MANAGER) --matic $(ETHEREUM_PREPROD_MATIC) --manager $(ETHEREUM_PREPROD_MANAGER) --treasury $(ETHEREUM_PREPROD_TREASURY)
deploy-maticx-ethereum-prod:
$(BIN_HARDHAT) deploy:matic-x --network $(NETWORK_ETHEREUM) --validator-registry $(ETHEREUM_PROD_VALIDATOR_REGISTRY) --stake-manager $(ETHEREUM_PROD_STAKE_MANAGER) --matic $(ETHEREUM_PROD_MATIC) --manager $(ETHEREUM_PROD_MANAGER) --treasury $(ETHEREUM_PROD_TREASURY)
deploy-maticx-polygon-preprod:
$(BIN_HARDHAT) deploy:u-child-erc20 --network $(NETWORK_POLYGON) --name "Liquid Staking Matic (PoS)" --symbol "MaticX" --child-chain-manager $(POLYGON_PREPROD_MANAGER)
deploy-maticx-polygon-prod:
$(BIN_HARDHAT) deploy:u-child-erc20 --network $(NETWORK_POLYGON) --name "Liquid Staking Matic (PoS)" --symbol "MaticX" --child-chain-manager $(POLYGON_PROD_MANAGER)
# Deploy the ChildPool contract
deploy-childpool-hardhat:
$(BIN_HARDHAT) deploy:child-pool --network $(NETWORK_HARDHAT) --fx-state-child-tunnel $(HARDHAT_FX_STATE_CHILD_TUNNEL) --matic-x $(HARDHAT_MATIC_X) --manager $(HARDHAT_MANAGER) --instant-pool-owner $(HARDHAT_INSTANT_POOL_OWNER) --treasury $(HARDHAT_TREASURY)
deploy-childpool-localhost:
$(BIN_HARDHAT) deploy:child-pool --network $(NETWORK_LOCALHOST) --fx-state-child-tunnel $(LOCALHOST_FX_STATE_CHILD_TUNNEL) --matic-x $(LOCALHOST_MATIC_X) --manager $(LOCALHOST_MANAGER) --instant-pool-owner $(LOCALHOST_INSTANT_POOL_OWNER) --treasury $(LOCALHOST_TREASURY)
deploy-childpool-amoy:
$(BIN_HARDHAT) deploy:child-pool --network $(NETWORK_AMOY) --fx-state-child-tunnel $(AMOY_FX_STATE_CHILD_TUNNEL) --matic-x $(AMOY_MATIC_X) --manager $(AMOY_MANAGER) --instant-pool-owner $(AMOY_INSTANT_POOL_OWNER) --treasury $(AMOY_TREASURY)
deploy-childpool-polygon-preprod:
$(BIN_HARDHAT) deploy:child-pool --network $(NETWORK_POLYGON) --fx-state-child-tunnel $(POLYGON_PREPROD_FX_STATE_CHILD_TUNNEL) --matic-x $(POLYGON_PREPROD_MATIC_X) --manager $(POLYGON_PREPROD_MANAGER) --instant-pool-owner $(POLYGON_PREPROD_INSTANT_POOL_OWNER) --treasury $(POLYGON_PREPROD_TREASURY)
deploy-childpool-polygon-prod:
$(BIN_HARDHAT) deploy:child-pool --network $(NETWORK_POLYGON) --fx-state-child-tunnel $(POLYGON_PROD_FX_STATE_CHILD_TUNNEL) --matic-x $(POLYGON_PROD_MATIC_X) --manager $(POLYGON_PROD_MANAGER) --instant-pool-owner $(POLYGON_PROD_INSTANT_POOL_OWNER) --treasury $(POLYGON_PROD_TREASURY)
# Deploy the FxStateRootTunnel contract
deploy-fxstateroottunnel-hardhat:
$(BIN_HARDHAT) deploy:fx-state-root-tunnel --network $(NETWORK_HARDHAT) --checkpoint-manager $(HARDHAT_CHECKPOINT_MANAGER) --fx-root $(HARDHAT_FX_ROOT) --matic-x $(HARDHAT_MATIC_X)
deploy-fxstateroottunnel-localhost:
$(BIN_HARDHAT) deploy:fx-state-root-tunnel --network $(NETWORK_LOCALHOST) --checkpoint-manager $(LOCALHOST_CHECKPOINT_MANAGER) --fx-root $(LOCALHOST_FX_ROOT) --matic-x $(LOCALHOST_MATIC_X)
deploy-fxstateroottunnel-sepolia:
$(BIN_HARDHAT) deploy:fx-state-root-tunnel --network $(NETWORK_SEPOLIA) --checkpoint-manager $(SEPOLIA_CHECKPOINT_MANAGER) --fx-root $(SEPOLIA_FX_ROOT) --matic-x $(SEPOLIA_MATIC_X)
deploy-fxstateroottunnel-ethereum-preprod:
$(BIN_HARDHAT) deploy:fx-state-root-tunnel --network $(NETWORK_ETHEREUM) --checkpoint-manager $(ETHEREUM_PREPROD_CHECKPOINT_MANAGER) --fx-root $(ETHEREUM_PREPROD_FX_ROOT) --matic-x $(ETHEREUM_PREPROD_MATIC_X)
deploy-fxstateroottunnel-ethereum-prod:
$(BIN_HARDHAT) deploy:fx-state-root-tunnel --network $(NETWORK_ETHEREUM) --checkpoint-manager $(ETHEREUM_PROD_CHECKPOINT_MANAGER) --fx-root $(ETHEREUM_PROD_FX_ROOT) --matic-x $(ETHEREUM_PROD_MATIC_X)
# Deploy the FxStateChildTunnel contract
deploy-fxstatechildtunnel-hardhat:
$(BIN_HARDHAT) deploy:fx-state-child-tunnel --network $(NETWORK_HARDHAT) --fx-child $(HARDHAT_FX_CHILD)
deploy-fxstatechildtunnel-localhost:
$(BIN_HARDHAT) deploy:fx-state-child-tunnel --network $(NETWORK_LOCALHOST) --fx-child $(LOCALHOST_FX_CHILD)
deploy-fxstatechildtunnel-amoy:
$(BIN_HARDHAT) deploy:fx-state-child-tunnel --network $(NETWORK_AMOY) --fx-child $(AMOY_FX_CHILD)
deploy-fxstatechildtunnel-polygon-preprod:
$(BIN_HARDHAT) deploy:fx-state-child-tunnel --network $(NETWORK_POLYGON) --fx-child $(POLYGON_PREPROD_FX_CHILD)
deploy-fxstatechildtunnel-polygon-prod:
$(BIN_HARDHAT) deploy:fx-state-child-tunnel --network $(NETWORK_POLYGON) --fx-child $(POLYGON_PROD_FX_CHILD)
# Deploy the TimelockController contract
deploy-timelockcontroller-hardhat:
$(BIN_HARDHAT) deploy:timelock-controller --network $(NETWORK_HARDHAT) --min-delay $(TIMELOCK_CONTROLLER_SHORT_DELAY) --manager $(HARDHAT_MANAGER)
deploy-timelockcontroller-localhost:
$(BIN_HARDHAT) deploy:timelock-controller --network $(NETWORK_LOCALHOST) --min-delay $(TIMELOCK_CONTROLLER_SHORT_DELAY) --manager $(LOCALHOST_MANAGER)
deploy-timelockcontroller-sepolia:
$(BIN_HARDHAT) deploy:timelock-controller --network $(NETWORK_SEPOLIA) --min-delay $(TIMELOCK_CONTROLLER_SHORT_DELAY) --manager $(SEPOLIA_MANAGER)
deploy-timelockcontroller-ethereum-preprod:
$(BIN_HARDHAT) deploy:timelock-controller --network $(NETWORK_ETHEREUM) --min-delay $(TIMELOCK_CONTROLLER_SHORT_DELAY) --manager $(ETHEREUM_PREPROD_MANAGER)
deploy-timelockcontroller-ethereum-prod:
$(BIN_HARDHAT) deploy:timelock-controller --network $(NETWORK_ETHEREUM) --min-delay $(TIMELOCK_CONTROLLER_LONG_DELAY) --manager $(ETHEREUM_PROD_MANAGER)
# Deploy an implementation of the MaticX contract
deployimplementation-maticx-localhost:
$(BIN_HARDHAT) deploy-implementation --network $(NETWORK_LOCALHOST) --name MaticX
deployimplementation-maticx-sepolia:
$(BIN_HARDHAT) deploy-implementation --network $(NETWORK_SEPOLIA) --name MaticX
deployimplementation-maticx-ethereum-preprod:
$(BIN_HARDHAT) deploy-implementation --network $(NETWORK_ETHEREUM) --name MaticX
deployimplementation-maticx-ethereum-prod:
$(BIN_HARDHAT) deploy-implementation --network $(NETWORK_ETHEREUM) --name MaticX
# Deploy an implementation of the ValidatorRegistry contract
deployimplementation-validatorregistry-localhost:
$(BIN_HARDHAT) deploy-implementation --network $(NETWORK_LOCALHOST) --name ValidatorRegistry
deployimplementation-validatorregistry-sepolia:
$(BIN_HARDHAT) deploy-implementation --network $(NETWORK_SEPOLIA) --name ValidatorRegistry
deployimplementation-validatorregistry-ethereum-preprod:
$(BIN_HARDHAT) deploy-implementation --network $(NETWORK_ETHEREUM) --name ValidatorRegistry
deployimplementation-validatorregistry-ethereum-prod:
$(BIN_HARDHAT) deploy-implementation --network $(NETWORK_ETHEREUM) --name ValidatorRegistry
# Deploy an implementation of the ChildPool contract
deployimplementation-childpool-localhost:
$(BIN_HARDHAT) deploy-implementation --network $(NETWORK_LOCALHOST) --name ChildPool
deployimplementation-childpool-amoy:
$(BIN_HARDHAT) deploy-implementation --network $(NETWORK_AMOY) --name ChildPool
deployimplementation-childpool-polygon-preprod:
$(BIN_HARDHAT) deploy-implementation --network $(NETWORK_POLYGON) --name ChildPool
deployimplementation-childpool-polygon-prod:
$(BIN_HARDHAT) deploy-implementation --network $(NETWORK_POLYGON) --name ChildPool
# Upgrade the ValidatorRegistry contract
upgrade-validatorregistry-localhost:
$(BIN_HARDHAT) upgrade-contract --network $(NETWORK_LOCALHOST) --name ValidatorRegistry --contract $(LOCALHOST_VALIDATOR_REGISTRY)
upgrade-validatorregistry-sepolia:
$(BIN_HARDHAT) upgrade-contract --network $(NETWORK_SEPOLIA) --name ValidatorRegistry --contract $(SEPOLIA_VALIDATOR_REGISTRY)
upgrade-validatorregistry-ethereum-preprod:
$(BIN_HARDHAT) upgrade-contract --network $(NETWORK_ETHEREUM) --name ValidatorRegistry --contract $(ETHEREUM_PREPROD_VALIDATOR_REGISTRY)
upgrade-validatorregistry-ethereum-prod:
$(BIN_HARDHAT) upgrade-contract --network $(NETWORK_ETHEREUM) --name ValidatorRegistry --contract $(ETHEREUM_PROD_VALIDATOR_REGISTRY)
# Upgrade the MaticX contract
upgrade-maticx-localhost:
$(BIN_HARDHAT) upgrade-contract --network $(NETWORK_LOCALHOST) --name MaticX --contract $(LOCALHOST_MATIC_X)
upgrade-maticx-sepolia:
$(BIN_HARDHAT) upgrade-contract --network $(NETWORK_SEPOLIA) --name MaticX --contract $(SEPOLIA_MATIC_X)
upgrade-maticx-ethereum-preprod:
$(BIN_HARDHAT) upgrade-contract --network $(NETWORK_ETHEREUM) --name MaticX --contract $(ETHEREUM_PREPROD_MATIC_X)
upgrade-maticx-ethereum-prod:
$(BIN_HARDHAT) upgrade-contract --network $(NETWORK_ETHEREUM) --name MaticX --contract $(ETHEREUM_PROD_MATIC_X)
# Verify the ValidatorRegistry proxy contract
verify-validatorregistry-sepolia:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_SEPOLIA) --contract $(SEPOLIA_VALIDATOR_REGISTRY)
verify-validatorregistry-ethereum-preprod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PREPROD_VALIDATOR_REGISTRY)
verify-validatorregistry-ethereum-prod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PROD_VALIDATOR_REGISTRY)
# Verify the ValidatorRegistry implementation contract
verify-validatorregistryimplementation-ethereum-preprod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PREPROD_VALIDATOR_REGISTRY_IMP)
verify-validatorregistryimplementation-ethereum-prod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PROD_VALIDATOR_REGISTRY)
# Verify the MaticX proxy contract
verify-maticx-sepolia:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_SEPOLIA) --contract $(SEPOLIA_MATIC_X)
verify-maticx-amoy:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_AMOY) --contract $(AMOY_MATIC_X)
verify-maticx-ethereum-preprod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PREPROD_MATIC_X)
verify-maticx-ethereum-prod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PROD_MATIC_X)
verify-maticx-polygon-preprod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_POLYGON) --contract $(POLYGON_PREPROD_MATIC_X)
verify-maticx-polygon-prod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_POLYGON) --contract $(POLYGON_PROD_MATIC_X)
# Verify the MaticX implementation contract
verify-maticximplementation-ethereum-preprod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PREPROD_MATIC_X_IMPLEMENTATION)
verify-maticximplementation-ethereum-prod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PROD_MATIC_X_IMPLEMENTATION)
# Verify the ChildPool contract
verify-childpool-amoy:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_AMOY) --contract $(AMOY_CHILD_POOL)
verify-childpool-polygon-preprod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_POLYGON) --contract $(POLYGON_PREPROD_CHILD_POOL)
verify-childpool-polygon-prod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_POLYGON) --contract $(POLYGON_PROD_CHILD_POOL)
# Verify the FxStateRootTunnel contract
verify-fxstateroottunnel-sepolia:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_SEPOLIA) --contract $(SEPOLIA_FX_STATE_ROOT_TUNNEL) "$(SEPOLIA_CHECKPOINT_MANAGER)" "$(SEPOLIA_FX_ROOT)" "$(SEPOLIA_MATIC_X)"
verify-fxstateroottunnel-ethereum-preprod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PREPROD_FX_STATE_ROOT_TUNNEL) "$(ETHEREUM_PREPROD_CHECKPOINT_MANAGER)" "$(ETHEREUM_PREPROD_FX_ROOT)" "$(ETHEREUM_PREPROD_MATIC_X)"
verify-fxstateroottunnel-ethereum-prod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PROD_FX_STATE_ROOT_TUNNEL) "$(ETHEREUM_PROD_CHECKPOINT_MANAGER)" "$(ETHEREUM_PROD_FX_ROOT)" "$(ETHEREUM_PROD_MATIC_X)"
# Verify the TimelockController contract
verify-timelockcontroller-sepolia:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_SEPOLIA) --contract $(SEPOLIA_TIMELOCK_CONTROLLER) "$(TIMELOCK_CONTROLLER_SHORT_DELAY)" "[$(SEPOLIA_MANAGER)]" "[$(SEPOLIA_MANAGER)]" "$(SEPOLIA_MANAGER)"
verify-timelockcontroller-ethereum-preprod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PREPROD_TIMELOCK_CONTROLLER) "$(TIMELOCK_CONTROLLER_SHORT_DELAY)" "[$(ETHEREUM_PREPROD_MANAGER)]" "[$(ETHEREUM_PREPROD_MANAGER)]" "$(ETHEREUM_PREPROD_MANAGER)"
verify-timelockcontroller-ethereum-prod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PROD_TIMELOCK_CONTROLLER) "$(TIMELOCK_CONTROLLER_LONG_DELAY)" "[$(ETHEREUM_PROD_MANAGER)]" "[$(ETHEREUM_PROD_MANAGER)]" "$(ETHEREUM_PROD_MANAGER)"
# Verify the FxStateChildTunnel contract
verify-fxstatechildtunnel-amoy:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_AMOY) --contract $(AMOY_FX_STATE_CHILD_TUNNEL) "$(AMOY_FX_CHILD)"
verify-fxstatechildtunnel-polygon-preprod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_POLYGON) --contract $(POLYGON_PREPROD_FX_STATE_CHILD_TUNNEL) "$(POLYGON_PREPROD_FX_CHILD)"
verify-fxstatechildtunnel-polygon-prod:
$(BIN_HARDHAT) verify-contract --network $(NETWORK_POLYGON) --contract $(POLYGON_PROD_FX_STATE_CHILD_TUNNEL) "$(POLYGON_PROD_FX_CHILD)"
# Import the ValidatorRegistry contract
import-validatorregistry-sepolia:
$(BIN_HARDHAT) import-contract --network $(NETWORK_SEPOLIA) --name ValidatorRegistry --contract $(SEPOLIA_VALIDATOR_REGISTRY)
import-validatorregistry-ethereum-preprod:
$(BIN_HARDHAT) import-contract --network $(NETWORK_ETHEREUM) --name ValidatorRegistry --contract $(ETHEREUM_PREPROD_VALIDATOR_REGISTRY)
import-validatorregistry-ethereum-prod:
$(BIN_HARDHAT) import-contract --network $(NETWORK_ETHEREUM) --name ValidatorRegistry --contract $(ETHEREUM_PROD_VALIDATOR_REGISTRY)
# Import the MaticX contract
import-maticx-sepolia:
$(BIN_HARDHAT) import-contract --network $(NETWORK_SEPOLIA) --name MaticX --contract $(SEPOLIA_MATIC_X)
import-maticx-ethereum-preprod:
$(BIN_HARDHAT) import-contract --network $(NETWORK_ETHEREUM) --name MaticX --contract $(ETHEREUM_PREPROD_MATIC_X)
import-maticx-ethereum-prod:
$(BIN_HARDHAT) import-contract --network $(NETWORK_ETHEREUM) --name MaticX --contract $(ETHEREUM_PROD_MATIC_X)
# Initialize v2 the ValidatorRegistry contract
initializev2-validatorregistry-sepolia:
$(BIN_HARDHAT) initialize-v2:validator-registry --network $(NETWORK_SEPOLIA) --contract $(SEPOLIA_VALIDATOR_REGISTRY) --pol $(SEPOLIA_POL)
initializev2-validatorregistry-ethereum-preprod:
$(BIN_HARDHAT) initialize-v2:validator-registry --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PREPROD_VALIDATOR_REGISTRY) --pol $(ETHEREUM_PREPROD_POL)
initializev2-validatorregistry-ethereum-prod:
$(BIN_HARDHAT) initialize-v2:validator-registry --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PROD_VALIDATOR_REGISTRY) --pol $(ETHEREUM_PROD_POL)
# Initialize v2 the MaticX contract
initializev2-maticx-sepolia:
$(BIN_HARDHAT) initialize-v2:matic-x --network $(NETWORK_SEPOLIA) --contract $(SEPOLIA_MATIC_X) --pol $(SEPOLIA_POL)
initializev2-maticx-ethereum-preprod:
$(BIN_HARDHAT) initialize-v2:matic-x --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PREPROD_MATIC_X) --pol $(ETHEREUM_PREPROD_POL)
initializev2-maticx-ethereum-prod:
$(BIN_HARDHAT) initialize-v2:matic-x --network $(NETWORK_ETHEREUM) --contract $(ETHEREUM_PROD_MATIC_X) --pol $(ETHEREUM_PROD_POL)
# Generate initializeV2 calldata for the ValidatorRegistry contract
generateinitializev2calldata-validatorregistry-ethereum-preprod:
$(BIN_HARDHAT) generate-initializev2-calldata-validator-registry --network $(NETWORK_ETHEREUM) --validator-registry-proxy $(ETHEREUM_PREPROD_VALIDATOR_REGISTRY) --validator-registry-implementation $(ETHEREUM_PREPROD_VALIDATOR_REGISTRY_IMPLEMENTATION) --pol $(ETHEREUM_PREPROD_POL)
generateinitializev2calldata-validatorregistry-ethereum-prod:
$(BIN_HARDHAT) generate-initializev2-calldata-validator-registry --network $(NETWORK_ETHEREUM) --validator-registry-proxy $(ETHEREUM_PROD_VALIDATOR_REGISTRY) --validator-registry-implementation $(ETHEREUM_PROD_VALIDATOR_REGISTRY_IMPLEMENTATION) --pol $(ETHEREUM_PROD_POL)
# Generate initializeV2 calldata for the MaticX contract
generateinitializev2calldata-maticx-ethereum-preprod:
$(BIN_HARDHAT) generate-initializev2-calldata-matic-x --network $(NETWORK_ETHEREUM) --matic-x-proxy $(ETHEREUM_PREPROD_MATIC_X) --matic-x-implementation $(ETHEREUM_PREPROD_MATIC_X_IMPLEMENTATION) --pol $(ETHEREUM_PREPROD_POL)
generateinitializev2calldata-maticx-ethereum-prod:
$(BIN_HARDHAT) generate-initializev2-calldata-matic-x --network $(NETWORK_ETHEREUM) --matic-x-proxy $(ETHEREUM_PROD_MATIC_X) --matic-x-implementation $(ETHEREUM_PROD_MATIC_X_IMPLEMENTATION) --pol $(ETHEREUM_PROD_POL)
# Validate the parent deployment
validateparentdeployment-sepolia:
$(BIN_HARDHAT) validate-parent-deployment --network $(NETWORK_SEPOLIA) --validator-registry $(SEPOLIA_VALIDATOR_REGISTRY) --matic-x $(SEPOLIA_MATIC_X) --fx-state-root-tunnel $(SEPOLIA_FX_STATE_ROOT_TUNNEL) --fx-state-child-tunnel $(AMOY_FX_STATE_CHILD_TUNNEL) --stake-manager $(SEPOLIA_STAKE_MANAGER) --checkpoint-manager $(SEPOLIA_CHECKPOINT_MANAGER) --fx-root $(SEPOLIA_FX_ROOT) --matic $(SEPOLIA_MATIC) --pol $(SEPOLIA_POL) --manager $(SEPOLIA_MANAGER) --treasury $(SEPOLIA_TREASURY) --deployer $(SEPOLIA_DEPLOYER) --matic-x-version $(MATIC_X_VERSION) --validator-registry-version $(VALIDATOR_REGISTRY_VERSION) --fee-percent $(MATIC_X_FEE_PERCENT)
validateparentdeployment-ethereum-preprod:
$(BIN_HARDHAT) validate-parent-deployment --network $(NETWORK_ETHEREUM) --validator-registry $(ETHEREUM_PREPROD_VALIDATOR_REGISTRY) --matic-x $(ETHEREUM_PREPROD_MATIC_X) --fx-state-root-tunnel $(ETHEREUM_PREPROD_FX_STATE_ROOT_TUNNEL) --fx-state-child-tunnel $(POLYGON_PREPROD_FX_STATE_CHILD_TUNNEL) --stake-manager $(ETHEREUM_PREPROD_STAKE_MANAGER) --checkpoint-manager $(ETHEREUM_PREPROD_CHECKPOINT_MANAGER) --fx-root $(ETHEREUM_PREPROD_FX_ROOT) --matic $(ETHEREUM_PREPROD_MATIC) --pol $(ETHEREUM_PREPROD_POL) --manager $(ETHEREUM_PREPROD_MANAGER) --treasury $(ETHEREUM_PREPROD_TREASURY) --deployer $(ETHEREUM_PREPROD_DEPLOYER) --matic-x-version $(MATIC_X_VERSION) --validator-registry-version $(VALIDATOR_REGISTRY_VERSION) --fee-percent $(MATIC_X_FEE_PERCENT)
# Validate the child deployment
validatechilddeployment-amoy:
$(BIN_HARDHAT) validate-child-deployment --network $(NETWORK_AMOY) --child-pool $(AMOY_CHILD_POOL) --matic-x $(AMOY_MATIC_X) --fx-state-child-tunnel $(AMOY_FX_STATE_CHILD_TUNNEL) --fx-state-root-tunnel $(SEPOLIA_FX_STATE_ROOT_TUNNEL) --fx-child $(AMOY_FX_CHILD) --manager $(AMOY_MANAGER) --treasury $(AMOY_TREASURY) --instant-pool-owner $(AMOY_INSTANT_POOL_OWNER) --deployer $(AMOY_DEPLOYER)
validatechilddeployment-polygon-preprod:
$(BIN_HARDHAT) validate-child-deployment --network $(NETWORK_POLYGON) --child-pool $(POLYGON_PREPROD_CHILD_POOL) --matic-x $(POLYGON_PREPROD_MATIC_X) --fx-state-child-tunnel $(POLYGON_PREPROD_FX_STATE_CHILD_TUNNEL) --fx-state-root-tunnel $(ETHEREUM_PREPROD_FX_STATE_ROOT_TUNNEL) --fx-child $(POLYGON_PREPROD_FX_CHILD) --manager $(POLYGON_PREPROD_MANAGER) --treasury $(POLYGON_PREPROD_TREASURY) --instant-pool-owner $(POLYGON_PREPROD_INSTANT_POOL_OWNER) --deployer $(POLYGON_PREPROD_DEPLOYER)
# Validate environment deployment
validatedeployment-testnet: validateparentdeployment-sepolia validatechilddeployment-amoy
validatedeployment-ethereum-preprod: validateparentdeployment-ethereum-preprod validatechilddeployment-polygon-preprod
# Analyze contracts with mythril
analyze-mytrhil-validatorregistry:
$(BIN_MYTH) analyze $(CONTRACT_PATH_VALIDATOR_REGISTRY) --solc-json $(CONFIG_SOLC)
analyze-mytrhil-maticx:
$(BIN_MYTH) analyze $(CONTRACT_PATH_MATIC_X) --solc-json $(CONFIG_SOLC)
# Fuzz test contracts with echidna
fuzz-echidna-maticx:
$(BIN_ECHIDNA) . --contract FuzzMaticX $(CONFIG_ECHIDNA)