@@ -2,10 +2,9 @@ package api
2
2
3
3
import (
4
4
"fmt"
5
- "strings"
6
5
7
- "github.com/ethereum/go-ethereum/common"
8
6
"github.com/status-im/status-go/params"
7
+ "github.com/status-im/status-go/params/networkhelper"
9
8
"github.com/status-im/status-go/protocol/requests"
10
9
)
11
10
@@ -20,17 +19,29 @@ const (
20
19
sttSymbol = "STT"
21
20
)
22
21
23
- var ganacheTokenAddress = common .HexToAddress ("0x8571Ddc46b10d31EF963aF49b6C7799Ea7eff818" )
22
+ func proxyUrl (stageName , provider , chainName , networkName string ) string {
23
+ return fmt .Sprintf ("https://%s.api.status.im/%s/%s/%s/" , stageName , provider , chainName , networkName )
24
+ }
24
25
25
26
func mainnet (stageName string ) params.Network {
27
+ chainID := MainnetChainID
28
+ chainName := "ethereum"
29
+ networkName := "mainnet"
30
+
31
+ rpcProviders := []params.RpcProvider {
32
+ // Proxy providers
33
+ * params .NewProxyProvider (chainID , "proxy-nodefleet" , proxyUrl (stageName , "nodefleet" , chainName , networkName ), false ),
34
+ * params .NewProxyProvider (chainID , "proxy-infura" , proxyUrl (stageName , "infura" , chainName , networkName ), false ),
35
+ * params .NewProxyProvider (chainID , "proxy-grove" , proxyUrl (stageName , "grove" , chainName , networkName ), false ),
36
+ // Direct providers
37
+ * params .NewDirectProvider (chainID , "direct-infura" , "https://mainnet.infura.io/v3/" , true ),
38
+ * params .NewDirectProvider (chainID , "direct-grove" , "https://eth-archival.rpc.grove.city/v1/" , false ),
39
+ }
40
+
26
41
return params.Network {
27
- ChainID : MainnetChainID ,
42
+ ChainID : chainID ,
28
43
ChainName : "Mainnet" ,
29
- DefaultRPCURL : fmt .Sprintf ("https://%s.api.status.im/nodefleet/ethereum/mainnet/" , stageName ),
30
- DefaultFallbackURL : fmt .Sprintf ("https://%s.api.status.im/infura/ethereum/mainnet/" , stageName ),
31
- DefaultFallbackURL2 : fmt .Sprintf ("https://%s.api.status.im/grove/ethereum/mainnet/" , stageName ),
32
- RPCURL : "https://mainnet.infura.io/v3/" ,
33
- FallbackURL : "https://eth-archival.rpc.grove.city/v1/" ,
44
+ RpcProviders : rpcProviders ,
34
45
BlockExplorerURL : "https://etherscan.io/" ,
35
46
IconURL : "network/Network=Ethereum" ,
36
47
ChainColor : "#627EEA" ,
@@ -46,14 +57,24 @@ func mainnet(stageName string) params.Network {
46
57
}
47
58
48
59
func sepolia (stageName string ) params.Network {
60
+ chainID := SepoliaChainID
61
+ chainName := "ethereum"
62
+ networkName := "sepolia"
63
+
64
+ rpcProviders := []params.RpcProvider {
65
+ // Proxy providers
66
+ * params .NewProxyProvider (chainID , "proxy-nodefleet" , proxyUrl (stageName , "nodefleet" , chainName , networkName ), false ),
67
+ * params .NewProxyProvider (chainID , "proxy-infura" , proxyUrl (stageName , "infura" , chainName , networkName ), false ),
68
+ * params .NewProxyProvider (chainID , "proxy-grove" , proxyUrl (stageName , "grove" , chainName , networkName ), true ),
69
+ // Direct providers
70
+ * params .NewDirectProvider (chainID , "direct-infura" , "https://sepolia.infura.io/v3/" , true ),
71
+ * params .NewDirectProvider (chainID , "direct-grove" , "https://sepolia-archival.rpc.grove.city/v1/" , false ),
72
+ }
73
+
49
74
return params.Network {
50
- ChainID : SepoliaChainID ,
75
+ ChainID : chainID ,
51
76
ChainName : "Mainnet" ,
52
- DefaultRPCURL : fmt .Sprintf ("https://%s.api.status.im/nodefleet/ethereum/sepolia/" , stageName ),
53
- DefaultFallbackURL : fmt .Sprintf ("https://%s.api.status.im/infura/ethereum/sepolia/" , stageName ),
54
- DefaultFallbackURL2 : fmt .Sprintf ("https://%s.api.status.im/grove/ethereum/sepolia/" , stageName ),
55
- RPCURL : "https://sepolia.infura.io/v3/" ,
56
- FallbackURL : "https://sepolia-archival.rpc.grove.city/v1/" ,
77
+ RpcProviders : rpcProviders ,
57
78
BlockExplorerURL : "https://sepolia.etherscan.io/" ,
58
79
IconURL : "network/Network=Ethereum" ,
59
80
ChainColor : "#627EEA" ,
@@ -67,16 +88,25 @@ func sepolia(stageName string) params.Network {
67
88
RelatedChainID : MainnetChainID ,
68
89
}
69
90
}
70
-
71
91
func optimism (stageName string ) params.Network {
92
+ chainID := OptimismChainID
93
+ chainName := "optimism"
94
+ networkName := "mainnet"
95
+
96
+ rpcProviders := []params.RpcProvider {
97
+ // Proxy providers
98
+ * params .NewProxyProvider (chainID , "proxy-nodefleet" , proxyUrl (stageName , "nodefleet" , chainName , networkName ), false ),
99
+ * params .NewProxyProvider (chainID , "proxy-infura" , proxyUrl (stageName , "infura" , chainName , networkName ), false ),
100
+ * params .NewProxyProvider (chainID , "proxy-grove" , proxyUrl (stageName , "grove" , chainName , networkName ), true ),
101
+ // Direct providers
102
+ * params .NewDirectProvider (chainID , "direct-infura" , "https://optimism-mainnet.infura.io/v3/" , true ),
103
+ * params .NewDirectProvider (chainID , "direct-grove" , "https://optimism-archival.rpc.grove.city/v1/" , false ),
104
+ }
105
+
72
106
return params.Network {
73
- ChainID : OptimismChainID ,
107
+ ChainID : chainID ,
74
108
ChainName : "Optimism" ,
75
- DefaultRPCURL : fmt .Sprintf ("https://%s.api.status.im/nodefleet/optimism/mainnet/" , stageName ),
76
- DefaultFallbackURL : fmt .Sprintf ("https://%s.api.status.im/infura/optimism/mainnet/" , stageName ),
77
- DefaultFallbackURL2 : fmt .Sprintf ("https://%s.api.status.im/grove/optimism/mainnet/" , stageName ),
78
- RPCURL : "https://optimism-mainnet.infura.io/v3/" ,
79
- FallbackURL : "https://optimism-archival.rpc.grove.city/v1/" ,
109
+ RpcProviders : rpcProviders ,
80
110
BlockExplorerURL : "https://optimistic.etherscan.io" ,
81
111
IconURL : "network/Network=Optimism" ,
82
112
ChainColor : "#E90101" ,
@@ -90,16 +120,25 @@ func optimism(stageName string) params.Network {
90
120
RelatedChainID : OptimismSepoliaChainID ,
91
121
}
92
122
}
93
-
94
123
func optimismSepolia (stageName string ) params.Network {
124
+ chainID := OptimismSepoliaChainID
125
+ chainName := "optimism"
126
+ networkName := "sepolia"
127
+
128
+ rpcProviders := []params.RpcProvider {
129
+ // Proxy providers
130
+ * params .NewProxyProvider (chainID , "proxy-nodefleet" , proxyUrl (stageName , "nodefleet" , chainName , networkName ), false ),
131
+ * params .NewProxyProvider (chainID , "proxy-infura" , proxyUrl (stageName , "infura" , chainName , networkName ), false ),
132
+ * params .NewProxyProvider (chainID , "proxy-grove" , proxyUrl (stageName , "grove" , chainName , networkName ), true ),
133
+ // Direct providers
134
+ * params .NewDirectProvider (chainID , "direct-infura" , "https://optimism-sepolia.infura.io/v3/" , true ),
135
+ * params .NewDirectProvider (chainID , "direct-grove" , "https://optimism-sepolia-archival.rpc.grove.city/v1/" , false ),
136
+ }
137
+
95
138
return params.Network {
96
- ChainID : OptimismSepoliaChainID ,
139
+ ChainID : chainID ,
97
140
ChainName : "Optimism" ,
98
- DefaultRPCURL : fmt .Sprintf ("https://%s.api.status.im/nodefleet/optimism/sepolia/" , stageName ),
99
- DefaultFallbackURL : fmt .Sprintf ("https://%s.api.status.im/infura/optimism/sepolia/" , stageName ),
100
- DefaultFallbackURL2 : fmt .Sprintf ("https://%s.api.status.im/grove/optimism/sepolia/" , stageName ),
101
- RPCURL : "https://optimism-sepolia.infura.io/v3/" ,
102
- FallbackURL : "https://optimism-sepolia-archival.rpc.grove.city/v1/" ,
141
+ RpcProviders : rpcProviders ,
103
142
BlockExplorerURL : "https://sepolia-optimism.etherscan.io/" ,
104
143
IconURL : "network/Network=Optimism" ,
105
144
ChainColor : "#E90101" ,
@@ -113,16 +152,25 @@ func optimismSepolia(stageName string) params.Network {
113
152
RelatedChainID : OptimismChainID ,
114
153
}
115
154
}
116
-
117
155
func arbitrum (stageName string ) params.Network {
156
+ chainID := ArbitrumChainID
157
+ chainName := "arbitrum"
158
+ networkName := "mainnet"
159
+
160
+ rpcProviders := []params.RpcProvider {
161
+ // Proxy providers
162
+ * params .NewProxyProvider (chainID , "proxy-nodefleet" , proxyUrl (stageName , "nodefleet" , chainName , networkName ), false ),
163
+ * params .NewProxyProvider (chainID , "proxy-infura" , proxyUrl (stageName , "infura" , chainName , networkName ), false ),
164
+ * params .NewProxyProvider (chainID , "proxy-grove" , proxyUrl (stageName , "grove" , chainName , networkName ), true ),
165
+ // Direct providers
166
+ * params .NewDirectProvider (chainID , "direct-infura" , "https://arbitrum-mainnet.infura.io/v3/" , true ),
167
+ * params .NewDirectProvider (chainID , "direct-grove" , "https://arbitrum-one.rpc.grove.city/v1/" , false ),
168
+ }
169
+
118
170
return params.Network {
119
- ChainID : ArbitrumChainID ,
171
+ ChainID : chainID ,
120
172
ChainName : "Arbitrum" ,
121
- DefaultRPCURL : fmt .Sprintf ("https://%s.api.status.im/nodefleet/arbitrum/mainnet/" , stageName ),
122
- DefaultFallbackURL : fmt .Sprintf ("https://%s.api.status.im/infura/arbitrum/mainnet/" , stageName ),
123
- DefaultFallbackURL2 : fmt .Sprintf ("https://%s.api.status.im/grove/arbitrum/mainnet/" , stageName ),
124
- RPCURL : "https://arbitrum-mainnet.infura.io/v3/" ,
125
- FallbackURL : "https://arbitrum-one.rpc.grove.city/v1/" ,
173
+ RpcProviders : rpcProviders ,
126
174
BlockExplorerURL : "https://arbiscan.io/" ,
127
175
IconURL : "network/Network=Arbitrum" ,
128
176
ChainColor : "#51D0F0" ,
@@ -136,16 +184,25 @@ func arbitrum(stageName string) params.Network {
136
184
RelatedChainID : ArbitrumSepoliaChainID ,
137
185
}
138
186
}
139
-
140
187
func arbitrumSepolia (stageName string ) params.Network {
188
+ chainID := ArbitrumSepoliaChainID
189
+ chainName := "arbitrum"
190
+ networkName := "sepolia"
191
+
192
+ rpcProviders := []params.RpcProvider {
193
+ // Proxy providers
194
+ * params .NewProxyProvider (chainID , "proxy-nodefleet" , proxyUrl (stageName , "nodefleet" , chainName , networkName ), false ),
195
+ * params .NewProxyProvider (chainID , "proxy-infura" , proxyUrl (stageName , "infura" , chainName , networkName ), false ),
196
+ * params .NewProxyProvider (chainID , "proxy-grove" , proxyUrl (stageName , "grove" , chainName , networkName ), true ),
197
+ // Direct providers
198
+ * params .NewDirectProvider (chainID , "direct-infura" , "https://arbitrum-sepolia.infura.io/v3/" , true ),
199
+ * params .NewDirectProvider (chainID , "direct-grove" , "https://arbitrum-sepolia-archival.rpc.grove.city/v1/" , false ),
200
+ }
201
+
141
202
return params.Network {
142
- ChainID : ArbitrumSepoliaChainID ,
203
+ ChainID : chainID ,
143
204
ChainName : "Arbitrum" ,
144
- DefaultRPCURL : fmt .Sprintf ("https://%s.api.status.im/nodefleet/arbitrum/sepolia/" , stageName ),
145
- DefaultFallbackURL : fmt .Sprintf ("https://%s.api.status.im/infura/arbitrum/sepolia/" , stageName ),
146
- DefaultFallbackURL2 : fmt .Sprintf ("https://%s.api.status.im/grove/arbitrum/sepolia/" , stageName ),
147
- RPCURL : "https://arbitrum-sepolia.infura.io/v3/" ,
148
- FallbackURL : "https://arbitrum-sepolia-archival.rpc.grove.city/v1/" ,
205
+ RpcProviders : rpcProviders ,
149
206
BlockExplorerURL : "https://sepolia-explorer.arbitrum.io/" ,
150
207
IconURL : "network/Network=Arbitrum" ,
151
208
ChainColor : "#51D0F0" ,
@@ -171,50 +228,12 @@ func defaultNetworks(stageName string) []params.Network {
171
228
}
172
229
}
173
230
174
- var mainnetGanacheTokenOverrides = params.TokenOverride {
175
- Symbol : sntSymbol ,
176
- Address : ganacheTokenAddress ,
177
- }
178
-
179
231
func setRPCs (networks []params.Network , request * requests.WalletSecretsConfig ) []params.Network {
180
-
181
- var networksWithRPC []params.Network
182
-
183
- const (
184
- infura = "infura.io/"
185
- grove = "grove.city/"
186
- )
187
-
188
- appendToken := func (url string ) string {
189
- if strings .Contains (url , infura ) && request .InfuraToken != "" {
190
- return url + request .InfuraToken
191
- } else if strings .Contains (url , grove ) && request .PoktToken != "" {
192
- return url + request .PoktToken
193
- }
194
- return url
232
+ authTokens := map [string ]string {
233
+ "infura.io" : request .InfuraToken ,
234
+ "grove.city" : request .PoktToken ,
195
235
}
196
-
197
- for _ , n := range networks {
198
- n .DefaultRPCURL = appendToken (n .DefaultRPCURL )
199
- n .DefaultFallbackURL = appendToken (n .DefaultFallbackURL )
200
- n .DefaultFallbackURL2 = appendToken (n .DefaultFallbackURL2 )
201
- n .RPCURL = appendToken (n .RPCURL )
202
- n .FallbackURL = appendToken (n .FallbackURL )
203
-
204
- if request .GanacheURL != "" {
205
- n .RPCURL = request .GanacheURL
206
- n .FallbackURL = request .GanacheURL
207
- if n .ChainID == MainnetChainID {
208
- n .TokenOverrides = []params.TokenOverride {
209
- mainnetGanacheTokenOverrides ,
210
- }
211
- }
212
- }
213
-
214
- networksWithRPC = append (networksWithRPC , n )
215
- }
216
-
217
- return networksWithRPC
236
+ return networkhelper .OverrideDirectProvidersAuth (networks , authTokens )
218
237
}
219
238
220
239
func BuildDefaultNetworks (walletSecretsConfig * requests.WalletSecretsConfig ) []params.Network {
0 commit comments