Skip to content

Commit f3a56db

Browse files
clemlakAlexangelj
authored andcommitted
feat: script and tool to manage deployments
1 parent 38a1aaf commit f3a56db

8 files changed

+187
-7
lines changed

.env.example

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
RELAYER_RINKEBY_API=
2+
RELAYER_RINKEBY_SECRET=
3+
ARBITRUM_PRIVATE_KEY=

hardhat.config.ts

+15
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,27 @@ import 'hardhat-gas-reporter'
77
import 'solidity-coverage'
88
import 'hardhat-contract-sizer'
99
import { HardhatUserConfig } from 'hardhat/config'
10+
import * as dotenv from 'dotenv'
11+
12+
dotenv.config()
13+
14+
const { ARBITRUM_PRIVATE_KEY } = process.env
1015

1116
const config: HardhatUserConfig = {
1217
networks: {
1318
hardhat: {
1419
allowUnlimitedContractSize: true,
1520
},
21+
arbitrumTestnet: {
22+
accounts: [ARBITRUM_PRIVATE_KEY],
23+
url: 'https://rinkeby.arbitrum.io/rpc',
24+
chainId: 421611,
25+
gasPrice: 0,
26+
},
27+
arbitrum: {
28+
url: 'https://arb1.arbitrum.io/rpc',
29+
chainId: 42161,
30+
},
1631
},
1732
solidity: {
1833
version: '0.8.0',

package.json

+4
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,16 @@
5151
"@typechain/ethers-v5": "^6.0.5",
5252
"@typechain/hardhat": "^1.0.1",
5353
"@types/chai": "^4.2.15",
54+
"@types/fs-extra": "^9.0.12",
5455
"@types/mocha": "^8.2.2",
5556
"@types/node": "^14.14.36",
5657
"bignumber.js": "^9.0.1",
5758
"chai": "^4.3.4",
59+
"defender-relay-client": "^1.8.0",
60+
"dotenv": "^10.0.0",
5861
"ethereum-waffle": "^3.3.0",
5962
"ethers": "^5.0.32",
63+
"fs-extra": "^10.0.0",
6064
"hardhat": "^2.3.0",
6165
"hardhat-contract-sizer": "^2.0.3",
6266
"hardhat-gas-reporter": "^1.0.4",

scripts/deploy.ts

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import hre from 'hardhat'
2+
3+
import { PrimitiveFactory__factory } from '../typechain'
4+
5+
async function main() {
6+
console.log('\n\n#-----------------------------------------------------#\n')
7+
console.log('Deploying to network:', hre.network.name)
8+
9+
const [deployer] = await hre.ethers.getSigners()
10+
console.log('Using wallet:', deployer.address)
11+
12+
const factory = await new PrimitiveFactory__factory(deployer).deploy()
13+
await factory.deployed()
14+
15+
console.log('\nPrimitive Factory deployed to:', factory.address)
16+
console.log('\n#-----------------------------------------------------#\n\n')
17+
}
18+
19+
main()
20+
.then(() => process.exit(0))
21+
.catch((error) => {
22+
console.error(error)
23+
process.exit(1)
24+
})

scripts/deploymentManager.ts

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import fs from 'fs-extra'
2+
3+
async function updateDeployments(chainId: number, contractName: string, address: string) {
4+
try {
5+
const file = await fs.readJson('./deployments.json', {
6+
encoding: 'utf-8',
7+
flag: 'a',
8+
})
9+
console.log(file)
10+
} catch (e) {
11+
console.error(e)
12+
}
13+
}
14+
15+
async function main() {
16+
await updateDeployments(0, 'Foo', '0x0')
17+
}
18+
19+
main()

tsconfig.json

+1-4
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,11 @@
77
"resolveJsonModule": true,
88
"preserveSymlinks": true,
99
"outDir": "dist",
10-
"typeRoots": ["./typechain", "./node_modules/@types"],
11-
"types": ["@nomiclabs/hardhat-ethers", "@nomiclabs/hardhat-waffle"],
1210
"noImplicitAny": false
1311
},
1412
"ts-node": {
1513
"files": true
1614
},
17-
"include": ["./test", "./src"],
18-
"exclude": ["node_modules"],
15+
"include": ["./test", "./src", "./scripts", "./types"],
1916
"files": ["./hardhat.config.ts"]
2017
}

types/node.d.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
declare namespace NodeJS {
2+
export interface ProcessEnv {
3+
RELAYER_RINKEBY_API: string
4+
RELAYER_RINKEBY_SECRET: string
5+
ARBITRUM_PRIVATE_KEY: string
6+
}
7+
}

yarn.lock

+114-3
Original file line numberDiff line numberDiff line change
@@ -928,6 +928,13 @@
928928
dependencies:
929929
"@types/node" "*"
930930

931+
"@types/fs-extra@^9.0.12":
932+
version "9.0.12"
933+
resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.12.tgz#9b8f27973df8a7a3920e8461517ebf8a7d4fdfaf"
934+
integrity sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw==
935+
dependencies:
936+
"@types/node" "*"
937+
931938
"@types/glob@^7.1.1":
932939
version "7.1.3"
933940
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
@@ -1222,6 +1229,17 @@ ajv@^6.10.2, ajv@^6.12.3, ajv@^6.6.1, ajv@^6.9.1:
12221229
json-schema-traverse "^0.4.1"
12231230
uri-js "^4.2.2"
12241231

1232+
amazon-cognito-identity-js@^4.3.3:
1233+
version "4.6.3"
1234+
resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-4.6.3.tgz#889410379a5fc5e883edc95f4ce233cc628e354c"
1235+
integrity sha512-MPVJfirbdmSGo7l4h7Kbn3ms1eJXT5Xq8ly+mCPPi8yAxaxdg7ouMUUNTqtDykoZxIdDLF/P6F3Zbg3dlGKOWg==
1236+
dependencies:
1237+
buffer "4.9.2"
1238+
crypto-js "^4.0.0"
1239+
fast-base64-decode "^1.0.0"
1240+
isomorphic-unfetch "^3.0.0"
1241+
js-cookie "^2.2.1"
1242+
12251243
amdefine@>=0.0.4:
12261244
version "1.0.1"
12271245
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
@@ -1485,6 +1503,13 @@ aws4@^1.8.0:
14851503
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
14861504
integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
14871505

1506+
axios@^0.19.2:
1507+
version "0.19.2"
1508+
resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27"
1509+
integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==
1510+
dependencies:
1511+
follow-redirects "1.5.10"
1512+
14881513
babel-code-frame@^6.26.0:
14891514
version "6.26.0"
14901515
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
@@ -2023,7 +2048,7 @@ base-x@^3.0.2, base-x@^3.0.8:
20232048
dependencies:
20242049
safe-buffer "^5.0.1"
20252050

2026-
base64-js@^1.3.1:
2051+
base64-js@^1.0.2, base64-js@^1.3.1:
20272052
version "1.5.1"
20282053
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
20292054
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
@@ -2270,6 +2295,15 @@ buffer-xor@^2.0.1:
22702295
dependencies:
22712296
safe-buffer "^5.1.1"
22722297

2298+
2299+
version "4.9.2"
2300+
resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
2301+
integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
2302+
dependencies:
2303+
base64-js "^1.0.2"
2304+
ieee754 "^1.1.4"
2305+
isarray "^1.0.0"
2306+
22732307
buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0:
22742308
version "5.7.1"
22752309
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
@@ -2961,6 +2995,11 @@ [email protected]:
29612995
randombytes "^2.0.0"
29622996
randomfill "^1.0.3"
29632997

2998+
crypto-js@^4.0.0:
2999+
version "4.0.0"
3000+
resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.0.0.tgz#2904ab2677a9d042856a2ea2ef80de92e4a36dcc"
3001+
integrity sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==
3002+
29643003
d@1, d@^1.0.1:
29653004
version "1.0.1"
29663005
resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
@@ -3007,6 +3046,13 @@ debug@4, debug@^4.0.1, debug@^4.1.1, debug@^4.3.1:
30073046
dependencies:
30083047
ms "2.1.2"
30093048

3049+
debug@=3.1.0:
3050+
version "3.1.0"
3051+
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
3052+
integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
3053+
dependencies:
3054+
ms "2.0.0"
3055+
30103056
debug@^3.1.0:
30113057
version "3.2.7"
30123058
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
@@ -3068,6 +3114,27 @@ deep-is@~0.1.3:
30683114
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
30693115
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
30703116

3117+
defender-base-client@^1.7.0:
3118+
version "1.7.0"
3119+
resolved "https://registry.yarnpkg.com/defender-base-client/-/defender-base-client-1.7.0.tgz#258033cde58ed7f256d721f77b7b30e49d4d680b"
3120+
integrity sha512-snNyKtxUZn8y0JewVAQDJUam1qESFnkJiOUNtutB07OzldUoA7R/n/xuu5LyM3z4ScvoXu6xeVe67xs2H60KKg==
3121+
dependencies:
3122+
amazon-cognito-identity-js "^4.3.3"
3123+
axios "^0.19.2"
3124+
lodash "^4.17.19"
3125+
node-fetch "^2.6.0"
3126+
3127+
defender-relay-client@^1.8.0:
3128+
version "1.8.0"
3129+
resolved "https://registry.yarnpkg.com/defender-relay-client/-/defender-relay-client-1.8.0.tgz#0e81b8667a600c03cb0b18053e70a503e3c04512"
3130+
integrity sha512-Ed37zcKCnNkyTE3Y2Re8c8eBP0ufU2jng8CyQ+5KPSGZqs3RVXZmJPLO4ADDWQtnE2ARb6Z3cpMmVm5Exwykog==
3131+
dependencies:
3132+
amazon-cognito-identity-js "^4.3.3"
3133+
axios "^0.19.2"
3134+
defender-base-client "^1.7.0"
3135+
lodash "^4.17.19"
3136+
node-fetch "^2.6.0"
3137+
30713138
defer-to-connect@^1.0.1:
30723139
version "1.1.3"
30733140
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
@@ -3213,6 +3280,11 @@ dot-prop@^5.1.0:
32133280
dependencies:
32143281
is-obj "^2.0.0"
32153282

3283+
dotenv@^10.0.0:
3284+
version "10.0.0"
3285+
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81"
3286+
integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==
3287+
32163288
dotignore@~0.1.2:
32173289
version "0.1.2"
32183290
resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905"
@@ -4232,6 +4304,11 @@ fake-merkle-patricia-tree@^1.0.1:
42324304
dependencies:
42334305
checkpoint-store "^1.1.0"
42344306

4307+
fast-base64-decode@^1.0.0:
4308+
version "1.0.0"
4309+
resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418"
4310+
integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==
4311+
42354312
fast-deep-equal@^3.1.1:
42364313
version "3.1.3"
42374314
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
@@ -4413,6 +4490,13 @@ flow-stoplight@^1.0.0:
44134490
resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b"
44144491
integrity sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s=
44154492

4493+
4494+
version "1.5.10"
4495+
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
4496+
integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
4497+
dependencies:
4498+
debug "=3.1.0"
4499+
44164500
follow-redirects@^1.12.1:
44174501
version "1.14.1"
44184502
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43"
@@ -4505,6 +4589,15 @@ fs-extra@^0.30.0:
45054589
path-is-absolute "^1.0.0"
45064590
rimraf "^2.2.8"
45074591

4592+
fs-extra@^10.0.0:
4593+
version "10.0.0"
4594+
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1"
4595+
integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==
4596+
dependencies:
4597+
graceful-fs "^4.2.0"
4598+
jsonfile "^6.0.1"
4599+
universalify "^2.0.0"
4600+
45084601
fs-extra@^4.0.2, fs-extra@^4.0.3:
45094602
version "4.0.3"
45104603
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
@@ -5207,7 +5300,7 @@ idna-uts46-hx@^2.3.1:
52075300
dependencies:
52085301
punycode "2.1.0"
52095302

5210-
ieee754@^1.1.13:
5303+
ieee754@^1.1.13, ieee754@^1.1.4:
52115304
version "1.2.1"
52125305
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
52135306
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
@@ -5677,7 +5770,7 @@ [email protected]:
56775770
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
56785771
integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
56795772

5680-
[email protected], isarray@~1.0.0:
5773+
[email protected], isarray@^1.0.0, isarray@~1.0.0:
56815774
version "1.0.0"
56825775
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
56835776
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
@@ -5699,6 +5792,14 @@ isobject@^3.0.0, isobject@^3.0.1:
56995792
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
57005793
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
57015794

5795+
isomorphic-unfetch@^3.0.0:
5796+
version "3.1.0"
5797+
resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f"
5798+
integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==
5799+
dependencies:
5800+
node-fetch "^2.6.1"
5801+
unfetch "^4.2.0"
5802+
57025803
isstream@~0.1.2:
57035804
version "0.1.2"
57045805
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -5712,6 +5813,11 @@ isurl@^1.0.0-alpha5:
57125813
has-to-string-tag-x "^1.2.0"
57135814
is-object "^1.0.1"
57145815

5816+
js-cookie@^2.2.1:
5817+
version "2.2.1"
5818+
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8"
5819+
integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==
5820+
57155821
[email protected], js-sha3@^0.5.7:
57165822
version "0.5.7"
57175823
resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7"
@@ -9426,6 +9532,11 @@ [email protected]:
94269532
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961"
94279533
integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==
94289534

9535+
unfetch@^4.2.0:
9536+
version "4.2.0"
9537+
resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be"
9538+
integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==
9539+
94299540
union-value@^1.0.0:
94309541
version "1.0.1"
94319542
resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"

0 commit comments

Comments
 (0)