Skip to content

Commit

Permalink
change hardcoded relays to a flag
Browse files Browse the repository at this point in the history
  • Loading branch information
Marketen committed Sep 13, 2023
1 parent 92a52c4 commit 592f2e7
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 33 deletions.
18 changes: 6 additions & 12 deletions api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ const (
type ApiService struct {
srv *http.Server
cfg *oracle.Config
cliCfg *config.CliConfig
Onchain *oracle.Onchain
oracle *oracle.Oracle
ApiListenAddr string
Expand All @@ -92,6 +93,7 @@ func NewApiService(
return &ApiService{
ApiListenAddr: fmt.Sprintf("0.0.0.0:%d", cliCfg.ApiPort),
cfg: cfg,
cliCfg: cliCfg,
oracle: oracle,
Onchain: onchain,
Network: cfg.Network,
Expand Down Expand Up @@ -839,19 +841,11 @@ func (m *ApiService) handleValidatorRelayers(w http.ResponseWriter, req *http.Re
var wrongFeeRelays []httpRelay
var unregisteredRelays []httpRelay
registeredCorrectFee := false
var relays []string

if m.Network == "mainnet" {
relays = config.MainnetRelays
} else if m.Network == "goerli" {
relays = config.GoerliRelays
} else {
m.respondError(w, http.StatusInternalServerError, fmt.Sprintf("invalid network: %s", m.Network))
return
}

for _, relay := range relays {
url := fmt.Sprintf("https://%s/relay/v1/data/validator_registration?pubkey=%s", relay, valPubKey)
relayers := m.cliCfg.RelayersEndpoints

for _, relay := range relayers {
url := fmt.Sprintf("%s/relay/v1/data/validator_registration?pubkey=%s", relay, valPubKey)
resp, err := http.Get(url)
if err != nil {
m.respondError(w, http.StatusInternalServerError, "could not call relayer endpoint: "+err.Error())
Expand Down
47 changes: 26 additions & 21 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package config
import (
"errors"
"flag"
"net/url"
"os"
"strings"

"github.com/ethereum/go-ethereum/common"
log "github.com/sirupsen/logrus"
Expand All @@ -21,33 +23,13 @@ type CliConfig struct {
ApiPort int
MetricsPort int
CheckPointSyncUrl string
RelayersEndpoints []string
}

// By default the release is a custom build. CI takes care of upgrading it with
// go build -v -ldflags="-X 'github.com/dappnode/mev-sp-oracle/config.ReleaseVersion=x.y.z'"
var ReleaseVersion = "custom-build-your-own-risk"

var MainnetRelays = []string{
"boost-relay.flashbots.net",
"bloxroute.max-profit.blxrbdn.com",
"bloxroute.ethical.blxrbdn.com",
"bloxroute.regulated.blxrbdn.com",
"builder-relay-mainnet.blocknative.com",
"relay.edennetwork.io",
"mainnet-relay.securerpc.com",
"relayooor.wtf",
"relay.ultrasound.money",
"agnostic-relay.net",
"aestus.live",
}
var GoerliRelays = []string{
"builder-relay-goerli.flashbots.net",
"bloxroute.max-profit.builder.goerli.blxrbdn.com",
"builder-relay-goerli.blocknative.com/",
"relay-goerli.edennetwork.io",
"goerli-relay.securerpc.com",
}

func NewCliConfig() (*CliConfig, error) {
// Optional flags:
var version = flag.Bool("version", false, "Prints the release version and exits")
Expand All @@ -64,6 +46,7 @@ func NewCliConfig() (*CliConfig, error) {
var consensusEndpoint = flag.String("consensus-endpoint", "", "Ethereum consensus endpoint")
var executionEndpoint = flag.String("execution-endpoint", "", "Ethereum execution endpoint")
var poolAddress = flag.String("pool-address", "", "Address of the smoothing pool contract")
var relayersEndpointsStr = flag.String("relayers-endpoints", "", "Comma-separated list of relayers endpoints")

flag.Parse()

Expand Down Expand Up @@ -94,6 +77,26 @@ func NewCliConfig() (*CliConfig, error) {
return nil, errors.New("pool-address: " + *poolAddress + " is not a valid address")
}

// Post process the relayers endpoints, make it a slice
relayersEndpoints := strings.Split(*relayersEndpointsStr, ",")

if len(relayersEndpoints) == 0 || (len(relayersEndpoints) == 1 && relayersEndpoints[0] == "") {
return nil, errors.New("relayers-endpoints is a mandatory flag and cant be empty")
}

// Validate the relayers endpoints, they must be valid URLs, not empty and start with https://.
for _, endpoint := range relayersEndpoints {
if endpoint == "" {
return nil, errors.New("relayer endpoint URL cannot be empty")
}
if !strings.HasPrefix(endpoint, "https://") {
return nil, errors.New("relayer endpoint URL must start with 'https://'")
}
if _, err := url.Parse(endpoint); err != nil {
return nil, errors.New("invalid relayer endpoint URL: " + endpoint)
}
}

cliConf := &CliConfig{
DryRun: *dryRun,
UpdaterKeyFile: *updaterKeystoreFile,
Expand All @@ -106,6 +109,7 @@ func NewCliConfig() (*CliConfig, error) {
ApiPort: *apiPort,
MetricsPort: *metricsPort,
CheckPointSyncUrl: *checkPointSyncUrl,
RelayersEndpoints: relayersEndpoints,
}
logConfig(cliConf)
return cliConf, nil
Expand All @@ -124,5 +128,6 @@ func logConfig(cfg *CliConfig) {
"ApiPort": cfg.ApiPort,
"MetricsPort": cfg.MetricsPort,
"CheckPointSyncUrl": cfg.CheckPointSyncUrl,
"RelayersEndpoints": cfg.RelayersEndpoints,
}).Info("Cli Config:")
}

0 comments on commit 592f2e7

Please sign in to comment.