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