diff --git a/rocketpool-cli/service/config/settings-commit-boost.go b/rocketpool-cli/service/config/settings-commit-boost.go index e6fbbfc08..c86cac01f 100644 --- a/rocketpool-cli/service/config/settings-commit-boost.go +++ b/rocketpool-cli/service/config/settings-commit-boost.go @@ -20,6 +20,8 @@ type CommitBoostConfigPage struct { externalItems []*parameterizedFormItem flashbotsBox *parameterizedFormItem bloxrouteRegulatedBox *parameterizedFormItem + aestusBox *parameterizedFormItem + titanGlobalBox *parameterizedFormItem titanRegionalBox *parameterizedFormItem ultrasoundFilteredBox *parameterizedFormItem btcsOfacBox *parameterizedFormItem @@ -78,13 +80,15 @@ func (configPage *CommitBoostConfigPage) createContent() { // Relay checkboxes - using CommitBoost's own relay parameters configPage.flashbotsBox = createParameterizedCheckbox(&configPage.masterConfig.CommitBoost.FlashbotsRelay) configPage.bloxrouteRegulatedBox = createParameterizedCheckbox(&configPage.masterConfig.CommitBoost.BloxRouteRegulatedRelay) + configPage.aestusBox = createParameterizedCheckbox(&configPage.masterConfig.CommitBoost.AestusRelay) + configPage.titanGlobalBox = createParameterizedCheckbox(&configPage.masterConfig.CommitBoost.TitanGlobalRelay) configPage.titanRegionalBox = createParameterizedCheckbox(&configPage.masterConfig.CommitBoost.TitanRegionalRelay) configPage.ultrasoundFilteredBox = createParameterizedCheckbox(&configPage.masterConfig.CommitBoost.UltrasoundFilteredRelay) configPage.btcsOfacBox = createParameterizedCheckbox(&configPage.masterConfig.CommitBoost.BtcsOfacRelay) // Map the parameters to the form items in the layout configPage.layout.mapParameterizedFormItems(configPage.enableBox, configPage.modeBox, configPage.selectionModeBox) - configPage.layout.mapParameterizedFormItems(configPage.flashbotsBox, configPage.bloxrouteRegulatedBox, configPage.titanRegionalBox, configPage.ultrasoundFilteredBox, configPage.btcsOfacBox) + configPage.layout.mapParameterizedFormItems(configPage.flashbotsBox, configPage.bloxrouteRegulatedBox, configPage.aestusBox, configPage.titanGlobalBox, configPage.titanRegionalBox, configPage.ultrasoundFilteredBox, configPage.btcsOfacBox) configPage.layout.mapParameterizedFormItems(configPage.localItems...) configPage.layout.mapParameterizedFormItems(configPage.externalItems...) @@ -177,6 +181,10 @@ func (configPage *CommitBoostConfigPage) handleSelectionModeChanged() { configPage.layout.form.AddFormItem(configPage.flashbotsBox.item) case cfgtypes.MevRelayID_BloxrouteRegulated: configPage.layout.form.AddFormItem(configPage.bloxrouteRegulatedBox.item) + case cfgtypes.MevRelayID_Aestus: + configPage.layout.form.AddFormItem(configPage.aestusBox.item) + case cfgtypes.MevRelayID_TitanGlobal: + configPage.layout.form.AddFormItem(configPage.titanGlobalBox.item) case cfgtypes.MevRelayID_TitanRegional: configPage.layout.form.AddFormItem(configPage.titanRegionalBox.item) case cfgtypes.MevRelayID_UltrasoundFiltered: diff --git a/shared/services/config/commit-boost-config.go b/shared/services/config/commit-boost-config.go index 4b71e70e7..965f0a06b 100644 --- a/shared/services/config/commit-boost-config.go +++ b/shared/services/config/commit-boost-config.go @@ -41,6 +41,12 @@ type CommitBoostConfig struct { // bloXroute regulated relay BloxRouteRegulatedRelay config.Parameter `yaml:"cbBloxRouteRegulatedEnabled,omitempty"` + // Aestus relay + AestusRelay config.Parameter `yaml:"cbAestusEnabled,omitempty"` + + // Titan global relay + TitanGlobalRelay config.Parameter `yaml:"cbTitanGlobalEnabled,omitempty"` + // Titan regional relay TitanRegionalRelay config.Parameter `yaml:"cbTitanRegionalEnabled,omitempty"` @@ -113,7 +119,7 @@ func NewCommitBoostConfig(cfg *RocketPoolConfig) *CommitBoostConfig { RelaySelectionMode: config.Parameter{ ID: "relaySelectionMode", Name: "Relay Selection Mode", - Description: "Select how the TUI shows you the options for which PBS relays to enable.\n\nNote that all of the built-in relays support regional sanction lists (such as the US OFAC list) and are compliant with regulations.", + Description: "Select how the TUI shows you the options for which PBS relays to enable.", Type: config.ParameterType_Choice, Default: map[config.Network]interface{}{config.Network_All: PbsRelaySelectionMode_All}, AffectsContainers: []config.ContainerID{config.ContainerID_CommitBoost}, @@ -121,7 +127,7 @@ func NewCommitBoostConfig(cfg *RocketPoolConfig) *CommitBoostConfig { OverwriteOnUpgrade: false, Options: []config.ParameterOption{{ Name: "Use All Relays", - Description: "Use this if you simply want to enable all of the built-in relays without needing to read about each individual relay. If new relays get added, you'll automatically start using those too.\n\nNote that all of the built-in relays support regional sanction lists (such as the US OFAC list) and are compliant with regulations.", + Description: "Use this if you simply want to enable all of the built-in relays without needing to read about each individual relay. If new relays get added, you'll automatically start using those too.", Value: PbsRelaySelectionMode_All, }, { Name: "Manual Mode", @@ -132,6 +138,8 @@ func NewCommitBoostConfig(cfg *RocketPoolConfig) *CommitBoostConfig { FlashbotsRelay: generateCbRelayParameter("cbFlashbotsEnabled", relayMap[config.MevRelayID_Flashbots]), BloxRouteRegulatedRelay: generateCbRelayParameter("cbBloxRouteRegulatedEnabled", relayMap[config.MevRelayID_BloxrouteRegulated]), + AestusRelay: generateCbRelayParameter("cbAestusEnabled", relayMap[config.MevRelayID_Aestus]), + TitanGlobalRelay: generateCbRelayParameter("cbTitanGlobalEnabled", relayMap[config.MevRelayID_TitanGlobal]), TitanRegionalRelay: generateCbRelayParameter("cbTitanRegionalEnabled", relayMap[config.MevRelayID_TitanRegional]), UltrasoundFilteredRelay: generateCbRelayParameter("cbUltrasoundFilteredEnabled", relayMap[config.MevRelayID_UltrasoundFiltered]), BtcsOfacRelay: generateCbRelayParameter("cbBtcsOfacEnabled", relayMap[config.MevRelayID_BTCSOfac]), @@ -203,6 +211,8 @@ func (cfg *CommitBoostConfig) GetParameters() []*config.Parameter { &cfg.RelaySelectionMode, &cfg.FlashbotsRelay, &cfg.BloxRouteRegulatedRelay, + &cfg.AestusRelay, + &cfg.TitanGlobalRelay, &cfg.TitanRegionalRelay, &cfg.UltrasoundFilteredRelay, &cfg.BtcsOfacRelay, @@ -290,6 +300,8 @@ func (cfg *CommitBoostConfig) getEnabledRelays() []config.MevRelay { case PbsRelaySelectionMode_Manual: relays = cfg.maybeAddRelay(relays, cfg.FlashbotsRelay, config.MevRelayID_Flashbots, currentNetwork) relays = cfg.maybeAddRelay(relays, cfg.BloxRouteRegulatedRelay, config.MevRelayID_BloxrouteRegulated, currentNetwork) + relays = cfg.maybeAddRelay(relays, cfg.AestusRelay, config.MevRelayID_Aestus, currentNetwork) + relays = cfg.maybeAddRelay(relays, cfg.TitanGlobalRelay, config.MevRelayID_TitanGlobal, currentNetwork) relays = cfg.maybeAddRelay(relays, cfg.TitanRegionalRelay, config.MevRelayID_TitanRegional, currentNetwork) relays = cfg.maybeAddRelay(relays, cfg.UltrasoundFilteredRelay, config.MevRelayID_UltrasoundFiltered, currentNetwork) relays = cfg.maybeAddRelay(relays, cfg.BtcsOfacRelay, config.MevRelayID_BTCSOfac, currentNetwork) @@ -349,6 +361,17 @@ func (cfg *CommitBoostConfig) GetContainerTag() string { // Create the default Commit-Boost PBS relays. URLs come from the loaded network YAML. func createCommitBoostRelays(networks *NetworksConfig) []config.MevRelay { + // Keep the production relay catalog unchanged while adding Hoodi's relays. + hoodiRelayUrls := func(id config.MevRelayID) config.UrlMap { + urls := relayUrlMap(networks, id) + for network := range urls { + if networks.GetNetwork(network).BeaconNetwork != "hoodi" { + delete(urls, network) + } + } + return urls + } + return []config.MevRelay{ { ID: config.MevRelayID_Flashbots, @@ -364,6 +387,20 @@ func createCommitBoostRelays(networks *NetworksConfig) []config.MevRelay { Urls: relayUrlMap(networks, config.MevRelayID_BloxrouteRegulated), Regulated: true, }, + { + ID: config.MevRelayID_Aestus, + Name: "Aestus", + Description: "The Aestus MEV-Boost Relay is an independent and non-censoring relay. It is committed to neutrality and the development of a healthy MEV-Boost ecosystem.", + Urls: hoodiRelayUrls(config.MevRelayID_Aestus), + Regulated: false, + }, + { + ID: config.MevRelayID_TitanGlobal, + Name: "Titan Global (non-filtering)", + Description: "Titan Relay is a neutral, Rust-based PBS Relay optimized for low latency throughput, geographical distribution, and robustness. This is the non-filtering version.", + Urls: hoodiRelayUrls(config.MevRelayID_TitanGlobal), + Regulated: false, + }, { ID: config.MevRelayID_TitanRegional, Name: "Titan Regional", @@ -391,7 +428,9 @@ func createCommitBoostRelays(networks *NetworksConfig) []config.MevRelay { // Generate one of the relay parameters for Commit-Boost func generateCbRelayParameter(id string, relay config.MevRelay) config.Parameter { description := fmt.Sprintf("[lime]NOTE: You can enable multiple options.\n\n[white]%s\n\n", relay.Description) - description += "Complies with Regulations: YES\n" + if relay.Regulated { + description += "Complies with Regulations: YES\n" + } return config.Parameter{ ID: id, diff --git a/shared/services/rocketpool/assets/install/networks-default.yml b/shared/services/rocketpool/assets/install/networks-default.yml index 4d9285771..776c9748c 100644 --- a/shared/services/rocketpool/assets/install/networks-default.yml +++ b/shared/services/rocketpool/assets/install/networks-default.yml @@ -97,7 +97,7 @@ networks: beaconNetwork: hoodi commitBoostChainName: Hoodi clientTagSet: test - supportsMevBoost: false + supportsMevBoost: true allowNonBlsWithdrawalCredentials: false isProduction: false nethermindPruneThresholdMb: 51200 @@ -109,12 +109,10 @@ networks: startInterval: 0 consensusBonusCutoffInterval: 140 mevRelays: - flashbots: https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-hoodi.flashbots.net?id=rocketpool - ultrasound: https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-hoodi.ultrasound.money?id=rocketpool - ultrasoundFiltered: https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-filtered-hoodi.ultrasound.money?id=rocketpool - aestus: https://0x98f0ef62f00780cf8eb06701a7d22725b9437d4768bb19b363e882ae87129945ec206ec2dc16933f31d983f8225772b6@hoodi.aestus.live?id=rocketpool + flashbots: https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-hoodi.flashbots.net + bloxrouteRegulated: https://0x821f2a65afb70e7f2e820a925a9b4c80a159620582c1766b1b09729fec178b11ea22abb3a51f07b288be815a1a2ff516@bloxroute.hoodi.blxrbdn.com + aestus: https://0x98f0ef62f00780cf8eb06701a7d22725b9437d4768bb19b363e882ae87129945ec206ec2dc16933f31d983f8225772b6@hoodi.aestus.live titanGlobal: https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@hoodi.titanrelay.xyz - titanRegional: https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@hoodi.titanrelay.xyz addresses: storage: "0x594Fb75D3dc2DFa0150Ad03F99F97817747dd4E1" rocketSignerRegistry: "0xE3FbfaD4A11777E6271921E7EC1A5a1345684F4E"