Skip to content

Commit

Permalink
create clients using new data structs
Browse files Browse the repository at this point in the history
  • Loading branch information
friofry committed Dec 6, 2024
1 parent a833af7 commit dc9415f
Show file tree
Hide file tree
Showing 18 changed files with 183 additions and 394 deletions.
121 changes: 20 additions & 101 deletions api/default_networks.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@ package api

import (
"fmt"
"github.com/status-im/status-go/params/networkhelper"
"strings"

"github.com/ethereum/go-ethereum/common"
"github.com/status-im/status-go/params"
"github.com/status-im/status-go/params/networkhelper"
"github.com/status-im/status-go/protocol/requests"
)

Expand Down Expand Up @@ -43,16 +41,9 @@ func mainnet(stageName string) params.Network {
}

return params.Network{
ChainID: chainID,
ChainName: "Mainnet",
RpcProviders: rpcProviders,

DefaultRPCURL: fmt.Sprintf("https://%s.api.status.im/nodefleet/ethereum/mainnet/", stageName),
DefaultFallbackURL: fmt.Sprintf("https://%s.api.status.im/infura/ethereum/mainnet/", stageName),
DefaultFallbackURL2: fmt.Sprintf("https://%s.api.status.im/grove/ethereum/mainnet/", stageName),
RPCURL: "https://mainnet.infura.io/v3/",
FallbackURL: "https://eth-archival.rpc.grove.city/v1/",

ChainID: chainID,
ChainName: "Mainnet",
RpcProviders: rpcProviders,
BlockExplorerURL: "https://etherscan.io/",
IconURL: "network/Network=Ethereum",
ChainColor: "#627EEA",
Expand Down Expand Up @@ -82,16 +73,9 @@ func sepolia(stageName string) params.Network {
}

return params.Network{
ChainID: chainID,
ChainName: "Sepolia",
RpcProviders: rpcProviders,

DefaultRPCURL: fmt.Sprintf("https://%s.api.status.im/nodefleet/ethereum/mainnet/", stageName),
DefaultFallbackURL: fmt.Sprintf("https://%s.api.status.im/infura/ethereum/mainnet/", stageName),
DefaultFallbackURL2: fmt.Sprintf("https://%s.api.status.im/grove/ethereum/mainnet/", stageName),
RPCURL: "https://mainnet.infura.io/v3/",
FallbackURL: "https://eth-archival.rpc.grove.city/v1/",

ChainID: chainID,
ChainName: "Sepolia",
RpcProviders: rpcProviders,
BlockExplorerURL: "https://sepolia.etherscan.io/",
IconURL: "network/Network=Ethereum",
ChainColor: "#627EEA",
Expand Down Expand Up @@ -121,16 +105,9 @@ func optimism(stageName string) params.Network {
}

return params.Network{
ChainID: chainID,
ChainName: "Optimism",
RpcProviders: rpcProviders,

DefaultRPCURL: fmt.Sprintf("https://%s.api.status.im/nodefleet/ethereum/mainnet/", stageName),
DefaultFallbackURL: fmt.Sprintf("https://%s.api.status.im/infura/ethereum/mainnet/", stageName),
DefaultFallbackURL2: fmt.Sprintf("https://%s.api.status.im/grove/ethereum/mainnet/", stageName),
RPCURL: "https://mainnet.infura.io/v3/",
FallbackURL: "https://eth-archival.rpc.grove.city/v1/",

ChainID: chainID,
ChainName: "Optimism",
RpcProviders: rpcProviders,
BlockExplorerURL: "https://optimistic.etherscan.io",
IconURL: "network/Network=Optimism",
ChainColor: "#E90101",
Expand Down Expand Up @@ -160,16 +137,9 @@ func optimismSepolia(stageName string) params.Network {
}

return params.Network{
ChainID: chainID,
ChainName: "Optimism",
RpcProviders: rpcProviders,

DefaultRPCURL: fmt.Sprintf("https://%s.api.status.im/nodefleet/optimism/sepolia/", stageName),
DefaultFallbackURL: fmt.Sprintf("https://%s.api.status.im/infura/optimism/sepolia/", stageName),
DefaultFallbackURL2: fmt.Sprintf("https://%s.api.status.im/grove/optimism/sepolia/", stageName),
RPCURL: "https://optimism-sepolia.infura.io/v3/",
FallbackURL: "https://optimism-sepolia-archival.rpc.grove.city/v1/",

ChainID: chainID,
ChainName: "Optimism",
RpcProviders: rpcProviders,
BlockExplorerURL: "https://sepolia-optimism.etherscan.io/",
IconURL: "network/Network=Optimism",
ChainColor: "#E90101",
Expand Down Expand Up @@ -199,16 +169,9 @@ func arbitrum(stageName string) params.Network {
}

return params.Network{
ChainID: chainID,
ChainName: "Arbitrum",
RpcProviders: rpcProviders,

DefaultRPCURL: fmt.Sprintf("https://%s.api.status.im/nodefleet/arbitrum/mainnet/", stageName),
DefaultFallbackURL: fmt.Sprintf("https://%s.api.status.im/infura/arbitrum/mainnet/", stageName),
DefaultFallbackURL2: fmt.Sprintf("https://%s.api.status.im/grove/arbitrum/mainnet/", stageName),
RPCURL: "https://arbitrum-mainnet.infura.io/v3/",
FallbackURL: "https://arbitrum-one.rpc.grove.city/v1/",

ChainID: chainID,
ChainName: "Arbitrum",
RpcProviders: rpcProviders,
BlockExplorerURL: "https://arbiscan.io/",
IconURL: "network/Network=Arbitrum",
ChainColor: "#51D0F0",
Expand Down Expand Up @@ -238,16 +201,9 @@ func arbitrumSepolia(stageName string) params.Network {
}

return params.Network{
ChainID: chainID,
ChainName: "Arbitrum",
RpcProviders: rpcProviders,

DefaultRPCURL: fmt.Sprintf("https://%s.api.status.im/nodefleet/arbitrum/sepolia/", stageName),
DefaultFallbackURL: fmt.Sprintf("https://%s.api.status.im/infura/arbitrum/sepolia/", stageName),
DefaultFallbackURL2: fmt.Sprintf("https://%s.api.status.im/grove/arbitrum/sepolia/", stageName),
RPCURL: "https://arbitrum-sepolia.infura.io/v3/",
FallbackURL: "https://arbitrum-sepolia-archival.rpc.grove.city/v1/",

ChainID: chainID,
ChainName: "Arbitrum",
RpcProviders: rpcProviders,
BlockExplorerURL: "https://sepolia-explorer.arbitrum.io/",
IconURL: "network/Network=Arbitrum",
ChainColor: "#51D0F0",
Expand Down Expand Up @@ -279,49 +235,12 @@ var mainnetGanacheTokenOverrides = params.TokenOverride{
}

func setRPCs(networks []params.Network, request *requests.WalletSecretsConfig) []params.Network {

var networksWithRPC []params.Network

const (
infura = "infura.io/"
grove = "grove.city/"
)

appendToken := func(url string) string {
if strings.Contains(url, infura) && request.InfuraToken != "" {
return url + request.InfuraToken
} else if strings.Contains(url, grove) && request.PoktToken != "" {
return url + request.PoktToken
}
return url
}

for _, n := range networks {
n.DefaultRPCURL = appendToken(n.DefaultRPCURL)
n.DefaultFallbackURL = appendToken(n.DefaultFallbackURL)
n.DefaultFallbackURL2 = appendToken(n.DefaultFallbackURL2)
n.RPCURL = appendToken(n.RPCURL)
n.FallbackURL = appendToken(n.FallbackURL)

if request.GanacheURL != "" {
n.RPCURL = request.GanacheURL
n.FallbackURL = request.GanacheURL
if n.ChainID == mainnetChainID {
n.TokenOverrides = []params.TokenOverride{
mainnetGanacheTokenOverrides,
}
}
}

networksWithRPC = append(networksWithRPC, n)
}

authTokens := map[string]string{
"infura.io": request.InfuraToken,
"grove.city": request.PoktToken,
}

updatedNetworks := networkhelper.OverrideDirectProvidersAuth(networksWithRPC, authTokens)
updatedNetworks := networkhelper.OverrideDirectProvidersAuth(networks, authTokens)

if request.GanacheURL != "" {
updatedNetworks = networkhelper.OverrideGanacheToken(updatedNetworks, request.GanacheURL, mainnetChainID, mainnetGanacheTokenOverrides)
Expand Down
11 changes: 0 additions & 11 deletions node/get_status_node.go
Original file line number Diff line number Diff line change
Expand Up @@ -342,16 +342,6 @@ func (n *StatusNode) setupRPCClient() (err error) {
// but some other way, as it's not wallet specific and should not be passed with login request
// but currently there is no other way to pass it
// (maybe move to default_networks.go)

providerConfigs := []params.ProviderConfig{
{
Enabled: n.config.WalletConfig.StatusProxyEnabled,
Name: rpc.ProviderStatusProxy,
User: n.config.WalletConfig.StatusProxyBlockchainUser,
Password: n.config.WalletConfig.StatusProxyBlockchainPassword,
},
}

networks := networkhelper.OverrideEmbeddedProxyProviders(
n.config.Networks,
n.config.WalletConfig.StatusProxyEnabled,
Expand All @@ -364,7 +354,6 @@ func (n *StatusNode) setupRPCClient() (err error) {
Networks: networks,
DB: n.appDB,
WalletFeed: &n.walletFeed,
ProviderConfigs: providerConfigs,
}
n.rpcClient, err = rpc.NewClient(config)
n.rpcClient.Start(context.Background())
Expand Down
15 changes: 0 additions & 15 deletions params/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -293,21 +293,6 @@ func NewLimits(min, max int) Limits {
}
}

type ProviderConfig struct {
// Enabled flag specifies whether feature is enabled
Enabled bool `validate:"required"`

// To identify provider
Name string `validate:"required"`

// URL sets the rpc upstream host address for communication with
// a non-local infura endpoint.
User string `json:",omitempty"`
Password string `json:",omitempty"`
APIKey string `json:"APIKey,omitempty"`
APIKeySecret string `json:"APIKeySecret,omitempty"`
}

// ----------
// NodeConfig
// ----------
Expand Down
53 changes: 53 additions & 0 deletions params/networkhelper/provider_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ func OverrideDirectProvidersAuth(networks []params.Network, authTokens map[strin
}

updatedNetwork.RpcProviders = updatedProviders
FillDeprecatedURLs(&updatedNetwork, updatedProviders)
updatedNetworks[i] = updatedNetwork
}
return updatedNetworks
Expand Down Expand Up @@ -183,3 +184,55 @@ func extractHost(providerURL string) (string, error) {
}
return parsedURL.Host, nil
}

// Deprecated: fillDeprecatedURLs populates the `original_rpc_url`, `original_fallback_url`, `rpc_url`,
// `fallback_url`, `defaultRpcUrl`, `defaultFallbackURL`, and `defaultFallbackURL2` fields.
// Keep for backwrad compatibility until it's fully integrated
func FillDeprecatedURLs(network *params.Network, providers []params.RpcProvider) {
var embeddedDirect []params.RpcProvider
var embeddedProxy []params.RpcProvider
var userProviders []params.RpcProvider

// Categorize providers
for _, provider := range providers {
switch provider.Type {
case params.EmbeddedDirectProviderType:
embeddedDirect = append(embeddedDirect, provider)
case params.EmbeddedProxyProviderType:
embeddedProxy = append(embeddedProxy, provider)
case params.UserProviderType:
userProviders = append(userProviders, provider)
}
}

// Set original_*_url fields based on EmbeddedDirectProviderType providers
if len(embeddedDirect) > 0 {
network.OriginalRPCURL = embeddedDirect[0].URL
if len(embeddedDirect) > 1 {
network.OriginalFallbackURL = embeddedDirect[1].URL
}
}

// Set rpc_url and fallback_url based on User providers or EmbeddedDirectProviderType if no User providers exist
if len(userProviders) > 0 {
network.RPCURL = userProviders[0].URL
if len(userProviders) > 1 {
network.FallbackURL = userProviders[1].URL
}
} else {
// Default to EmbeddedDirectProviderType providers if no User providers exist
network.RPCURL = network.OriginalRPCURL
network.FallbackURL = network.OriginalFallbackURL
}

// Set default_*_url fields based on EmbeddedProxyProviderType providers
if len(embeddedProxy) > 0 {
network.DefaultRPCURL = embeddedProxy[0].URL
if len(embeddedProxy) > 1 {
network.DefaultFallbackURL = embeddedProxy[1].URL
}
if len(embeddedProxy) > 2 {
network.DefaultFallbackURL2 = embeddedProxy[2].URL
}
}
}
Loading

0 comments on commit dc9415f

Please sign in to comment.