@@ -3,7 +3,7 @@ import { ethers } from "hardhat";
3
3
4
4
import { Contract } from "ethers" ;
5
5
import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers" ;
6
- import { deployContractWithoutArgs , deployContractWithArgs , storeAddresses } from "./utils" ;
6
+ import { deployContractWithoutArgs , deployContractWithArgs , storeAddresses , getInstance } from "./utils" ;
7
7
import { chainIds } from "../constants/networks" ;
8
8
9
9
import { executorAddress , transmitterAddress , EXECUTOR_ROLE , sealGasLimit } from "../constants/config" ;
@@ -35,59 +35,88 @@ export const main = async () => {
35
35
36
36
const network = hre . network . name ;
37
37
38
- const signatureVerifier : Contract = await deployContractWithoutArgs (
39
- "SignatureVerifier" ,
40
- socketSigner ,
41
- "contracts/utils/SignatureVerifier.sol"
42
- ) ;
43
- addresses [ "SignatureVerifier" ] = signatureVerifier . address ;
44
- await storeAddresses ( addresses , chainIds [ network ] ) ;
38
+ let signatureVerifier : Contract ;
39
+ if ( ! addresses [ "SignatureVerifier" ] ) {
40
+ signatureVerifier = await deployContractWithoutArgs (
41
+ "SignatureVerifier" ,
42
+ socketSigner ,
43
+ "contracts/utils/SignatureVerifier.sol"
44
+ ) ;
45
+ addresses [ "SignatureVerifier" ] = signatureVerifier . address ;
46
+ await storeAddresses ( addresses , chainIds [ network ] ) ;
47
+ } else {
48
+ signatureVerifier = await getInstance ( "SignatureVerifier" , addresses [ "SignatureVerifier" ] ) ;
49
+ }
45
50
46
- const hasher : Contract = await deployContractWithoutArgs (
47
- "Hasher" ,
48
- socketSigner ,
49
- "contracts/utils/Hasher.sol"
50
- ) ;
51
- addresses [ "Hasher" ] = hasher . address ;
52
- await storeAddresses ( addresses , chainIds [ network ] ) ;
51
+ let hasher : Contract ;
52
+ if ( ! addresses [ "Hasher" ] ) {
53
+ hasher = await deployContractWithoutArgs (
54
+ "Hasher" ,
55
+ socketSigner ,
56
+ "contracts/utils/Hasher.sol"
57
+ ) ;
58
+ addresses [ "Hasher" ] = hasher . address ;
59
+ await storeAddresses ( addresses , chainIds [ network ] ) ;
60
+ } else {
61
+ hasher = await getInstance ( "Hasher" , addresses [ "Hasher" ] ) ;
62
+ }
53
63
54
- const capacitorFactory : Contract = await deployContractWithoutArgs (
55
- "CapacitorFactory" ,
56
- socketSigner ,
57
- "contracts/CapacitorFactory.sol"
58
- ) ;
59
- addresses [ "CapacitorFactory" ] = capacitorFactory . address ;
60
- await storeAddresses ( addresses , chainIds [ network ] ) ;
61
-
62
- const gasPriceOracle : Contract = await deployContractWithArgs (
63
- "GasPriceOracle" ,
64
- [ socketSigner . address , chainIds [ network ] ] ,
65
- socketSigner ,
66
- "contracts/GasPriceOracle.sol"
67
- ) ;
64
+ let capacitorFactory : Contract ;
65
+ if ( ! addresses [ "CapacitorFactory" ] ) {
66
+ capacitorFactory = await deployContractWithoutArgs (
67
+ "CapacitorFactory" ,
68
+ socketSigner ,
69
+ "contracts/CapacitorFactory.sol"
70
+ ) ;
71
+ addresses [ "CapacitorFactory" ] = capacitorFactory . address ;
72
+ await storeAddresses ( addresses , chainIds [ network ] ) ;
73
+ } else {
74
+ capacitorFactory = await getInstance ( "CapacitorFactory" , addresses [ "CapacitorFactory" ] ) ;
75
+ }
68
76
69
- addresses [ "GasPriceOracle" ] = gasPriceOracle . address ;
70
- await storeAddresses ( addresses , chainIds [ network ] ) ;
77
+ let gasPriceOracle : Contract ;
78
+ if ( ! addresses [ "GasPriceOracle" ] ) {
79
+ gasPriceOracle = await deployContractWithArgs (
80
+ "GasPriceOracle" ,
81
+ [ socketSigner . address , chainIds [ network ] ] ,
82
+ socketSigner ,
83
+ "contracts/GasPriceOracle.sol"
84
+ ) ;
85
+ addresses [ "GasPriceOracle" ] = gasPriceOracle . address ;
86
+ await storeAddresses ( addresses , chainIds [ network ] ) ;
87
+ } else {
88
+ gasPriceOracle = await getInstance ( "GasPriceOracle" , addresses [ "GasPriceOracle" ] ) ;
89
+ }
71
90
72
- const executionManager : Contract = await deployContractWithArgs (
73
- "ExecutionManager" ,
74
- [ gasPriceOracle . address , socketSigner . address ] ,
75
- socketSigner ,
76
- "contracts/ExecutionManager.sol"
77
- ) ;
78
- addresses [ "ExecutionManager" ] = executionManager . address ;
79
- await storeAddresses ( addresses , chainIds [ network ] ) ;
80
-
81
- const transmitManager : Contract = await deployContractWithArgs (
82
- "TransmitManager" ,
83
- [ signatureVerifier . address , gasPriceOracle . address , socketSigner . address , chainIds [ network ] , sealGasLimit [ network ] ] ,
84
- socketSigner ,
85
- "contracts/TransmitManager.sol"
86
- ) ;
87
- addresses [ "TransmitManager" ] = transmitManager . address ;
88
- await storeAddresses ( addresses , chainIds [ network ] ) ;
91
+ let executionManager : Contract ;
92
+ if ( ! addresses [ "ExecutionManager" ] ) {
93
+ executionManager = await deployContractWithArgs (
94
+ "ExecutionManager" ,
95
+ [ gasPriceOracle . address , socketSigner . address ] ,
96
+ socketSigner ,
97
+ "contracts/ExecutionManager.sol"
98
+ ) ;
99
+ addresses [ "ExecutionManager" ] = executionManager . address ;
100
+ await storeAddresses ( addresses , chainIds [ network ] ) ;
101
+ } else {
102
+ executionManager = await getInstance ( "ExecutionManager" , addresses [ "ExecutionManager" ] ) ;
103
+ }
104
+
105
+ let transmitManager : Contract ;
106
+ if ( ! addresses [ "TransmitManager" ] ) {
107
+ transmitManager = await deployContractWithArgs (
108
+ "TransmitManager" ,
109
+ [ signatureVerifier . address , gasPriceOracle . address , socketSigner . address , chainIds [ network ] , sealGasLimit [ network ] ] ,
110
+ socketSigner ,
111
+ "contracts/TransmitManager.sol"
112
+ ) ;
113
+ addresses [ "TransmitManager" ] = transmitManager . address ;
114
+ await storeAddresses ( addresses , chainIds [ network ] ) ;
115
+ } else {
116
+ transmitManager = await getInstance ( "TransmitManager" , addresses [ "TransmitManager" ] ) ;
117
+ }
89
118
90
- const tmAddress : string = await gasPriceOracle . transmitManager ( ) ;
119
+ const tmAddress : string = await gasPriceOracle . transmitManager__ ( ) ;
91
120
if ( tmAddress . toLowerCase ( ) !== ( transmitManager . address ) . toLowerCase ( ) ) {
92
121
const tx = await gasPriceOracle
93
122
. connect ( socketSigner )
@@ -99,32 +128,41 @@ export const main = async () => {
99
128
const transmitter = transmitterAddress [ network ] ;
100
129
101
130
const grantTransmitterRoleTxn = await transmitManager
102
- . connect ( socketSigner )
103
- . grantTransmitterRole ( chainIds [ network ] , transmitter ) ;
131
+ . connect ( socketSigner )
132
+ . grantTransmitterRole ( chainIds [ network ] , transmitter ) ;
104
133
105
134
console . log ( `Setting transmitter manager in oracle has transactionHash: ${ grantTransmitterRoleTxn . hash } ` ) ;
106
135
await grantTransmitterRoleTxn . wait ( ) ;
107
136
}
108
137
109
- const socket : Contract = await deployContractWithArgs (
110
- "Socket" ,
111
- [
112
- chainIds [ network ] ,
113
- hasher . address ,
114
- transmitManager . address ,
115
- executionManager . address ,
116
- capacitorFactory . address ,
117
- ] ,
118
- socketSigner ,
119
- "contracts/socket/Socket.sol"
120
- ) ;
121
- addresses [ "Socket" ] = socket . address ;
122
- await storeAddresses ( addresses , chainIds [ network ] ) ;
123
-
138
+ let socket : Contract ;
139
+ if ( ! addresses [ "Socket" ] ) {
140
+ socket = await deployContractWithArgs (
141
+ "Socket" ,
142
+ [
143
+ chainIds [ network ] ,
144
+ hasher . address ,
145
+ transmitManager . address ,
146
+ executionManager . address ,
147
+ capacitorFactory . address ,
148
+ ] ,
149
+ socketSigner ,
150
+ "contracts/socket/Socket.sol"
151
+ ) ;
152
+ addresses [ "Socket" ] = socket . address ;
153
+ await storeAddresses ( addresses , chainIds [ network ] ) ;
154
+ } else {
155
+ socket = await getInstance ( "Socket" , addresses [ "Socket" ] ) ;
156
+ }
124
157
// plug deployments
125
- const counter : Contract = await deployContractWithArgs ( "Counter" , [ socket . address ] , counterSigner , "contracts/examples/Counter.sol" ) ;
126
- addresses [ "Counter" ] = counter . address ;
127
- await storeAddresses ( addresses , chainIds [ network ] ) ;
158
+ let counter : Contract ;
159
+ if ( ! addresses [ "Counter" ] ) {
160
+ counter = await deployContractWithArgs ( "Counter" , [ socket . address ] , counterSigner , "contracts/examples/Counter.sol" ) ;
161
+ addresses [ "Counter" ] = counter . address ;
162
+ await storeAddresses ( addresses , chainIds [ network ] ) ;
163
+ } else {
164
+ socket = await getInstance ( "Counter" , addresses [ "Counter" ] ) ;
165
+ }
128
166
console . log ( "Contracts deployed!" ) ;
129
167
130
168
// configure
0 commit comments