Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ HOLESKY=false # Set to true to use Holesky network

# Relay settings
RELAYS= # Relay URLs: single entry or comma-separated list (scheme://pubkey@host)
RELAY_MONITORS= # Relay monitor URLs: single entry or comma-separated list (scheme://host)
MIN_BID_ETH=0 # Minimum bid to accept from a relay (in ETH)
RELAY_STARTUP_CHECK=false # Set to true to check relay status on startup and on status API call

Expand Down
4 changes: 0 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -258,10 +258,6 @@ Usage of mev-boost:
a single relay, can be specified multiple times
-relay-check
check relay status on startup and on the status API call
-relay-monitor value
a single relay monitor, can be specified multiple times
-relay-monitors string
relay monitor urls - single entry or comma-separated list (scheme://host)
-relays string
relay urls - single entry or comma-separated list (scheme://pubkey@host)
-request-timeout-getheader int
Expand Down
6 changes: 2 additions & 4 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,15 @@ go mod tidy
git status # should be no changes

# Start mev-boost with relay check and -relays
go run . -mainnet -relay-check -min-bid 0.12345 -debug -relays https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net,https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com,https://0xb3ee7afcf27f1f1259ac1787876318c6584ee353097a50ed84f51a1f21a323b3736f271a895c7ce918c038e4265918be@relay.edennetwork.io,https://0x9000009807ed12c1f08bf4e81c6da3ba8e3fc3d953898ce0102433094e5f22f21102ec057841fcb81978ed1ea0fa8246@builder-relay-mainnet.blocknative.com,https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money -relay-monitors https://relay-monitor1.example.com,https://relay-monitor2.example.com
go run . -mainnet -relay-check -min-bid 0.12345 -debug -relays https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net,https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com,https://0xb3ee7afcf27f1f1259ac1787876318c6584ee353097a50ed84f51a1f21a323b3736f271a895c7ce918c038e4265918be@relay.edennetwork.io,https://0x9000009807ed12c1f08bf4e81c6da3ba8e3fc3d953898ce0102433094e5f22f21102ec057841fcb81978ed1ea0fa8246@builder-relay-mainnet.blocknative.com,https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money

# Start mev-boost with relay check and multiple -relay flags
go run . -mainnet -relay-check -debug -min-bid 0.12345 \
-relay https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net \
-relay https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com \
-relay https://0xb3ee7afcf27f1f1259ac1787876318c6584ee353097a50ed84f51a1f21a323b3736f271a895c7ce918c038e4265918be@relay.edennetwork.io \
-relay https://0x9000009807ed12c1f08bf4e81c6da3ba8e3fc3d953898ce0102433094e5f22f21102ec057841fcb81978ed1ea0fa8246@builder-relay-mainnet.blocknative.com \
-relay https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money \
-relay-monitor https://relay-monitor1.example.com \
-relay-monitor https://relay-monitor2.example.com
-relay https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money

# Call the status endpoint
curl localhost:18550/eth/v1/builder/status
Expand Down
8 changes: 4 additions & 4 deletions cli/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ var flags = []cli.Flag{
holeskyFlag,
// relay
relaysFlag,
relayMonitorFlag,
deprecatedRelayMonitorFlag,
minBidFlag,
relayCheckFlag,
timeoutGetHeaderFlag,
Expand Down Expand Up @@ -123,12 +123,12 @@ var (
Usage: "relay urls - single entry or comma-separated list (scheme://pubkey@host)",
Category: RelayCategory,
}
relayMonitorFlag = &cli.StringSliceFlag{
deprecatedRelayMonitorFlag = &cli.StringSliceFlag{
Name: "relay-monitors",
Aliases: []string{"relay-monitor"},
Sources: cli.EnvVars("RELAY_MONITORS"),
Usage: "relay monitor urls - single entry or comma-separated list (scheme://host)",
Usage: "[deprecated]",
Category: RelayCategory,
Hidden: true,
}
minBidFlag = &cli.FloatFlag{
Name: "min-bid",
Expand Down
35 changes: 6 additions & 29 deletions cli/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,16 +65,15 @@ func start(_ context.Context, cmd *cli.Command) error {
}

var (
genesisForkVersion, genesisTime = setupGenesis(cmd)
relays, monitors, minBid, relayCheck = setupRelays(cmd)
listenAddr = cmd.String(addrFlag.Name)
genesisForkVersion, genesisTime = setupGenesis(cmd)
relays, minBid, relayCheck = setupRelays(cmd)
listenAddr = cmd.String(addrFlag.Name)
)

opts := server.BoostServiceOpts{
Log: log,
ListenAddr: listenAddr,
Relays: relays,
RelayMonitors: monitors,
GenesisForkVersionHex: genesisForkVersion,
GenesisTime: genesisTime,
RelayCheck: relayCheck,
Expand All @@ -97,12 +96,9 @@ func start(_ context.Context, cmd *cli.Command) error {
return service.StartHTTPServer()
}

func setupRelays(cmd *cli.Command) (relayList, relayMonitorList, types.U256Str, bool) {
func setupRelays(cmd *cli.Command) (relayList, types.U256Str, bool) {
// For backwards compatibility with the -relays flag.
var (
relays relayList
monitors relayMonitorList
)
var relays relayList
if cmd.IsSet(relaysFlag.Name) {
relayURLs := cmd.StringSlice(relaysFlag.Name)
for _, urls := range relayURLs {
Expand All @@ -122,33 +118,14 @@ func setupRelays(cmd *cli.Command) (relayList, relayMonitorList, types.U256Str,
log.Infof("relay #%d: %s", index+1, relay.String())
}

// For backwards compatibility with the -relay-monitors flag.
if cmd.IsSet(relayMonitorFlag.Name) {
monitorURLs := cmd.StringSlice(relayMonitorFlag.Name)
for _, urls := range monitorURLs {
for _, url := range strings.Split(urls, ",") {
if err := monitors.Set(strings.TrimSpace(url)); err != nil {
log.WithError(err).WithField("relayMonitor", url).Fatal("invalid relay monitor URL")
}
}
}
}

if len(monitors) > 0 {
log.Infof("using %d relay monitors", len(monitors))
for index, relayMonitor := range monitors {
log.Infof("relay-monitor #%d: %s", index+1, relayMonitor.String())
}
}

relayMinBidWei, err := sanitizeMinBid(cmd.Float(minBidFlag.Name))
if err != nil {
log.WithError(err).Fatal("failed sanitizing min bid")
}
if relayMinBidWei.BigInt().Sign() > 0 {
log.Infof("min bid set to %v eth (%v wei)", cmd.Float(minBidFlag.Name), relayMinBidWei)
}
return relays, monitors, *relayMinBidWei, cmd.Bool(relayCheckFlag.Name)
return relays, *relayMinBidWei, cmd.Bool(relayCheckFlag.Name)
}

func setupGenesis(cmd *cli.Command) (string, uint64) {
Expand Down
32 changes: 0 additions & 32 deletions cli/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package cli

import (
"errors"
"net/url"
"strings"

"github.com/flashbots/mev-boost/server/types"
Expand Down Expand Up @@ -36,34 +35,3 @@ func (r *relayList) Set(value string) error {
*r = append(*r, relay)
return nil
}

type relayMonitorList []*url.URL

func (rm *relayMonitorList) String() string {
relayMonitors := []string{}
for _, relayMonitor := range *rm {
relayMonitors = append(relayMonitors, relayMonitor.String())
}
return strings.Join(relayMonitors, ",")
}

func (rm *relayMonitorList) Contains(relayMonitor *url.URL) bool {
for _, entry := range *rm {
if relayMonitor.String() == entry.String() {
return true
}
}
return false
}

func (rm *relayMonitorList) Set(value string) error {
relayMonitor, err := url.Parse(value)
if err != nil {
return err
}
if rm.Contains(relayMonitor) {
return errDuplicateEntry
}
*rm = append(*rm, relayMonitor)
return nil
}
32 changes: 0 additions & 32 deletions server/register_validator.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"context"
"fmt"
"net/http"
"net/url"

"github.com/flashbots/mev-boost/server/params"
"github.com/flashbots/mev-boost/server/types"
Expand Down Expand Up @@ -67,34 +66,3 @@ func (m *BoostService) registerValidator(log *logrus.Entry, regBytes []byte, hea
// None of the relays responded OK
return errNoSuccessfulRelayResponse
}

func (m *BoostService) sendValidatorRegistrationsToRelayMonitors(log *logrus.Entry, regBytes []byte, header http.Header) {
// Forward request to each relay monitor
for _, relayMonitor := range m.relayMonitors {
go func(relayMonitor *url.URL) {
// Get the URL for this relay monitor
requestURL := types.GetURI(relayMonitor, params.PathRegisterValidator)
log := log.WithField("url", requestURL)

// Build the new request
req, err := http.NewRequestWithContext(context.Background(), http.MethodPost, requestURL, bytes.NewReader(regBytes))
if err != nil {
log.WithError(err).Warn("error creating new request")
return
}

// Extend the request header with our values
for key, values := range header {
req.Header[key] = values
}

// Send the request
resp, err := m.httpClientRegVal.Do(req)
if err != nil {
log.WithError(err).Warn("error calling registerValidator on relay monitor")
return
}
resp.Body.Close()
}(relayMonitor)
}
}
37 changes: 15 additions & 22 deletions server/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (
"fmt"
"io"
"net/http"
"net/url"
"strconv"
"strings"
"sync"
Expand Down Expand Up @@ -60,7 +59,6 @@ type BoostServiceOpts struct {
Log *logrus.Entry
ListenAddr string
Relays []types.RelayEntry
RelayMonitors []*url.URL
GenesisForkVersionHex string
GenesisTime uint64
RelayCheck bool
Expand All @@ -74,14 +72,13 @@ type BoostServiceOpts struct {

// BoostService - the mev-boost service
type BoostService struct {
listenAddr string
relays []types.RelayEntry
relayMonitors []*url.URL
log *logrus.Entry
srv *http.Server
relayCheck bool
relayMinBid types.U256Str
genesisTime uint64
listenAddr string
relays []types.RelayEntry
log *logrus.Entry
srv *http.Server
relayCheck bool
relayMinBid types.U256Str
genesisTime uint64

builderSigningDomain phase0.Domain
httpClientGetHeader http.Client
Expand All @@ -108,15 +105,14 @@ func NewBoostService(opts BoostServiceOpts) (*BoostService, error) {
}

return &BoostService{
listenAddr: opts.ListenAddr,
relays: opts.Relays,
relayMonitors: opts.RelayMonitors,
log: opts.Log,
relayCheck: opts.RelayCheck,
relayMinBid: opts.RelayMinBid,
genesisTime: opts.GenesisTime,
bids: make(map[string]bidResp),
slotUID: &slotUID{},
listenAddr: opts.ListenAddr,
relays: opts.Relays,
log: opts.Log,
relayCheck: opts.RelayCheck,
relayMinBid: opts.RelayMinBid,
genesisTime: opts.GenesisTime,
bids: make(map[string]bidResp),
slotUID: &slotUID{},

builderSigningDomain: builderSigningDomain,
httpClientGetHeader: http.Client{
Expand Down Expand Up @@ -247,9 +243,6 @@ func (m *BoostService) handleRegisterValidator(w http.ResponseWriter, req *http.
}
req.Body.Close()

// Send the registrations to relay monitors, if configured
go m.sendValidatorRegistrationsToRelayMonitors(log, regBytes, header)

// Send the registrations to each relay
err = m.registerValidator(log, regBytes, header)
if err == nil {
Expand Down
1 change: 0 additions & 1 deletion server/service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,6 @@ func TestNewBoostServiceErrors(t *testing.T) {
Log: mock.TestLog,
ListenAddr: ":123",
Relays: []types.RelayEntry{},
RelayMonitors: []*url.URL{},
GenesisForkVersionHex: "0x00000000",
GenesisTime: 0,
RelayCheck: true,
Expand Down
Loading