@@ -2,10 +2,9 @@ package api
2
2
3
3
import (
4
4
"fmt"
5
- "strings"
6
-
7
5
"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
@@ -22,15 +21,29 @@ const (
22
21
23
22
var ganacheTokenAddress = common .HexToAddress ("0x8571Ddc46b10d31EF963aF49b6C7799Ea7eff818" )
24
23
24
+ func proxyUrl (stageName , provider , chainName , networkName string ) string {
25
+ return fmt .Sprintf ("https://%s.api.status.im/%s/%s/%s/" , stageName , provider , chainName , networkName )
26
+ }
27
+
25
28
func mainnet (stageName string ) params.Network {
29
+ chainID := mainnetChainID
30
+ chainName := "ethereum"
31
+ networkName := "mainnet"
32
+
33
+ rpcProviders := []params.RpcProvider {
34
+ // Proxy providers
35
+ * params .NewProxyProvider (chainID , "proxy-nodefleet" , proxyUrl (stageName , "nodefleet" , chainName , networkName ), false ),
36
+ * params .NewProxyProvider (chainID , "proxy-infura" , proxyUrl (stageName , "infura" , chainName , networkName ), false ),
37
+ * params .NewProxyProvider (chainID , "proxy-grove" , proxyUrl (stageName , "grove" , chainName , networkName ), false ),
38
+ // Direct providers
39
+ * params .NewDirectProvider (chainID , "direct-infura" , "https://mainnet.infura.io/v3/" , true ),
40
+ * params .NewDirectProvider (chainID , "direct-grove" , "https://eth-archival.rpc.grove.city/v1/" , false ),
41
+ }
42
+
26
43
return params.Network {
27
- ChainID : mainnetChainID ,
44
+ ChainID : chainID ,
28
45
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/" ,
46
+ RpcProviders : rpcProviders ,
34
47
BlockExplorerURL : "https://etherscan.io/" ,
35
48
IconURL : "network/Network=Ethereum" ,
36
49
ChainColor : "#627EEA" ,
@@ -44,16 +57,25 @@ func mainnet(stageName string) params.Network {
44
57
RelatedChainID : sepoliaChainID ,
45
58
}
46
59
}
47
-
48
60
func sepolia (stageName string ) params.Network {
61
+ chainID := sepoliaChainID
62
+ chainName := "ethereum"
63
+ networkName := "sepolia"
64
+
65
+ rpcProviders := []params.RpcProvider {
66
+ // Proxy providers
67
+ * params .NewProxyProvider (chainID , "proxy-nodefleet" , proxyUrl (stageName , "nodefleet" , chainName , networkName ), false ),
68
+ * params .NewProxyProvider (chainID , "proxy-infura" , proxyUrl (stageName , "infura" , chainName , networkName ), false ),
69
+ * params .NewProxyProvider (chainID , "proxy-grove" , proxyUrl (stageName , "grove" , chainName , networkName ), true ),
70
+ // Direct providers
71
+ * params .NewDirectProvider (chainID , "direct-infura" , "https://sepolia.infura.io/v3/" , true ),
72
+ * params .NewDirectProvider (chainID , "direct-grove" , "https://sepolia-archival.rpc.grove.city/v1/" , false ),
73
+ }
74
+
49
75
return params.Network {
50
- ChainID : sepoliaChainID ,
51
- 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/" ,
76
+ ChainID : chainID ,
77
+ ChainName : "Sepolia" ,
78
+ RpcProviders : rpcProviders ,
57
79
BlockExplorerURL : "https://sepolia.etherscan.io/" ,
58
80
IconURL : "network/Network=Ethereum" ,
59
81
ChainColor : "#627EEA" ,
@@ -67,16 +89,25 @@ func sepolia(stageName string) params.Network {
67
89
RelatedChainID : mainnetChainID ,
68
90
}
69
91
}
70
-
71
92
func optimism (stageName string ) params.Network {
93
+ chainID := optimismChainID
94
+ chainName := "optimism"
95
+ networkName := "mainnet"
96
+
97
+ rpcProviders := []params.RpcProvider {
98
+ // Proxy providers
99
+ * params .NewProxyProvider (chainID , "proxy-nodefleet" , proxyUrl (stageName , "nodefleet" , chainName , networkName ), false ),
100
+ * params .NewProxyProvider (chainID , "proxy-infura" , proxyUrl (stageName , "infura" , chainName , networkName ), false ),
101
+ * params .NewProxyProvider (chainID , "proxy-grove" , proxyUrl (stageName , "grove" , chainName , networkName ), true ),
102
+ // Direct providers
103
+ * params .NewDirectProvider (chainID , "direct-infura" , "https://optimism-mainnet.infura.io/v3/" , true ),
104
+ * params .NewDirectProvider (chainID , "direct-grove" , "https://optimism-archival.rpc.grove.city/v1/" , false ),
105
+ }
106
+
72
107
return params.Network {
73
- ChainID : optimismChainID ,
108
+ ChainID : chainID ,
74
109
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/" ,
110
+ RpcProviders : rpcProviders ,
80
111
BlockExplorerURL : "https://optimistic.etherscan.io" ,
81
112
IconURL : "network/Network=Optimism" ,
82
113
ChainColor : "#E90101" ,
@@ -90,16 +121,25 @@ func optimism(stageName string) params.Network {
90
121
RelatedChainID : optimismSepoliaChainID ,
91
122
}
92
123
}
93
-
94
124
func optimismSepolia (stageName string ) params.Network {
125
+ chainID := optimismSepoliaChainID
126
+ chainName := "optimism"
127
+ networkName := "sepolia"
128
+
129
+ rpcProviders := []params.RpcProvider {
130
+ // Proxy providers
131
+ * params .NewProxyProvider (chainID , "proxy-nodefleet" , proxyUrl (stageName , "nodefleet" , chainName , networkName ), false ),
132
+ * params .NewProxyProvider (chainID , "proxy-infura" , proxyUrl (stageName , "infura" , chainName , networkName ), false ),
133
+ * params .NewProxyProvider (chainID , "proxy-grove" , proxyUrl (stageName , "grove" , chainName , networkName ), true ),
134
+ // Direct providers
135
+ * params .NewDirectProvider (chainID , "direct-infura" , "https://optimism-sepolia.infura.io/v3/" , true ),
136
+ * params .NewDirectProvider (chainID , "direct-grove" , "https://optimism-sepolia-archival.rpc.grove.city/v1/" , false ),
137
+ }
138
+
95
139
return params.Network {
96
- ChainID : optimismSepoliaChainID ,
140
+ ChainID : chainID ,
97
141
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/" ,
142
+ RpcProviders : rpcProviders ,
103
143
BlockExplorerURL : "https://sepolia-optimism.etherscan.io/" ,
104
144
IconURL : "network/Network=Optimism" ,
105
145
ChainColor : "#E90101" ,
@@ -113,16 +153,25 @@ func optimismSepolia(stageName string) params.Network {
113
153
RelatedChainID : optimismChainID ,
114
154
}
115
155
}
116
-
117
156
func arbitrum (stageName string ) params.Network {
157
+ chainID := arbitrumChainID
158
+ chainName := "arbitrum"
159
+ networkName := "mainnet"
160
+
161
+ rpcProviders := []params.RpcProvider {
162
+ // Proxy providers
163
+ * params .NewProxyProvider (chainID , "proxy-nodefleet" , proxyUrl (stageName , "nodefleet" , chainName , networkName ), false ),
164
+ * params .NewProxyProvider (chainID , "proxy-infura" , proxyUrl (stageName , "infura" , chainName , networkName ), false ),
165
+ * params .NewProxyProvider (chainID , "proxy-grove" , proxyUrl (stageName , "grove" , chainName , networkName ), true ),
166
+ // Direct providers
167
+ * params .NewDirectProvider (chainID , "direct-infura" , "https://arbitrum-mainnet.infura.io/v3/" , true ),
168
+ * params .NewDirectProvider (chainID , "direct-grove" , "https://arbitrum-one.rpc.grove.city/v1/" , false ),
169
+ }
170
+
118
171
return params.Network {
119
- ChainID : arbitrumChainID ,
172
+ ChainID : chainID ,
120
173
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/" ,
174
+ RpcProviders : rpcProviders ,
126
175
BlockExplorerURL : "https://arbiscan.io/" ,
127
176
IconURL : "network/Network=Arbitrum" ,
128
177
ChainColor : "#51D0F0" ,
@@ -136,16 +185,25 @@ func arbitrum(stageName string) params.Network {
136
185
RelatedChainID : arbitrumSepoliaChainID ,
137
186
}
138
187
}
139
-
140
188
func arbitrumSepolia (stageName string ) params.Network {
189
+ chainID := arbitrumSepoliaChainID
190
+ chainName := "arbitrum"
191
+ networkName := "sepolia"
192
+
193
+ rpcProviders := []params.RpcProvider {
194
+ // Proxy providers
195
+ * params .NewProxyProvider (chainID , "proxy-nodefleet" , proxyUrl (stageName , "nodefleet" , chainName , networkName ), false ),
196
+ * params .NewProxyProvider (chainID , "proxy-infura" , proxyUrl (stageName , "infura" , chainName , networkName ), false ),
197
+ * params .NewProxyProvider (chainID , "proxy-grove" , proxyUrl (stageName , "grove" , chainName , networkName ), true ),
198
+ // Direct providers
199
+ * params .NewDirectProvider (chainID , "direct-infura" , "https://arbitrum-sepolia.infura.io/v3/" , true ),
200
+ * params .NewDirectProvider (chainID , "direct-grove" , "https://arbitrum-sepolia-archival.rpc.grove.city/v1/" , false ),
201
+ }
202
+
141
203
return params.Network {
142
- ChainID : arbitrumSepoliaChainID ,
204
+ ChainID : chainID ,
143
205
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/" ,
206
+ RpcProviders : rpcProviders ,
149
207
BlockExplorerURL : "https://sepolia-explorer.arbitrum.io/" ,
150
208
IconURL : "network/Network=Arbitrum" ,
151
209
ChainColor : "#51D0F0" ,
@@ -177,44 +235,18 @@ var mainnetGanacheTokenOverrides = params.TokenOverride{
177
235
}
178
236
179
237
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
238
+ authTokens := map [string ]string {
239
+ "infura.io" : request .InfuraToken ,
240
+ "grove.city" : request .PoktToken ,
195
241
}
196
242
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 )
243
+ updatedNetworks := networkhelper .OverrideDirectProvidersAuth (networks , authTokens )
244
+
245
+ if request .GanacheURL != "" {
246
+ updatedNetworks = networkhelper .OverrideGanacheToken (updatedNetworks , request .GanacheURL , mainnetChainID , mainnetGanacheTokenOverrides )
215
247
}
216
248
217
- return networksWithRPC
249
+ return updatedNetworks
218
250
}
219
251
220
252
func BuildDefaultNetworks (walletSecretsConfig * requests.WalletSecretsConfig ) []params.Network {
0 commit comments