From 88499154bbc8a1e6682b4567eb364e9bf35dcf02 Mon Sep 17 00:00:00 2001 From: Joe Clapis Date: Tue, 8 Jul 2025 03:55:42 -0400 Subject: [PATCH 01/11] Updated clients --- go.mod | 6 ++---- go.sum | 4 ++-- shared/version.go | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 73cfab2..2af754d 100644 --- a/go.mod +++ b/go.mod @@ -4,11 +4,9 @@ go 1.24 toolchain go1.24.2 -require ( - github.com/rocket-pool/node-manager-core v0.5.2-0.20250430074613-76bcf6bb1be0 -) +require github.com/rocket-pool/node-manager-core v0.5.2-0.20250430074613-76bcf6bb1be0 -replace github.com/rocket-pool/node-manager-core => github.com/nodeset-org/node-manager-core v0.6.0 +replace github.com/rocket-pool/node-manager-core => github.com/nodeset-org/node-manager-core v0.6.1-0.20250711075241-26032845ce5f require ( filippo.io/age v1.2.0 diff --git a/go.sum b/go.sum index 8c960d0..d34f420 100644 --- a/go.sum +++ b/go.sum @@ -374,8 +374,8 @@ github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOEL github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nodeset-org/node-manager-core v0.6.0 h1:4FMjCASnwUpKEO6I6qcMLf1c9dLwKsE6YAl+7U4Y9uY= -github.com/nodeset-org/node-manager-core v0.6.0/go.mod h1:W2M1rQxoYunKI3cRlvbwQZR0UXxuloTI8FK9TryLbUQ= +github.com/nodeset-org/node-manager-core v0.6.1-0.20250711075241-26032845ce5f h1:eJy0+UD6Gxcl1jPE4qCYoq+CXabrMi9QvSSE35LoXOc= +github.com/nodeset-org/node-manager-core v0.6.1-0.20250711075241-26032845ce5f/go.mod h1:W2M1rQxoYunKI3cRlvbwQZR0UXxuloTI8FK9TryLbUQ= github.com/nodeset-org/nodeset-client-go v1.3.1 h1:y1AYTDjlXauOPunO98ebb5VeOkckzeyLMBeewIoyQc4= github.com/nodeset-org/nodeset-client-go v1.3.1/go.mod h1:X7vNVv8nzjV5FaiRS9epHmj5woxGSRvY6+qn2l0JY4Q= github.com/nodeset-org/osha v0.4.0 h1:g5A6L33mzW26XMGtAOmiY4uWYO0EVaxAIe4+eizz/Qg= diff --git a/shared/version.go b/shared/version.go index bb6b424..34b4c62 100644 --- a/shared/version.go +++ b/shared/version.go @@ -1,5 +1,5 @@ package shared const ( - HyperdriveVersion string = "1.2.2" + HyperdriveVersion string = "1.2.3-dev" ) From 9cc4b4bd4aba1f4eb5cf815af9d3fd18c714935d Mon Sep 17 00:00:00 2001 From: Joe Clapis Date: Sun, 13 Jul 2025 03:36:00 -0400 Subject: [PATCH 02/11] Updated NMC --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2af754d..1a085a5 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ toolchain go1.24.2 require github.com/rocket-pool/node-manager-core v0.5.2-0.20250430074613-76bcf6bb1be0 -replace github.com/rocket-pool/node-manager-core => github.com/nodeset-org/node-manager-core v0.6.1-0.20250711075241-26032845ce5f +replace github.com/rocket-pool/node-manager-core => github.com/nodeset-org/node-manager-core v0.6.1-0.20250713072817-a7f2e1dcdcda require ( filippo.io/age v1.2.0 diff --git a/go.sum b/go.sum index d34f420..71985dd 100644 --- a/go.sum +++ b/go.sum @@ -374,8 +374,8 @@ github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOEL github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nodeset-org/node-manager-core v0.6.1-0.20250711075241-26032845ce5f h1:eJy0+UD6Gxcl1jPE4qCYoq+CXabrMi9QvSSE35LoXOc= -github.com/nodeset-org/node-manager-core v0.6.1-0.20250711075241-26032845ce5f/go.mod h1:W2M1rQxoYunKI3cRlvbwQZR0UXxuloTI8FK9TryLbUQ= +github.com/nodeset-org/node-manager-core v0.6.1-0.20250713072817-a7f2e1dcdcda h1:12cjBTL9QUu98WIM3gE0KmFFm5/vcJlCBckzVMDtzQ4= +github.com/nodeset-org/node-manager-core v0.6.1-0.20250713072817-a7f2e1dcdcda/go.mod h1:W2M1rQxoYunKI3cRlvbwQZR0UXxuloTI8FK9TryLbUQ= github.com/nodeset-org/nodeset-client-go v1.3.1 h1:y1AYTDjlXauOPunO98ebb5VeOkckzeyLMBeewIoyQc4= github.com/nodeset-org/nodeset-client-go v1.3.1/go.mod h1:X7vNVv8nzjV5FaiRS9epHmj5woxGSRvY6+qn2l0JY4Q= github.com/nodeset-org/osha v0.4.0 h1:g5A6L33mzW26XMGtAOmiY4uWYO0EVaxAIe4+eizz/Qg= From 228913274a5f06c13f6ca1f858e11824956075af Mon Sep 17 00:00:00 2001 From: Joe Clapis Date: Thu, 17 Jul 2025 03:58:22 -0400 Subject: [PATCH 03/11] Started adding CB-PBS support --- shared/config/enums.go | 19 -- shared/config/hyperdrive-config.go | 9 +- shared/config/ids/hyperdrive.go | 15 +- shared/config/ids/pbs.go | 23 ++ shared/config/mev-boost-config.go | 456 -------------------------- shared/config/pbs/cb-pbs-config.go | 73 +++++ shared/config/pbs/enums.go | 34 ++ shared/config/pbs/external-pbs.go | 48 +++ shared/config/pbs/local-pbs.go | 379 +++++++++++++++++++++ shared/config/pbs/mev-boost-config.go | 73 +++++ shared/config/pbs/pbs-config.go | 91 +++++ shared/config/templating.go | 13 +- shared/version.go | 2 +- 13 files changed, 735 insertions(+), 500 deletions(-) create mode 100644 shared/config/ids/pbs.go delete mode 100644 shared/config/mev-boost-config.go create mode 100644 shared/config/pbs/cb-pbs-config.go create mode 100644 shared/config/pbs/enums.go create mode 100644 shared/config/pbs/external-pbs.go create mode 100644 shared/config/pbs/local-pbs.go create mode 100644 shared/config/pbs/mev-boost-config.go create mode 100644 shared/config/pbs/pbs-config.go diff --git a/shared/config/enums.go b/shared/config/enums.go index 83bf466..75d4ec1 100644 --- a/shared/config/enums.go +++ b/shared/config/enums.go @@ -8,22 +8,3 @@ const ( // Local test network for development Network_LocalTest config.Network = "local-test" ) - -type MevRelayID string - -// Enum to identify MEV-boost relays -const ( - MevRelayID_Unknown MevRelayID = "" - MevRelayID_Flashbots MevRelayID = "flashbots" - MevRelayID_BloxrouteMaxProfit MevRelayID = "bloxrouteMaxProfit" - MevRelayID_BloxrouteRegulated MevRelayID = "bloxrouteRegulated" - MevRelayID_TitanRegional MevRelayID = "titanRegional" -) - -type MevSelectionMode string - -// Enum to describe MEV-Boost relay selection mode -const ( - MevSelectionMode_All MevSelectionMode = "all" - MevSelectionMode_Manual MevSelectionMode = "manual" -) diff --git a/shared/config/hyperdrive-config.go b/shared/config/hyperdrive-config.go index cf742b4..6660c34 100644 --- a/shared/config/hyperdrive-config.go +++ b/shared/config/hyperdrive-config.go @@ -11,6 +11,7 @@ import ( "github.com/nodeset-org/hyperdrive-daemon/shared" "github.com/nodeset-org/hyperdrive-daemon/shared/config/ids" "github.com/nodeset-org/hyperdrive-daemon/shared/config/migration" + "github.com/nodeset-org/hyperdrive-daemon/shared/config/pbs" "github.com/rocket-pool/node-manager-core/config" "github.com/rocket-pool/node-manager-core/log" "gopkg.in/yaml.v3" @@ -60,8 +61,8 @@ type HyperdriveConfig struct { // Metrics Metrics *config.MetricsConfig - // MEV-Boost - MevBoost *MevBoostConfig + // PBS + Pbs *pbs.PbsConfig // Modules Modules map[string]any @@ -309,7 +310,7 @@ func NewHyperdriveConfigForNetwork(hdDir string, networks []*HyperdriveSettings, cfg.ExternalBeaconClient = config.NewExternalBeaconConfig() cfg.Fallback = config.NewFallbackConfig() cfg.Metrics = NewMetricsConfig() - cfg.MevBoost = NewMevBoostConfig(cfg) + cfg.Pbs = pbs.NewPbsConfig() // Provision the defaults for each network for _, network := range networks { @@ -359,7 +360,7 @@ func (cfg *HyperdriveConfig) GetSubconfigs() map[string]config.IConfigSection { ids.LocalBeaconID: cfg.LocalBeaconClient, ids.ExternalBeaconID: cfg.ExternalBeaconClient, ids.MetricsID: cfg.Metrics, - ids.MevBoostID: cfg.MevBoost, + ids.PbsID: cfg.Pbs, } } diff --git a/shared/config/ids/hyperdrive.go b/shared/config/ids/hyperdrive.go index 1319d3e..6d43ebd 100644 --- a/shared/config/ids/hyperdrive.go +++ b/shared/config/ids/hyperdrive.go @@ -26,18 +26,5 @@ const ( LocalBeaconID string = "localBeacon" ExternalBeaconID string = "externalBeacon" MetricsID string = "metrics" - MevBoostID string = "mevBoost" - - // MEV-Boost - MevBoostEnableID string = "enableMevBoost" - MevBoostModeID string = "mode" - MevBoostSelectionModeID string = "selectionMode" - MevBoostOpenRpcPortID string = "openRpcPort" - MevBoostExternalUrlID string = "externalUrl" - MevBoostFlashbotsID string = "flashbotsEnabled" - MevBoostBloxRouteMaxProfitID string = "bloxRouteMaxProfitEnabled" - MevBoostBloxRouteRegulatedID string = "bloxRouteRegulatedEnabled" - MevBoostEdenID string = "edenEnabled" - MevBoostTitanRegionalID string = "titanRegionaEnabled" - MevBoostCustomRelaysID string = "customRelays" + PbsID string = "pbs" ) diff --git a/shared/config/ids/pbs.go b/shared/config/ids/pbs.go new file mode 100644 index 0000000..50c7137 --- /dev/null +++ b/shared/config/ids/pbs.go @@ -0,0 +1,23 @@ +package ids + +const ( + // PBS client + PbsEnableID string = "enablePbs" + PbsModeID string = "mode" + PbsClientID string = "pbsClient" + PbsRelaySelectionModeID string = "selectionMode" + PbsOpenRpcPortID string = "openRpcPort" + PbsExternalUrlID string = "externalUrl" + PbsFlashbotsID string = "flashbotsEnabled" + PbsBloxRouteMaxProfitID string = "bloxRouteMaxProfitEnabled" + PbsBloxRouteRegulatedID string = "bloxRouteRegulatedEnabled" + PbsBoostEdenID string = "edenEnabled" + PbsTitanRegionalID string = "titanRegionaEnabled" + PbsCustomRelaysID string = "customRelays" + + // Commit-Boost PBS + CommitBoostPbsID string = "commitBoost" + + // Mev-Boost PBS + MevBoostPbsID string = "mevBoost" +) diff --git a/shared/config/mev-boost-config.go b/shared/config/mev-boost-config.go deleted file mode 100644 index ddab357..0000000 --- a/shared/config/mev-boost-config.go +++ /dev/null @@ -1,456 +0,0 @@ -package config - -import ( - "fmt" - "strings" - - ids "github.com/nodeset-org/hyperdrive-daemon/shared/config/ids" - "github.com/rocket-pool/node-manager-core/config" - nmc_ids "github.com/rocket-pool/node-manager-core/config/ids" -) - -// Constants -const ( - mevBoostProdTag string = "flashbots/mev-boost:1.9" - mevBoostTestTag string = "flashbots/mev-boost:1.9" -) - -// A MEV relay -type MevRelay struct { - ID MevRelayID - Name string - Description string - Urls map[string]string -} - -// Configuration for MEV-Boost -type MevBoostConfig struct { - // Toggle to enable / disable - Enable config.Parameter[bool] - - // Ownership mode - Mode config.Parameter[config.ClientMode] - - // The mode for relay selection - SelectionMode config.Parameter[MevSelectionMode] - - // Flashbots relay - FlashbotsRelay config.Parameter[bool] - - // bloXroute max profit relay - BloxRouteMaxProfitRelay config.Parameter[bool] - - // bloXroute regulated relay - BloxRouteRegulatedRelay config.Parameter[bool] - - // Titan regional relay - TitanRegionalRelay config.Parameter[bool] - - // Custom relays provided by the user - CustomRelays config.Parameter[string] - - // The RPC port - Port config.Parameter[uint16] - - // Toggle for forwarding the HTTP port outside of Docker - OpenRpcPort config.Parameter[config.RpcPortMode] - - // The Docker Hub tag for MEV-Boost - ContainerTag config.Parameter[string] - - // Custom command line flags - AdditionalFlags config.Parameter[string] - - // The URL of an external MEV-Boost client - ExternalUrl config.Parameter[string] - - /////////////////////////// - // Non-editable settings // - /////////////////////////// - - parent *HyperdriveConfig - relays []MevRelay - relayMap map[MevRelayID]MevRelay -} - -// Generates a new MEV-Boost configuration -func NewMevBoostConfig(parent *HyperdriveConfig) *MevBoostConfig { - // Generate the relays - relays := createDefaultRelays() - relayMap := map[MevRelayID]MevRelay{} - for _, relay := range relays { - relayMap[relay.ID] = relay - } - - rpcPortModes := config.GetPortModes("") - - return &MevBoostConfig{ - parent: parent, - - Enable: config.Parameter[bool]{ - ParameterCommon: &config.ParameterCommon{ - ID: ids.MevBoostEnableID, - Name: "Enable MEV-Boost", - Description: "Enable MEV-Boost, which connects your validators to one or more relays of your choice. The relays act as intermediaries between you and professional block builders that find and extract MEV opportunities. The builders will give you a healthy tip in return, which tends to be worth more than blocks you built on your own.", - AffectsContainers: []config.ContainerID{config.ContainerID_BeaconNode, config.ContainerID_MevBoost}, - CanBeBlank: false, - OverwriteOnUpgrade: false, - }, - Default: map[config.Network]bool{ - config.Network_All: true, - }, - }, - - Mode: config.Parameter[config.ClientMode]{ - ParameterCommon: &config.ParameterCommon{ - ID: ids.MevBoostModeID, - Name: "MEV-Boost Mode", - Description: "Choose whether to let Hyperdrive manage your MEV-Boost instance (Locally Managed), or if you manage your own outside of Hyperdrive (Externally Managed).", - AffectsContainers: []config.ContainerID{config.ContainerID_BeaconNode, config.ContainerID_MevBoost}, - CanBeBlank: false, - OverwriteOnUpgrade: false, - }, - Options: []*config.ParameterOption[config.ClientMode]{{ - ParameterOptionCommon: &config.ParameterOptionCommon{ - Name: "Locally Managed", - Description: "Allow Hyperdrive to manage the MEV-Boost client for you", - }, - Value: config.ClientMode_Local, - }, { - ParameterOptionCommon: &config.ParameterOptionCommon{ - Name: "Externally Managed", - Description: "Use an existing MEV-Boost client that you manage on your own", - }, - Value: config.ClientMode_External, - }}, - Default: map[config.Network]config.ClientMode{ - config.Network_All: config.ClientMode_Local, - }, - }, - - SelectionMode: config.Parameter[MevSelectionMode]{ - ParameterCommon: &config.ParameterCommon{ - ID: ids.MevBoostSelectionModeID, - Name: "Selection Mode", - Description: "Select how the TUI shows you the options for which MEV relays to enable.", - AffectsContainers: []config.ContainerID{config.ContainerID_MevBoost}, - CanBeBlank: false, - OverwriteOnUpgrade: false, - }, - Options: []*config.ParameterOption[MevSelectionMode]{{ - ParameterOptionCommon: &config.ParameterOptionCommon{ - 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 to Hyperdrive, you'll automatically start using those too.\n\nNote that all of Hyperdrive's built-in relays support regional sanction lists (such as the US OFAC list) and are compliant with regulations. To learn more, please visit https://medium.com/coinmonks/understanding-the-impact-of-the-ofac-sanctions-on-block-builders-9c0e02b7e450.", - }, - Value: MevSelectionMode_All, - }, { - ParameterOptionCommon: &config.ParameterOptionCommon{ - Name: "Manual Mode", - Description: "Each relay will be shown, and you can enable each one individually as you see fit.\nUse this if you already know about the relays and want to customize the ones you will use.\n\nNote that all of Hyperdrive's built-in relays support regional sanction lists (such as the US OFAC list) and are compliant with regulations. To learn more, please visit https://medium.com/coinmonks/understanding-the-impact-of-the-ofac-sanctions-on-block-builders-9c0e02b7e450.", - }, - Value: MevSelectionMode_Manual, - }}, - Default: map[config.Network]MevSelectionMode{ - config.Network_All: MevSelectionMode_All, - }, - }, - - // Explicit relay params - FlashbotsRelay: generateRelayParameter(ids.MevBoostFlashbotsID, relayMap[MevRelayID_Flashbots]), - BloxRouteMaxProfitRelay: generateRelayParameter(ids.MevBoostBloxRouteMaxProfitID, relayMap[MevRelayID_BloxrouteMaxProfit]), - BloxRouteRegulatedRelay: generateRelayParameter(ids.MevBoostBloxRouteRegulatedID, relayMap[MevRelayID_BloxrouteRegulated]), - TitanRegionalRelay: generateRelayParameter(ids.MevBoostTitanRegionalID, relayMap[MevRelayID_TitanRegional]), - - CustomRelays: config.Parameter[string]{ - ParameterCommon: &config.ParameterCommon{ - ID: ids.MevBoostCustomRelaysID, - Name: "Custom Relays", - Description: "Add custom relay URLs to MEV-Boost that aren't part of the built-in set. You can add multiple relays by separating each one with a comma. Any relay URLs can be used as long as they match your selected Ethereum network.\n\nFor a comprehensive list of available relays, we recommend the list maintained by ETHStaker:\nhttps://github.com/eth-educators/ethstaker-guides/blob/main/MEV-relay-list.md", - AffectsContainers: []config.ContainerID{config.ContainerID_MevBoost}, - CanBeBlank: true, - OverwriteOnUpgrade: false, - }, - Default: map[config.Network]string{ - config.Network_All: "", - }, - }, - - Port: config.Parameter[uint16]{ - ParameterCommon: &config.ParameterCommon{ - ID: nmc_ids.PortID, - Name: "Port", - Description: "The port that MEV-Boost should serve its API on.", - AffectsContainers: []config.ContainerID{config.ContainerID_BeaconNode, config.ContainerID_MevBoost}, - CanBeBlank: false, - OverwriteOnUpgrade: false, - }, - Default: map[config.Network]uint16{ - config.Network_All: uint16(18550), - }, - }, - - OpenRpcPort: config.Parameter[config.RpcPortMode]{ - ParameterCommon: &config.ParameterCommon{ - ID: nmc_ids.OpenPortID, - Name: "Expose API Port", - Description: "Expose the API port to other processes on your machine, or to your local network so other local machines can access MEV-Boost's API.", - AffectsContainers: []config.ContainerID{config.ContainerID_MevBoost}, - CanBeBlank: false, - OverwriteOnUpgrade: false, - }, - Options: rpcPortModes, - Default: map[config.Network]config.RpcPortMode{ - config.Network_All: config.RpcPortMode_Closed, - }, - }, - - ContainerTag: config.Parameter[string]{ - ParameterCommon: &config.ParameterCommon{ - ID: nmc_ids.ContainerTagID, - Name: "Container Tag", - Description: "The tag name of the MEV-Boost container you want to use on Docker Hub.", - AffectsContainers: []config.ContainerID{config.ContainerID_MevBoost}, - CanBeBlank: false, - OverwriteOnUpgrade: true, - }, - Default: map[config.Network]string{ - config.Network_Hoodi: mevBoostTestTag, - config.Network_All: mevBoostProdTag, - }, - }, - - AdditionalFlags: config.Parameter[string]{ - ParameterCommon: &config.ParameterCommon{ - ID: nmc_ids.AdditionalFlagsID, - Name: "Additional Flags", - Description: "Additional custom command line flags you want to pass to MEV-Boost, to take advantage of other settings that Hyperdrive's configuration doesn't cover.", - AffectsContainers: []config.ContainerID{config.ContainerID_MevBoost}, - CanBeBlank: true, - OverwriteOnUpgrade: false, - }, - Default: map[config.Network]string{ - config.Network_All: "", - }, - }, - - ExternalUrl: config.Parameter[string]{ - ParameterCommon: &config.ParameterCommon{ - ID: ids.MevBoostExternalUrlID, - Name: "External URL", - Description: "The URL of the external MEV-Boost client or provider.\nNOTE: If you are running it on the same machine as this node, addresses like `localhost` and `127.0.0.1` will not work due to Docker limitations. Enter your machine's LAN IP address instead, for example 'http://192.168.1.100:18550'.", - AffectsContainers: []config.ContainerID{config.ContainerID_BeaconNode}, - CanBeBlank: true, - OverwriteOnUpgrade: false, - }, - Default: map[config.Network]string{ - config.Network_All: "", - }, - }, - - relays: relays, - relayMap: relayMap, - } -} - -// The title for the config -func (cfg *MevBoostConfig) GetTitle() string { - return "MEV-Boost" -} - -// Get the Parameters for this config -func (cfg *MevBoostConfig) GetParameters() []config.IParameter { - return []config.IParameter{ - &cfg.Enable, - &cfg.Mode, - &cfg.SelectionMode, - &cfg.FlashbotsRelay, - &cfg.BloxRouteMaxProfitRelay, - &cfg.BloxRouteRegulatedRelay, - &cfg.TitanRegionalRelay, - &cfg.CustomRelays, - &cfg.Port, - &cfg.OpenRpcPort, - &cfg.ContainerTag, - &cfg.AdditionalFlags, - &cfg.ExternalUrl, - } -} - -// Get the sections underneath this one -func (cfg *MevBoostConfig) GetSubconfigs() map[string]config.IConfigSection { - return map[string]config.IConfigSection{} -} - -// Checks if any relays are available for the current network -func (cfg *MevBoostConfig) HasRelays() bool { - networkName := cfg.parent.GetEthNetworkName() - if networkName == "" { - return false - } - - // Check if any of the relays are available for that Eth network - for _, relay := range cfg.relays { - _, exists := relay.Urls[networkName] - if !exists { - continue - } - return true - } - - return false -} - -// Get the relays that are available for the current network -func (cfg *MevBoostConfig) GetAvailableRelays() []MevRelay { - relays := []MevRelay{} - networkName := cfg.parent.GetEthNetworkName() - if networkName == "" { - return relays - } - - for _, relay := range cfg.relays { - _, exists := relay.Urls[networkName] - if !exists { - continue - } - relays = append(relays, relay) - } - return relays -} - -// Get which MEV-boost relays are enabled -func (cfg *MevBoostConfig) GetEnabledMevRelays() []MevRelay { - relays := []MevRelay{} - networkName := cfg.parent.GetEthNetworkName() - if networkName == "" { - return relays - } - - switch cfg.SelectionMode.Value { - case MevSelectionMode_All: - for _, relay := range cfg.relays { - _, exists := relay.Urls[networkName] - if !exists { - // Skip relays that don't exist on the current network - continue - } - relays = append(relays, relay) - } - - case MevSelectionMode_Manual: - if cfg.FlashbotsRelay.Value { - _, exists := cfg.relayMap[MevRelayID_Flashbots].Urls[networkName] - if exists { - relays = append(relays, cfg.relayMap[MevRelayID_Flashbots]) - } - } - if cfg.BloxRouteMaxProfitRelay.Value { - _, exists := cfg.relayMap[MevRelayID_BloxrouteMaxProfit].Urls[networkName] - if exists { - relays = append(relays, cfg.relayMap[MevRelayID_BloxrouteMaxProfit]) - } - } - if cfg.BloxRouteRegulatedRelay.Value { - _, exists := cfg.relayMap[MevRelayID_BloxrouteRegulated].Urls[networkName] - if exists { - relays = append(relays, cfg.relayMap[MevRelayID_BloxrouteRegulated]) - } - } - if cfg.TitanRegionalRelay.Value { - _, exists := cfg.relayMap[MevRelayID_TitanRegional].Urls[networkName] - if exists { - relays = append(relays, cfg.relayMap[MevRelayID_TitanRegional]) - } - } - } - - return relays -} - -func (cfg *MevBoostConfig) GetRelayString() string { - relayUrls := []string{} - networkName := cfg.parent.GetEthNetworkName() - if networkName == "" { - return "" - } - - relays := cfg.GetEnabledMevRelays() - for _, relay := range relays { - relayUrls = append(relayUrls, relay.Urls[networkName]) - } - if cfg.CustomRelays.Value != "" { - relayUrls = append(relayUrls, cfg.CustomRelays.Value) - } - - relayString := strings.Join(relayUrls, ",") - return relayString -} - -// Create the default MEV relays -func createDefaultRelays() []MevRelay { - relays := []MevRelay{ - // Flashbots - { - ID: MevRelayID_Flashbots, - Name: "Flashbots", - Description: "Flashbots is the developer of MEV-Boost, and one of the best-known and most trusted relays in the space.", - Urls: map[string]string{ - config.EthNetwork_Mainnet: "https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net?id=hyperdrive", - config.EthNetwork_Hoodi: "https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-hoodi.flashbots.net", - }, - }, - - // bloXroute Max Profit - { - ID: MevRelayID_BloxrouteMaxProfit, - Name: "bloXroute Max Profit", - Description: "Select this to enable the \"max profit\" relay from bloXroute.", - Urls: map[string]string{ - config.EthNetwork_Mainnet: "https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com?id=hyperdrive", - config.EthNetwork_Hoodi: "https://0x821f2a65afb70e7f2e820a925a9b4c80a159620582c1766b1b09729fec178b11ea22abb3a51f07b288be815a1a2ff516@bloxroute.hoodi.blxrbdn.com", - }, - }, - - // bloXroute Regulated - { - ID: MevRelayID_BloxrouteRegulated, - Name: "bloXroute Regulated", - Description: "Select this to enable the \"regulated\" relay from bloXroute.", - Urls: map[string]string{ - config.EthNetwork_Mainnet: "https://0xb0b07cd0abef743db4260b0ed50619cf6ad4d82064cb4fbec9d3ec530f7c5e6793d9f286c4e082c0244ffb9f2658fe88@bloxroute.regulated.blxrbdn.com?id=hyperdrive", - }, - }, - - // Titan Regional - { - ID: MevRelayID_TitanRegional, - Name: "Titan Regional", - Description: "Titan Relay is a neutral, Rust-based MEV-Boost Relay optimized for low latency through put, geographical distribution, and robustness. This is the regulated (censoring) version.", - Urls: map[string]string{ - config.EthNetwork_Mainnet: "https://0x8c4ed5e24fe5c6ae21018437bde147693f68cda427cd1122cf20819c30eda7ed74f72dece09bb313f2a1855595ab677d@regional.titanrelay.xyz", - config.EthNetwork_Hoodi: "https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@hoodi.titanrelay.xyz", - }, - }, - } - - return relays -} - -// Generate one of the relay parameters -func generateRelayParameter(id string, relay MevRelay) config.Parameter[bool] { - description := fmt.Sprintf("[lime]NOTE: You can enable multiple options.\n\n[white]%s\n\n", relay.Description) - - return config.Parameter[bool]{ - ParameterCommon: &config.ParameterCommon{ - ID: id, - Name: fmt.Sprintf("Enable %s", relay.Name), - Description: description, - AffectsContainers: []config.ContainerID{config.ContainerID_MevBoost}, - CanBeBlank: false, - OverwriteOnUpgrade: false, - }, - Default: map[config.Network]bool{ - config.Network_All: false, - }, - } -} diff --git a/shared/config/pbs/cb-pbs-config.go b/shared/config/pbs/cb-pbs-config.go new file mode 100644 index 0000000..51178ce --- /dev/null +++ b/shared/config/pbs/cb-pbs-config.go @@ -0,0 +1,73 @@ +package pbs + +import ( + "github.com/rocket-pool/node-manager-core/config" + nmc_ids "github.com/rocket-pool/node-manager-core/config/ids" +) + +// Constants +const ( + commitBoostPbsProdTag string = "ghcr.io/commit-boost/pbs:v0.8.0" + commitBoostPbsTestTag string = "ghcr.io/commit-boost/pbs:v0.8.0" +) + +// Configuration for Commit Boost's PBS service +type CommitBoostPbsConfig struct { + // The Docker Hub tag for MEV-Boost + ContainerTag config.Parameter[string] + + // Custom command line flags + AdditionalFlags config.Parameter[string] +} + +// Generates a new Commit Boost PBS service configuration +func NewCommitBoostPbsConfig() *CommitBoostPbsConfig { + return &CommitBoostPbsConfig{ + ContainerTag: config.Parameter[string]{ + ParameterCommon: &config.ParameterCommon{ + ID: nmc_ids.ContainerTagID, + Name: "Container Tag", + Description: "The tag name of the Commit Boost PBS container you want to use.", + AffectsContainers: []config.ContainerID{ContainerID_Pbs}, + CanBeBlank: false, + OverwriteOnUpgrade: true, + }, + Default: map[config.Network]string{ + config.Network_Hoodi: commitBoostPbsTestTag, + config.Network_All: commitBoostPbsProdTag, + }, + }, + + AdditionalFlags: config.Parameter[string]{ + ParameterCommon: &config.ParameterCommon{ + ID: nmc_ids.AdditionalFlagsID, + Name: "Additional Flags", + Description: "Additional custom command line flags you want to pass to MEV-Boost, to take advantage of other settings that Hyperdrive's configuration doesn't cover.", + AffectsContainers: []config.ContainerID{ContainerID_Pbs}, + CanBeBlank: true, + OverwriteOnUpgrade: false, + }, + Default: map[config.Network]string{ + config.Network_All: "", + }, + }, + } +} + +// The title for the config +func (cfg *CommitBoostPbsConfig) GetTitle() string { + return "Commit Boost PBS" +} + +// Get the Parameters for this config +func (cfg *CommitBoostPbsConfig) GetParameters() []config.IParameter { + return []config.IParameter{ + &cfg.ContainerTag, + &cfg.AdditionalFlags, + } +} + +// Get the sections underneath this one +func (cfg *CommitBoostPbsConfig) GetSubconfigs() map[string]config.IConfigSection { + return map[string]config.IConfigSection{} +} diff --git a/shared/config/pbs/enums.go b/shared/config/pbs/enums.go new file mode 100644 index 0000000..1176878 --- /dev/null +++ b/shared/config/pbs/enums.go @@ -0,0 +1,34 @@ +package pbs + +import "github.com/rocket-pool/node-manager-core/config" + +type PbsRelayID string + +// Enum to identify MEV-boost relays +const ( + MevRelayID_Unknown PbsRelayID = "" + PbsRelayID_Flashbots PbsRelayID = "flashbots" + PbsRelayID_BloxrouteMaxProfit PbsRelayID = "bloxrouteMaxProfit" + PbsRelayID_BloxrouteRegulated PbsRelayID = "bloxrouteRegulated" + PbsRelayID_TitanRegional PbsRelayID = "titanRegional" +) + +type PbsClient string + +// Enum to identify PBS clients +const ( + PbsClient_CommitBoost PbsClient = "commitBoost" + PbsClient_MevBoost PbsClient = "mevBoost" +) + +type PbsRelaySelectionMode string + +// Enum to describe PBS relay selection mode +const ( + PbsRelaySelectionMode_All PbsRelaySelectionMode = "all" + PbsRelaySelectionMode_Manual PbsRelaySelectionMode = "manual" +) + +const ( + ContainerID_Pbs config.ContainerID = "pbs" +) diff --git a/shared/config/pbs/external-pbs.go b/shared/config/pbs/external-pbs.go new file mode 100644 index 0000000..dd1417b --- /dev/null +++ b/shared/config/pbs/external-pbs.go @@ -0,0 +1,48 @@ +package pbs + +import ( + ids "github.com/nodeset-org/hyperdrive-daemon/shared/config/ids" + "github.com/rocket-pool/node-manager-core/config" +) + +// Configuration for locally managed PBS services +type ExternalPbsClientConfig struct { + // The URL of an external MEV-Boost client + ExternalUrl config.Parameter[string] +} + +// Generates a new external PBS service configuration +func NewExternalPbsServiceConfig() *ExternalPbsClientConfig { + return &ExternalPbsClientConfig{ + ExternalUrl: config.Parameter[string]{ + ParameterCommon: &config.ParameterCommon{ + ID: ids.PbsExternalUrlID, + Name: "External URL", + Description: "The URL of the external PBS service.\nNOTE: If you are running it on the same machine as this node, addresses like `localhost` and `127.0.0.1` will not work due to Docker limitations. Enter your machine's LAN IP address instead, for example 'http://192.168.1.100:18550'.", + AffectsContainers: []config.ContainerID{config.ContainerID_BeaconNode}, + CanBeBlank: true, + OverwriteOnUpgrade: false, + }, + Default: map[config.Network]string{ + config.Network_All: "", + }, + }, + } +} + +// The title for the config +func (cfg *ExternalPbsClientConfig) GetTitle() string { + return "External PBS Service" +} + +// Get the Parameters for this config +func (cfg *ExternalPbsClientConfig) GetParameters() []config.IParameter { + return []config.IParameter{ + &cfg.ExternalUrl, + } +} + +// Get the sections underneath this one +func (cfg *ExternalPbsClientConfig) GetSubconfigs() map[string]config.IConfigSection { + return map[string]config.IConfigSection{} +} diff --git a/shared/config/pbs/local-pbs.go b/shared/config/pbs/local-pbs.go new file mode 100644 index 0000000..50cfa4c --- /dev/null +++ b/shared/config/pbs/local-pbs.go @@ -0,0 +1,379 @@ +package pbs + +import ( + "fmt" + "strings" + + "github.com/nodeset-org/hyperdrive-daemon/shared/config/ids" + "github.com/rocket-pool/node-manager-core/config" + nmc_ids "github.com/rocket-pool/node-manager-core/config/ids" +) + +// A MEV relay +type PbsRelay struct { + ID PbsRelayID + Name string + Description string + Urls map[string]string +} + +// Configuration for locally managed PBS services +type LocalPbsClientConfig struct { + // The PBS client to use + Client config.Parameter[PbsClient] + + // The mode for relay selection + RelaySelectionMode config.Parameter[PbsRelaySelectionMode] + + // Flashbots relay + FlashbotsRelay config.Parameter[bool] + + // bloXroute max profit relay + BloxRouteMaxProfitRelay config.Parameter[bool] + + // bloXroute regulated relay + BloxRouteRegulatedRelay config.Parameter[bool] + + // Titan regional relay + TitanRegionalRelay config.Parameter[bool] + + // Custom relays provided by the user + CustomRelays config.Parameter[string] + + // The RPC port + Port config.Parameter[uint16] + + // Toggle for forwarding the HTTP port outside of Docker + OpenRpcPort config.Parameter[config.RpcPortMode] + + CommitBoostPbsConfig *CommitBoostPbsConfig + + MevBoostConfig *MevBoostConfig + + /////////////////////////// + // Non-editable settings // + /////////////////////////// + + relays []PbsRelay + relayMap map[PbsRelayID]PbsRelay +} + +// Generates a new local PBS service configuration +func NewLocalPbsServiceConfig() *LocalPbsClientConfig { + // Generate the relays + relays := createDefaultRelays() + relayMap := map[PbsRelayID]PbsRelay{} + for _, relay := range relays { + relayMap[relay.ID] = relay + } + + rpcPortModes := config.GetPortModes("") + + return &LocalPbsClientConfig{ + Client: config.Parameter[PbsClient]{ + ParameterCommon: &config.ParameterCommon{ + ID: ids.PbsClientID, + Name: "PBS Client", + Description: "Select the PBS client to use.", + AffectsContainers: []config.ContainerID{ContainerID_Pbs}, + CanBeBlank: false, + OverwriteOnUpgrade: false, + }, + Options: []*config.ParameterOption[PbsClient]{{ + ParameterOptionCommon: &config.ParameterOptionCommon{ + Name: "Commit-Boost", + Description: "Commit-Boost is a powerful PBS client that offers detailed reporting and transparency around block building, very low latency, the ability to specify relays on a per-validator basis, and a responsive development team with a proven track record of quickly addressing feedback. It is fully open source and written in Rust. Visit https://github.com/commit-boost/commit-boost-client/ to learn more.", + }, + Value: PbsClient_CommitBoost, + }, { + ParameterOptionCommon: &config.ParameterOptionCommon{ + Name: "MEV-Boost", + Description: "MEV-Boost is the oldest public implementation of a client for the PBS marketplace. It is developed by Flashbots and is completely open source and written in Go. Visit https://github.com/flashbots/mev-boost to learn more.", + }, + Value: PbsClient_MevBoost, + }}, + Default: map[config.Network]PbsClient{ + config.Network_All: PbsClient_CommitBoost, + }, + }, + + RelaySelectionMode: config.Parameter[PbsRelaySelectionMode]{ + ParameterCommon: &config.ParameterCommon{ + ID: ids.PbsRelaySelectionModeID, + Name: "Selection Mode", + Description: "Select how the TUI shows you the options for which PBS relays to enable.", + AffectsContainers: []config.ContainerID{ContainerID_Pbs}, + CanBeBlank: false, + OverwriteOnUpgrade: false, + }, + Options: []*config.ParameterOption[PbsRelaySelectionMode]{{ + ParameterOptionCommon: &config.ParameterOptionCommon{ + 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 to Hyperdrive, you'll automatically start using those too.\n\nNote that all of Hyperdrive's built-in relays support regional sanction lists (such as the US OFAC list) and are compliant with regulations. To learn more, please visit https://medium.com/coinmonks/understanding-the-impact-of-the-ofac-sanctions-on-block-builders-9c0e02b7e450.", + }, + Value: PbsRelaySelectionMode_All, + }, { + ParameterOptionCommon: &config.ParameterOptionCommon{ + Name: "Manual Mode", + Description: "Each relay will be shown, and you can enable each one individually as you see fit.\nUse this if you already know about the relays and want to customize the ones you will use.\n\nNote that all of Hyperdrive's built-in relays support regional sanction lists (such as the US OFAC list) and are compliant with regulations. To learn more, please visit https://medium.com/coinmonks/understanding-the-impact-of-the-ofac-sanctions-on-block-builders-9c0e02b7e450.", + }, + Value: PbsRelaySelectionMode_Manual, + }}, + Default: map[config.Network]PbsRelaySelectionMode{ + config.Network_All: PbsRelaySelectionMode_All, + }, + }, + + // Explicit relay params + FlashbotsRelay: generateRelayParameter(ids.PbsFlashbotsID, relayMap[PbsRelayID_Flashbots]), + BloxRouteMaxProfitRelay: generateRelayParameter(ids.PbsBloxRouteMaxProfitID, relayMap[PbsRelayID_BloxrouteMaxProfit]), + BloxRouteRegulatedRelay: generateRelayParameter(ids.PbsBloxRouteRegulatedID, relayMap[PbsRelayID_BloxrouteRegulated]), + TitanRegionalRelay: generateRelayParameter(ids.PbsTitanRegionalID, relayMap[PbsRelayID_TitanRegional]), + + CustomRelays: config.Parameter[string]{ + ParameterCommon: &config.ParameterCommon{ + ID: ids.PbsCustomRelaysID, + Name: "Custom Relays", + Description: "Add custom relay URLs to the PBS client that aren't part of the built-in set. You can add multiple relays by separating each one with a comma. Any relay URLs can be used as long as they match your selected Ethereum network.\n\nFor a comprehensive list of available relays, we recommend the list maintained by ETHStaker:\nhttps://github.com/eth-educators/ethstaker-guides/blob/main/MEV-relay-list.md", + AffectsContainers: []config.ContainerID{ContainerID_Pbs}, + CanBeBlank: true, + OverwriteOnUpgrade: false, + }, + Default: map[config.Network]string{ + config.Network_All: "", + }, + }, + + Port: config.Parameter[uint16]{ + ParameterCommon: &config.ParameterCommon{ + ID: nmc_ids.PortID, + Name: "Port", + Description: "The port that the PBS client should serve its API on.", + AffectsContainers: []config.ContainerID{config.ContainerID_BeaconNode, ContainerID_Pbs}, + CanBeBlank: false, + OverwriteOnUpgrade: false, + }, + Default: map[config.Network]uint16{ + config.Network_All: uint16(18550), + }, + }, + + OpenRpcPort: config.Parameter[config.RpcPortMode]{ + ParameterCommon: &config.ParameterCommon{ + ID: nmc_ids.OpenPortID, + Name: "Expose API Port", + Description: "Expose the API port to other processes on your machine, or to your local network so other local machines can access the PBS client's API.", + AffectsContainers: []config.ContainerID{ContainerID_Pbs}, + CanBeBlank: false, + OverwriteOnUpgrade: false, + }, + Options: rpcPortModes, + Default: map[config.Network]config.RpcPortMode{ + config.Network_All: config.RpcPortMode_Closed, + }, + }, + + CommitBoostPbsConfig: NewCommitBoostPbsConfig(), + MevBoostConfig: NewMevBoostConfig(), + + relays: relays, + relayMap: relayMap, + } +} + +// The title for the config +func (cfg *LocalPbsClientConfig) GetTitle() string { + return "Local PBS Service" +} + +// Get the Parameters for this config +func (cfg *LocalPbsClientConfig) GetParameters() []config.IParameter { + return []config.IParameter{ + &cfg.RelaySelectionMode, + &cfg.FlashbotsRelay, + &cfg.BloxRouteMaxProfitRelay, + &cfg.BloxRouteRegulatedRelay, + &cfg.TitanRegionalRelay, + &cfg.CustomRelays, + &cfg.Port, + &cfg.OpenRpcPort, + } +} + +// Get the sections underneath this one +func (cfg *LocalPbsClientConfig) GetSubconfigs() map[string]config.IConfigSection { + return map[string]config.IConfigSection{ + ids.CommitBoostPbsID: cfg.CommitBoostPbsConfig, + ids.MevBoostPbsID: cfg.MevBoostConfig, + } +} + +// Checks if any relays are available for the current network +func (cfg *LocalPbsClientConfig) HasRelays(networkName string) bool { + if networkName == "" { + return false + } + + // Check if any of the relays are available for that Eth network + for _, relay := range cfg.relays { + _, exists := relay.Urls[networkName] + if !exists { + continue + } + return true + } + + return false +} + +// Get the relays that are available for the current network +func (cfg *LocalPbsClientConfig) GetAvailableRelays(networkName string) []PbsRelay { + relays := []PbsRelay{} + if networkName == "" { + return relays + } + + for _, relay := range cfg.relays { + _, exists := relay.Urls[networkName] + if !exists { + continue + } + relays = append(relays, relay) + } + return relays +} + +// Get which PBS relays are enabled +func (cfg *LocalPbsClientConfig) GetEnabledPbsRelays(networkName string) []PbsRelay { + relays := []PbsRelay{} + if networkName == "" { + return relays + } + + switch cfg.RelaySelectionMode.Value { + case PbsRelaySelectionMode_All: + for _, relay := range cfg.relays { + _, exists := relay.Urls[networkName] + if !exists { + // Skip relays that don't exist on the current network + continue + } + relays = append(relays, relay) + } + + case PbsRelaySelectionMode_Manual: + if cfg.FlashbotsRelay.Value { + _, exists := cfg.relayMap[PbsRelayID_Flashbots].Urls[networkName] + if exists { + relays = append(relays, cfg.relayMap[PbsRelayID_Flashbots]) + } + } + if cfg.BloxRouteMaxProfitRelay.Value { + _, exists := cfg.relayMap[PbsRelayID_BloxrouteMaxProfit].Urls[networkName] + if exists { + relays = append(relays, cfg.relayMap[PbsRelayID_BloxrouteMaxProfit]) + } + } + if cfg.BloxRouteRegulatedRelay.Value { + _, exists := cfg.relayMap[PbsRelayID_BloxrouteRegulated].Urls[networkName] + if exists { + relays = append(relays, cfg.relayMap[PbsRelayID_BloxrouteRegulated]) + } + } + if cfg.TitanRegionalRelay.Value { + _, exists := cfg.relayMap[PbsRelayID_TitanRegional].Urls[networkName] + if exists { + relays = append(relays, cfg.relayMap[PbsRelayID_TitanRegional]) + } + } + } + + return relays +} + +func (cfg *LocalPbsClientConfig) GetRelayString(networkName string) string { + relayUrls := []string{} + if networkName == "" { + return "" + } + + relays := cfg.GetEnabledPbsRelays(networkName) + for _, relay := range relays { + relayUrls = append(relayUrls, relay.Urls[networkName]) + } + if cfg.CustomRelays.Value != "" { + relayUrls = append(relayUrls, cfg.CustomRelays.Value) + } + + relayString := strings.Join(relayUrls, ",") + return relayString +} + +// Create the default PBS relays +func createDefaultRelays() []PbsRelay { + relays := []PbsRelay{ + // Flashbots + { + ID: PbsRelayID_Flashbots, + Name: "Flashbots", + Description: "Flashbots is the developer of MEV-Boost, and one of the best-known and most trusted relays in the space.", + Urls: map[string]string{ + config.EthNetwork_Mainnet: "https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net?id=hyperdrive", + config.EthNetwork_Hoodi: "https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-hoodi.flashbots.net", + }, + }, + + // bloXroute Max Profit + { + ID: PbsRelayID_BloxrouteMaxProfit, + Name: "bloXroute Max Profit", + Description: "Select this to enable the \"max profit\" relay from bloXroute.", + Urls: map[string]string{ + config.EthNetwork_Mainnet: "https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com?id=hyperdrive", + config.EthNetwork_Hoodi: "https://0x821f2a65afb70e7f2e820a925a9b4c80a159620582c1766b1b09729fec178b11ea22abb3a51f07b288be815a1a2ff516@bloxroute.hoodi.blxrbdn.com", + }, + }, + + // bloXroute Regulated + { + ID: PbsRelayID_BloxrouteRegulated, + Name: "bloXroute Regulated", + Description: "Select this to enable the \"regulated\" relay from bloXroute.", + Urls: map[string]string{ + config.EthNetwork_Mainnet: "https://0xb0b07cd0abef743db4260b0ed50619cf6ad4d82064cb4fbec9d3ec530f7c5e6793d9f286c4e082c0244ffb9f2658fe88@bloxroute.regulated.blxrbdn.com?id=hyperdrive", + }, + }, + + // Titan Regional + { + ID: PbsRelayID_TitanRegional, + Name: "Titan Regional", + Description: "Titan Relay is a neutral, Rust-based PBS Relay optimized for low latency through put, geographical distribution, and robustness. This is the regulated (censoring) version.", + Urls: map[string]string{ + config.EthNetwork_Mainnet: "https://0x8c4ed5e24fe5c6ae21018437bde147693f68cda427cd1122cf20819c30eda7ed74f72dece09bb313f2a1855595ab677d@regional.titanrelay.xyz", + config.EthNetwork_Hoodi: "https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@hoodi.titanrelay.xyz", + }, + }, + } + + return relays +} + +// Generate one of the relay parameters +func generateRelayParameter(id string, relay PbsRelay) config.Parameter[bool] { + description := fmt.Sprintf("[lime]NOTE: You can enable multiple options.\n\n[white]%s\n\n", relay.Description) + + return config.Parameter[bool]{ + ParameterCommon: &config.ParameterCommon{ + ID: id, + Name: fmt.Sprintf("Enable %s", relay.Name), + Description: description, + AffectsContainers: []config.ContainerID{ContainerID_Pbs}, + CanBeBlank: false, + OverwriteOnUpgrade: false, + }, + Default: map[config.Network]bool{ + config.Network_All: false, + }, + } +} diff --git a/shared/config/pbs/mev-boost-config.go b/shared/config/pbs/mev-boost-config.go new file mode 100644 index 0000000..cc115cb --- /dev/null +++ b/shared/config/pbs/mev-boost-config.go @@ -0,0 +1,73 @@ +package pbs + +import ( + "github.com/rocket-pool/node-manager-core/config" + nmc_ids "github.com/rocket-pool/node-manager-core/config/ids" +) + +// Constants +const ( + mevBoostProdTag string = "flashbots/mev-boost:1.9" + mevBoostTestTag string = "flashbots/mev-boost:1.9" +) + +// Configuration for MEV-Boost +type MevBoostConfig struct { + // The Docker Hub tag for MEV-Boost + ContainerTag config.Parameter[string] + + // Custom command line flags + AdditionalFlags config.Parameter[string] +} + +// Generates a new MEV-Boost configuration +func NewMevBoostConfig() *MevBoostConfig { + return &MevBoostConfig{ + ContainerTag: config.Parameter[string]{ + ParameterCommon: &config.ParameterCommon{ + ID: nmc_ids.ContainerTagID, + Name: "Container Tag", + Description: "The tag name of the MEV-Boost container you want to use on Docker Hub.", + AffectsContainers: []config.ContainerID{config.ContainerID_MevBoost}, + CanBeBlank: false, + OverwriteOnUpgrade: true, + }, + Default: map[config.Network]string{ + config.Network_Hoodi: mevBoostTestTag, + config.Network_All: mevBoostProdTag, + }, + }, + + AdditionalFlags: config.Parameter[string]{ + ParameterCommon: &config.ParameterCommon{ + ID: nmc_ids.AdditionalFlagsID, + Name: "Additional Flags", + Description: "Additional custom command line flags you want to pass to MEV-Boost, to take advantage of other settings that Hyperdrive's configuration doesn't cover.", + AffectsContainers: []config.ContainerID{config.ContainerID_MevBoost}, + CanBeBlank: true, + OverwriteOnUpgrade: false, + }, + Default: map[config.Network]string{ + config.Network_All: "", + }, + }, + } +} + +// The title for the config +func (cfg *MevBoostConfig) GetTitle() string { + return "MEV-Boost" +} + +// Get the Parameters for this config +func (cfg *MevBoostConfig) GetParameters() []config.IParameter { + return []config.IParameter{ + &cfg.ContainerTag, + &cfg.AdditionalFlags, + } +} + +// Get the sections underneath this one +func (cfg *MevBoostConfig) GetSubconfigs() map[string]config.IConfigSection { + return map[string]config.IConfigSection{} +} diff --git a/shared/config/pbs/pbs-config.go b/shared/config/pbs/pbs-config.go new file mode 100644 index 0000000..76063f1 --- /dev/null +++ b/shared/config/pbs/pbs-config.go @@ -0,0 +1,91 @@ +package pbs + +import ( + ids "github.com/nodeset-org/hyperdrive-daemon/shared/config/ids" + "github.com/rocket-pool/node-manager-core/config" +) + +// Configuration for PBS clients +type PbsConfig struct { + // Toggle to enable / disable + Enable config.Parameter[bool] + + // Ownership mode + Mode config.Parameter[config.ClientMode] + + // Local PBS client configuration + LocalPbsClientConfig *LocalPbsClientConfig + + // External PBS client configuration + ExternalPbsClientConfig *ExternalPbsClientConfig +} + +// Generates a new PBS configuration +func NewPbsConfig() *PbsConfig { + return &PbsConfig{ + Enable: config.Parameter[bool]{ + ParameterCommon: &config.ParameterCommon{ + ID: ids.PbsEnableID, + Name: "Enable PBS Client", + Description: "Enable support for a PBS client. When one of your validators needs to propose a Beacon chain block, this client lets other professional services build it for you instead of building your own. These block builders find and extract extra MEV opportunities, giving you a healthy tip in return (which tends to be worth more than blocks you built on your own).", + AffectsContainers: []config.ContainerID{config.ContainerID_BeaconNode, config.ContainerID_MevBoost, config.ContainerID_ValidatorClient}, + CanBeBlank: false, + OverwriteOnUpgrade: false, + }, + Default: map[config.Network]bool{ + config.Network_All: true, + }, + }, + + Mode: config.Parameter[config.ClientMode]{ + ParameterCommon: &config.ParameterCommon{ + ID: ids.PbsModeID, + Name: "PBS Client Mode", + Description: "Choose whether to let Hyperdrive manage your PBS client (Locally Managed), or if you manage your own outside of Hyperdrive (Externally Managed).", + AffectsContainers: []config.ContainerID{config.ContainerID_BeaconNode, config.ContainerID_MevBoost}, + CanBeBlank: false, + OverwriteOnUpgrade: false, + }, + Options: []*config.ParameterOption[config.ClientMode]{{ + ParameterOptionCommon: &config.ParameterOptionCommon{ + Name: "Locally Managed", + Description: "Allow Hyperdrive to manage a PBS client for you", + }, + Value: config.ClientMode_Local, + }, { + ParameterOptionCommon: &config.ParameterOptionCommon{ + Name: "Externally Managed", + Description: "Use an existing PBS client that you manage on your own", + }, + Value: config.ClientMode_External, + }}, + Default: map[config.Network]config.ClientMode{ + config.Network_All: config.ClientMode_Local, + }, + }, + + LocalPbsClientConfig: NewLocalPbsServiceConfig(), + ExternalPbsClientConfig: NewExternalPbsServiceConfig(), + } +} + +// The title for the config +func (cfg *PbsConfig) GetTitle() string { + return "PBS Configuration" +} + +// Get the Parameters for this config +func (cfg *PbsConfig) GetParameters() []config.IParameter { + return []config.IParameter{ + &cfg.Enable, + &cfg.Mode, + } +} + +// Get the sections underneath this one +func (cfg *PbsConfig) GetSubconfigs() map[string]config.IConfigSection { + return map[string]config.IConfigSection{ + "Local PBS Service": cfg.LocalPbsClientConfig, + "External PBS Service": cfg.ExternalPbsClientConfig, + } +} diff --git a/shared/config/templating.go b/shared/config/templating.go index 99add2b..bff2d70 100644 --- a/shared/config/templating.go +++ b/shared/config/templating.go @@ -6,6 +6,7 @@ import ( "strings" "github.com/nodeset-org/hyperdrive-daemon/shared" + "github.com/nodeset-org/hyperdrive-daemon/shared/config/pbs" "github.com/rocket-pool/node-manager-core/config" ) @@ -385,15 +386,15 @@ func (cfg *HyperdriveConfig) GraffitiPrefix() string { // Used by text/template to format validator.yml func (cfg *HyperdriveConfig) MevBoostUrl() string { - if !cfg.MevBoost.Enable.Value { + if !cfg.Pbs.Enable.Value { return "" } - if cfg.MevBoost.Mode.Value == config.ClientMode_Local { - return fmt.Sprintf("http://%s:%d", config.ContainerID_MevBoost, cfg.MevBoost.Port.Value) + if cfg.Pbs.Mode.Value == config.ClientMode_Local { + return fmt.Sprintf("http://%s:%d", pbs.ContainerID_Pbs, cfg.Pbs.LocalPbsClientConfig.Port.Value) } - return cfg.MevBoost.ExternalUrl.Value + return cfg.Pbs.ExternalPbsClientConfig.ExternalUrl.Value } // ================= @@ -407,10 +408,10 @@ func (cfg *HyperdriveConfig) GetMevBoostStartScript() string { // Used by text/template to format mev-boost.yml func (cfg *HyperdriveConfig) GetMevBoostOpenPorts() string { - portMode := cfg.MevBoost.OpenRpcPort.Value + portMode := cfg.Pbs.LocalPbsClientConfig.OpenRpcPort.Value if !portMode.IsOpen() { return "" } - port := cfg.MevBoost.Port.Value + port := cfg.Pbs.LocalPbsClientConfig.Port.Value return fmt.Sprintf("\"%s\"", portMode.DockerPortMapping(port)) } diff --git a/shared/version.go b/shared/version.go index 34b4c62..a5ebbb3 100644 --- a/shared/version.go +++ b/shared/version.go @@ -1,5 +1,5 @@ package shared const ( - HyperdriveVersion string = "1.2.3-dev" + HyperdriveVersion string = "1.3.0-dev" ) From 08457c7ebfbb4f5eda29bce2f21e3a120d6ca7d4 Mon Sep 17 00:00:00 2001 From: Joe Clapis Date: Mon, 21 Jul 2025 11:54:52 -0400 Subject: [PATCH 04/11] Some PBS fixes --- shared/config/hyperdrive-config.go | 2 +- shared/config/ids/pbs.go | 2 ++ shared/config/pbs/cb-pbs-config.go | 10 +++++----- shared/config/pbs/local-pbs.go | 1 + shared/config/pbs/mev-boost-config.go | 4 ++-- shared/config/pbs/pbs-config.go | 8 ++++---- shared/config/templating.go | 4 ++-- 7 files changed, 17 insertions(+), 14 deletions(-) diff --git a/shared/config/hyperdrive-config.go b/shared/config/hyperdrive-config.go index 6660c34..08efac5 100644 --- a/shared/config/hyperdrive-config.go +++ b/shared/config/hyperdrive-config.go @@ -151,7 +151,7 @@ func NewHyperdriveConfigForNetwork(hdDir string, networks []*HyperdriveSettings, ID: ids.NetworkID, Name: "Network", Description: "The Ethereum network you want to use - select Hoodi Testnet to practice with fake ETH, or Mainnet to stake on the real network using real ETH.", - AffectsContainers: []config.ContainerID{config.ContainerID_Daemon, config.ContainerID_ExecutionClient, config.ContainerID_BeaconNode, config.ContainerID_ValidatorClient, config.ContainerID_MevBoost}, + AffectsContainers: []config.ContainerID{config.ContainerID_Daemon, config.ContainerID_ExecutionClient, config.ContainerID_BeaconNode, config.ContainerID_ValidatorClient, pbs.ContainerID_Pbs}, CanBeBlank: false, OverwriteOnUpgrade: false, }, diff --git a/shared/config/ids/pbs.go b/shared/config/ids/pbs.go index 50c7137..7756ad5 100644 --- a/shared/config/ids/pbs.go +++ b/shared/config/ids/pbs.go @@ -14,6 +14,8 @@ const ( PbsBoostEdenID string = "edenEnabled" PbsTitanRegionalID string = "titanRegionaEnabled" PbsCustomRelaysID string = "customRelays" + PbsLocalID string = "localClient" + PbsExternalID string = "externalClient" // Commit-Boost PBS CommitBoostPbsID string = "commitBoost" diff --git a/shared/config/pbs/cb-pbs-config.go b/shared/config/pbs/cb-pbs-config.go index 51178ce..c72abfd 100644 --- a/shared/config/pbs/cb-pbs-config.go +++ b/shared/config/pbs/cb-pbs-config.go @@ -11,23 +11,23 @@ const ( commitBoostPbsTestTag string = "ghcr.io/commit-boost/pbs:v0.8.0" ) -// Configuration for Commit Boost's PBS service +// Configuration for Commit-Boost's PBS service type CommitBoostPbsConfig struct { - // The Docker Hub tag for MEV-Boost + // The Docker Hub tag for Commit-Boost PBS ContainerTag config.Parameter[string] // Custom command line flags AdditionalFlags config.Parameter[string] } -// Generates a new Commit Boost PBS service configuration +// Generates a new Commit-Boost PBS service configuration func NewCommitBoostPbsConfig() *CommitBoostPbsConfig { return &CommitBoostPbsConfig{ ContainerTag: config.Parameter[string]{ ParameterCommon: &config.ParameterCommon{ ID: nmc_ids.ContainerTagID, Name: "Container Tag", - Description: "The tag name of the Commit Boost PBS container you want to use.", + Description: "The tag name of the Commit-Boost PBS container you want to use.", AffectsContainers: []config.ContainerID{ContainerID_Pbs}, CanBeBlank: false, OverwriteOnUpgrade: true, @@ -42,7 +42,7 @@ func NewCommitBoostPbsConfig() *CommitBoostPbsConfig { ParameterCommon: &config.ParameterCommon{ ID: nmc_ids.AdditionalFlagsID, Name: "Additional Flags", - Description: "Additional custom command line flags you want to pass to MEV-Boost, to take advantage of other settings that Hyperdrive's configuration doesn't cover.", + Description: "Additional custom command line flags you want to pass to Commit-Boost PBS, to take advantage of other settings that Hyperdrive's configuration doesn't cover.", AffectsContainers: []config.ContainerID{ContainerID_Pbs}, CanBeBlank: true, OverwriteOnUpgrade: false, diff --git a/shared/config/pbs/local-pbs.go b/shared/config/pbs/local-pbs.go index 50cfa4c..016c83c 100644 --- a/shared/config/pbs/local-pbs.go +++ b/shared/config/pbs/local-pbs.go @@ -189,6 +189,7 @@ func (cfg *LocalPbsClientConfig) GetTitle() string { // Get the Parameters for this config func (cfg *LocalPbsClientConfig) GetParameters() []config.IParameter { return []config.IParameter{ + &cfg.Client, &cfg.RelaySelectionMode, &cfg.FlashbotsRelay, &cfg.BloxRouteMaxProfitRelay, diff --git a/shared/config/pbs/mev-boost-config.go b/shared/config/pbs/mev-boost-config.go index cc115cb..4b7e936 100644 --- a/shared/config/pbs/mev-boost-config.go +++ b/shared/config/pbs/mev-boost-config.go @@ -28,7 +28,7 @@ func NewMevBoostConfig() *MevBoostConfig { ID: nmc_ids.ContainerTagID, Name: "Container Tag", Description: "The tag name of the MEV-Boost container you want to use on Docker Hub.", - AffectsContainers: []config.ContainerID{config.ContainerID_MevBoost}, + AffectsContainers: []config.ContainerID{ContainerID_Pbs}, CanBeBlank: false, OverwriteOnUpgrade: true, }, @@ -43,7 +43,7 @@ func NewMevBoostConfig() *MevBoostConfig { ID: nmc_ids.AdditionalFlagsID, Name: "Additional Flags", Description: "Additional custom command line flags you want to pass to MEV-Boost, to take advantage of other settings that Hyperdrive's configuration doesn't cover.", - AffectsContainers: []config.ContainerID{config.ContainerID_MevBoost}, + AffectsContainers: []config.ContainerID{ContainerID_Pbs}, CanBeBlank: true, OverwriteOnUpgrade: false, }, diff --git a/shared/config/pbs/pbs-config.go b/shared/config/pbs/pbs-config.go index 76063f1..ed2911c 100644 --- a/shared/config/pbs/pbs-config.go +++ b/shared/config/pbs/pbs-config.go @@ -28,7 +28,7 @@ func NewPbsConfig() *PbsConfig { ID: ids.PbsEnableID, Name: "Enable PBS Client", Description: "Enable support for a PBS client. When one of your validators needs to propose a Beacon chain block, this client lets other professional services build it for you instead of building your own. These block builders find and extract extra MEV opportunities, giving you a healthy tip in return (which tends to be worth more than blocks you built on your own).", - AffectsContainers: []config.ContainerID{config.ContainerID_BeaconNode, config.ContainerID_MevBoost, config.ContainerID_ValidatorClient}, + AffectsContainers: []config.ContainerID{config.ContainerID_BeaconNode, ContainerID_Pbs, config.ContainerID_ValidatorClient}, CanBeBlank: false, OverwriteOnUpgrade: false, }, @@ -42,7 +42,7 @@ func NewPbsConfig() *PbsConfig { ID: ids.PbsModeID, Name: "PBS Client Mode", Description: "Choose whether to let Hyperdrive manage your PBS client (Locally Managed), or if you manage your own outside of Hyperdrive (Externally Managed).", - AffectsContainers: []config.ContainerID{config.ContainerID_BeaconNode, config.ContainerID_MevBoost}, + AffectsContainers: []config.ContainerID{config.ContainerID_BeaconNode, ContainerID_Pbs}, CanBeBlank: false, OverwriteOnUpgrade: false, }, @@ -85,7 +85,7 @@ func (cfg *PbsConfig) GetParameters() []config.IParameter { // Get the sections underneath this one func (cfg *PbsConfig) GetSubconfigs() map[string]config.IConfigSection { return map[string]config.IConfigSection{ - "Local PBS Service": cfg.LocalPbsClientConfig, - "External PBS Service": cfg.ExternalPbsClientConfig, + ids.PbsLocalID: cfg.LocalPbsClientConfig, + ids.PbsExternalID: cfg.ExternalPbsClientConfig, } } diff --git a/shared/config/templating.go b/shared/config/templating.go index bff2d70..793668c 100644 --- a/shared/config/templating.go +++ b/shared/config/templating.go @@ -38,8 +38,8 @@ func (c *HyperdriveConfig) PrometheusContainerName() string { return string(config.ContainerID_Prometheus) } -func (c *HyperdriveConfig) MevBoostContainerName() string { - return string(config.ContainerID_MevBoost) +func (c *HyperdriveConfig) PbsClientContainerName() string { + return string(pbs.ContainerID_Pbs) } func (c *HyperdriveConfig) ExecutionClientDataVolume() string { From a2db0427c9e6605099b03877289910a9e4f0b118 Mon Sep 17 00:00:00 2001 From: Joe Clapis Date: Tue, 22 Jul 2025 00:57:19 -0400 Subject: [PATCH 05/11] Added some templating parameters --- shared/config/pbs/cb-pbs-config.go | 5 +++++ shared/config/pbs/local-pbs.go | 34 ++++++++++++++++++++++++++++++ shared/config/settings.go | 11 ++++++---- shared/config/templating.go | 26 ++++++++++------------- 4 files changed, 57 insertions(+), 19 deletions(-) diff --git a/shared/config/pbs/cb-pbs-config.go b/shared/config/pbs/cb-pbs-config.go index c72abfd..eed8b8f 100644 --- a/shared/config/pbs/cb-pbs-config.go +++ b/shared/config/pbs/cb-pbs-config.go @@ -7,6 +7,7 @@ import ( // Constants const ( + CommitBoostConfigFile string = "cb_config.toml" commitBoostPbsProdTag string = "ghcr.io/commit-boost/pbs:v0.8.0" commitBoostPbsTestTag string = "ghcr.io/commit-boost/pbs:v0.8.0" ) @@ -71,3 +72,7 @@ func (cfg *CommitBoostPbsConfig) GetParameters() []config.IParameter { func (cfg *CommitBoostPbsConfig) GetSubconfigs() map[string]config.IConfigSection { return map[string]config.IConfigSection{} } + +func (cfg *CommitBoostPbsConfig) GetCommitBoostConfigFilename() string { + return CommitBoostConfigFile +} diff --git a/shared/config/pbs/local-pbs.go b/shared/config/pbs/local-pbs.go index 016c83c..cbf5f7f 100644 --- a/shared/config/pbs/local-pbs.go +++ b/shared/config/pbs/local-pbs.go @@ -378,3 +378,37 @@ func generateRelayParameter(id string, relay PbsRelay) config.Parameter[bool] { }, } } + +// Get the container tag for the currently selected PBS client +func (cfg *LocalPbsClientConfig) GetContainerTag() string { + switch cfg.Client.Value { + case PbsClient_CommitBoost: + return cfg.CommitBoostPbsConfig.ContainerTag.Value + case PbsClient_MevBoost: + return cfg.MevBoostConfig.ContainerTag.Value + default: + return "" + } +} + +// Get the additional flags for the currently selected PBS client +func (cfg *LocalPbsClientConfig) GetAdditionalFlags() string { + switch cfg.Client.Value { + case PbsClient_CommitBoost: + return cfg.CommitBoostPbsConfig.AdditionalFlags.Value + case PbsClient_MevBoost: + return cfg.MevBoostConfig.AdditionalFlags.Value + default: + return "" + } +} + +// Used by text/template to format pbs.yml +func (cfg *LocalPbsClientConfig) GetOpenPorts() string { + portMode := cfg.OpenRpcPort.Value + if !portMode.IsOpen() { + return "" + } + port := cfg.Port.Value + return fmt.Sprintf("\"%s\"", portMode.DockerPortMapping(port)) +} diff --git a/shared/config/settings.go b/shared/config/settings.go index 5297913..43bb407 100644 --- a/shared/config/settings.go +++ b/shared/config/settings.go @@ -14,10 +14,10 @@ const ( UserPasswordFilename string = "password" // Scripts - EcStartScript string = "start-ec.sh" - BnStartScript string = "start-bn.sh" - VcStartScript string = "start-vc.sh" - MevBoostStartScript string = "start-mev-boost.sh" + EcStartScript string = "start-ec.sh" + BnStartScript string = "start-bn.sh" + VcStartScript string = "start-vc.sh" + PbsStartScript string = "start-pbs.sh" // Volumes ExecutionClientDataVolume string = "ecdata" @@ -31,4 +31,7 @@ const ( // API Keys SecretsDir string = "secrets" DaemonKeyFilename string = "daemon.key" + + // PBS + PbsDir string = "pbs" ) diff --git a/shared/config/templating.go b/shared/config/templating.go index 793668c..6a2bacf 100644 --- a/shared/config/templating.go +++ b/shared/config/templating.go @@ -3,6 +3,7 @@ package config import ( "fmt" "net/url" + "path/filepath" "strings" "github.com/nodeset-org/hyperdrive-daemon/shared" @@ -385,7 +386,7 @@ func (cfg *HyperdriveConfig) GraffitiPrefix() string { } // Used by text/template to format validator.yml -func (cfg *HyperdriveConfig) MevBoostUrl() string { +func (cfg *HyperdriveConfig) PbsUrl() string { if !cfg.Pbs.Enable.Value { return "" } @@ -397,21 +398,16 @@ func (cfg *HyperdriveConfig) MevBoostUrl() string { return cfg.Pbs.ExternalPbsClientConfig.ExternalUrl.Value } -// ================= -// === MEV-Boost === -// ================= +// =========== +// === PBS === +// =========== -// Gets the name of the MEV-Boost start script -func (cfg *HyperdriveConfig) GetMevBoostStartScript() string { - return MevBoostStartScript +// Gets the name of the PBS start script +func (cfg *HyperdriveConfig) GetPbsStartScript() string { + return PbsStartScript } -// Used by text/template to format mev-boost.yml -func (cfg *HyperdriveConfig) GetMevBoostOpenPorts() string { - portMode := cfg.Pbs.LocalPbsClientConfig.OpenRpcPort.Value - if !portMode.IsOpen() { - return "" - } - port := cfg.Pbs.LocalPbsClientConfig.Port.Value - return fmt.Sprintf("\"%s\"", portMode.DockerPortMapping(port)) +// Get the path within the user dir that stores PBS config data +func (cfg *HyperdriveConfig) GetPbsConfigPath() string { + return filepath.Join(cfg.GetUserDirectory(), PbsDir) } From 59dc49b432dbd3dae1456baa9932be64fef743e7 Mon Sep 17 00:00:00 2001 From: Joe Clapis Date: Tue, 22 Jul 2025 02:42:35 -0400 Subject: [PATCH 06/11] Added GetChainName() for CB --- shared/config/pbs/cb-pbs-config.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/shared/config/pbs/cb-pbs-config.go b/shared/config/pbs/cb-pbs-config.go index eed8b8f..64f1b8b 100644 --- a/shared/config/pbs/cb-pbs-config.go +++ b/shared/config/pbs/cb-pbs-config.go @@ -1,6 +1,8 @@ package pbs import ( + "fmt" + "github.com/rocket-pool/node-manager-core/config" nmc_ids "github.com/rocket-pool/node-manager-core/config/ids" ) @@ -73,6 +75,21 @@ func (cfg *CommitBoostPbsConfig) GetSubconfigs() map[string]config.IConfigSectio return map[string]config.IConfigSection{} } +// Get the filename for the Commit-Boost PBS config func (cfg *CommitBoostPbsConfig) GetCommitBoostConfigFilename() string { return CommitBoostConfigFile } + +// Get the chain name for the Commit-Boost config file +func (cfg *CommitBoostPbsConfig) GetChainName(ethNetworkName string) (string, error) { + switch ethNetworkName { + case config.EthNetwork_Mainnet: + return "Mainnet", nil + case config.EthNetwork_Holesky: + return "Holesky", nil + case config.EthNetwork_Hoodi: + return "Hoodi", nil + default: + return "", fmt.Errorf("unsupported network %s for Commit-Boost PBS config", ethNetworkName) + } +} From 240393dea2c8c9a24192900f5e7ac857743cef12 Mon Sep 17 00:00:00 2001 From: Joe Clapis Date: Mon, 4 Aug 2025 22:52:36 -0400 Subject: [PATCH 07/11] Updated clients --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 1a085a5..a6398d5 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ toolchain go1.24.2 require github.com/rocket-pool/node-manager-core v0.5.2-0.20250430074613-76bcf6bb1be0 -replace github.com/rocket-pool/node-manager-core => github.com/nodeset-org/node-manager-core v0.6.1-0.20250713072817-a7f2e1dcdcda +replace github.com/rocket-pool/node-manager-core => github.com/nodeset-org/node-manager-core v0.6.1-0.20250805024925-a051dd4db835 require ( filippo.io/age v1.2.0 diff --git a/go.sum b/go.sum index 71985dd..3220eeb 100644 --- a/go.sum +++ b/go.sum @@ -374,8 +374,8 @@ github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOEL github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nodeset-org/node-manager-core v0.6.1-0.20250713072817-a7f2e1dcdcda h1:12cjBTL9QUu98WIM3gE0KmFFm5/vcJlCBckzVMDtzQ4= -github.com/nodeset-org/node-manager-core v0.6.1-0.20250713072817-a7f2e1dcdcda/go.mod h1:W2M1rQxoYunKI3cRlvbwQZR0UXxuloTI8FK9TryLbUQ= +github.com/nodeset-org/node-manager-core v0.6.1-0.20250805024925-a051dd4db835 h1:i17sUMDuJ+yHdZQQeaVkmCOtMaDiYmO/74ZO2+fS94o= +github.com/nodeset-org/node-manager-core v0.6.1-0.20250805024925-a051dd4db835/go.mod h1:W2M1rQxoYunKI3cRlvbwQZR0UXxuloTI8FK9TryLbUQ= github.com/nodeset-org/nodeset-client-go v1.3.1 h1:y1AYTDjlXauOPunO98ebb5VeOkckzeyLMBeewIoyQc4= github.com/nodeset-org/nodeset-client-go v1.3.1/go.mod h1:X7vNVv8nzjV5FaiRS9epHmj5woxGSRvY6+qn2l0JY4Q= github.com/nodeset-org/osha v0.4.0 h1:g5A6L33mzW26XMGtAOmiY4uWYO0EVaxAIe4+eizz/Qg= From 2882708d54e4b97136df254c7c1ea14a137104ef Mon Sep 17 00:00:00 2001 From: Joe Clapis Date: Tue, 5 Aug 2025 03:04:04 -0400 Subject: [PATCH 08/11] Updated NMC --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a6398d5..e4b6540 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ toolchain go1.24.2 require github.com/rocket-pool/node-manager-core v0.5.2-0.20250430074613-76bcf6bb1be0 -replace github.com/rocket-pool/node-manager-core => github.com/nodeset-org/node-manager-core v0.6.1-0.20250805024925-a051dd4db835 +replace github.com/rocket-pool/node-manager-core => github.com/nodeset-org/node-manager-core v0.6.1-0.20250814045526-6b3b3fe9286e require ( filippo.io/age v1.2.0 diff --git a/go.sum b/go.sum index 3220eeb..7c9948d 100644 --- a/go.sum +++ b/go.sum @@ -374,8 +374,8 @@ github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOEL github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nodeset-org/node-manager-core v0.6.1-0.20250805024925-a051dd4db835 h1:i17sUMDuJ+yHdZQQeaVkmCOtMaDiYmO/74ZO2+fS94o= -github.com/nodeset-org/node-manager-core v0.6.1-0.20250805024925-a051dd4db835/go.mod h1:W2M1rQxoYunKI3cRlvbwQZR0UXxuloTI8FK9TryLbUQ= +github.com/nodeset-org/node-manager-core v0.6.1-0.20250814045526-6b3b3fe9286e h1:j7VRbgiBUj6qpaZyjnINzhZxiM4UMoV1pEVe8O8W2kE= +github.com/nodeset-org/node-manager-core v0.6.1-0.20250814045526-6b3b3fe9286e/go.mod h1:W2M1rQxoYunKI3cRlvbwQZR0UXxuloTI8FK9TryLbUQ= github.com/nodeset-org/nodeset-client-go v1.3.1 h1:y1AYTDjlXauOPunO98ebb5VeOkckzeyLMBeewIoyQc4= github.com/nodeset-org/nodeset-client-go v1.3.1/go.mod h1:X7vNVv8nzjV5FaiRS9epHmj5woxGSRvY6+qn2l0JY4Q= github.com/nodeset-org/osha v0.4.0 h1:g5A6L33mzW26XMGtAOmiY4uWYO0EVaxAIe4+eizz/Qg= From 6de08f31187d09b174470e3c5a743c70e6620936 Mon Sep 17 00:00:00 2001 From: Joe Clapis Date: Sun, 19 Oct 2025 14:43:00 -0400 Subject: [PATCH 09/11] Updated NMC --- go.mod | 34 ++++++++++----------- go.sum | 96 ++++++++++++++++++++++++++++------------------------------ 2 files changed, 62 insertions(+), 68 deletions(-) diff --git a/go.mod b/go.mod index e4b6540..c396925 100644 --- a/go.mod +++ b/go.mod @@ -1,21 +1,21 @@ module github.com/nodeset-org/hyperdrive-daemon -go 1.24 +go 1.24.0 toolchain go1.24.2 require github.com/rocket-pool/node-manager-core v0.5.2-0.20250430074613-76bcf6bb1be0 -replace github.com/rocket-pool/node-manager-core => github.com/nodeset-org/node-manager-core v0.6.1-0.20250814045526-6b3b3fe9286e +replace github.com/rocket-pool/node-manager-core => github.com/nodeset-org/node-manager-core v0.6.1-0.20251020134607-548fce73442e require ( filippo.io/age v1.2.0 github.com/alessio/shellescape v1.4.2 github.com/docker/docker v27.3.1+incompatible - github.com/ethereum/go-ethereum v1.15.8 + github.com/ethereum/go-ethereum v1.16.5 github.com/fatih/color v1.17.0 github.com/goccy/go-json v0.10.4 - github.com/golang-jwt/jwt/v4 v4.5.1 + github.com/golang-jwt/jwt/v4 v4.5.2 github.com/google/uuid v1.6.0 github.com/gorilla/mux v1.8.1 github.com/hashicorp/go-version v1.6.0 @@ -25,7 +25,7 @@ require ( github.com/stretchr/testify v1.10.0 github.com/urfave/cli/v2 v2.27.5 github.com/wealdtech/go-ens/v3 v3.6.0 - golang.org/x/sync v0.11.0 + golang.org/x/sync v0.12.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -36,15 +36,14 @@ require ( github.com/Microsoft/go-winio v0.6.2 // indirect github.com/Microsoft/hcsshim v0.12.5 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bits-and-blooms/bitset v1.17.0 // indirect + github.com/bits-and-blooms/bitset v1.20.0 // indirect github.com/btcsuite/btcd v0.24.2 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/btcsuite/btcd/btcutil v1.1.5 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/compose-spec/compose-go/v2 v2.1.3 // indirect - github.com/consensys/bavard v0.1.22 // indirect - github.com/consensys/gnark-crypto v0.14.0 // indirect + github.com/consensys/gnark-crypto v0.18.0 // indirect github.com/containerd/cgroups/v3 v3.0.3 // indirect github.com/containerd/containerd v1.7.19 // indirect github.com/containerd/containerd/api v1.7.19 // indirect @@ -56,8 +55,8 @@ require ( github.com/containerd/ttrpc v1.2.5 // indirect github.com/containerd/typeurl/v2 v2.2.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect + github.com/crate-crypto/go-eth-kzg v1.4.0 // indirect github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect - github.com/crate-crypto/go-kzg-4844 v1.1.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect @@ -67,10 +66,11 @@ require ( github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect github.com/docker/go-metrics v0.0.1 // indirect github.com/docker/go-units v0.5.0 // indirect - github.com/ethereum/c-kzg-4844 v1.0.2 // indirect + github.com/emicklei/dot v1.6.2 // indirect + github.com/ethereum/c-kzg-4844/v2 v2.1.3 // indirect github.com/ethereum/go-verkle v0.2.2 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/ferranbt/fastssz v0.1.3 // indirect + github.com/ferranbt/fastssz v0.1.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/glendc/go-external-ip v0.1.0 // indirect github.com/go-logr/logr v1.4.2 // indirect @@ -97,7 +97,6 @@ require ( github.com/minio/highwayhash v1.0.3 // indirect github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/locker v1.0.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect @@ -139,7 +138,7 @@ require ( github.com/shirou/gopsutil v3.21.11+incompatible // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect - github.com/supranational/blst v0.3.14 // indirect + github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe // indirect github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e // indirect github.com/tklauser/go-sysconf v0.3.14 // indirect github.com/tklauser/numcpus v0.8.0 // indirect @@ -161,11 +160,11 @@ require ( go.opentelemetry.io/otel v1.28.0 // indirect go.opentelemetry.io/otel/metric v1.28.0 // indirect go.opentelemetry.io/otel/trace v1.28.0 // indirect - golang.org/x/crypto v0.35.0 // indirect + golang.org/x/crypto v0.36.0 // indirect golang.org/x/exp v0.0.0-20240716160929-1d5bc16f04a8 // indirect - golang.org/x/net v0.36.0 // indirect - golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/net v0.38.0 // indirect + golang.org/x/sys v0.36.0 // indirect + golang.org/x/text v0.23.0 // indirect golang.org/x/time v0.9.0 // indirect google.golang.org/genproto v0.0.0-20240711142825-46eb208f015d // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d // indirect @@ -175,5 +174,4 @@ require ( gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect lukechampine.com/blake3 v1.2.1 // indirect - rsc.io/tmplfunc v0.0.3 // indirect ) diff --git a/go.sum b/go.sum index 7c9948d..8578649 100644 --- a/go.sum +++ b/go.sum @@ -20,8 +20,8 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Microsoft/hcsshim v0.12.5 h1:bpTInLlDy/nDRWFVcefDZZ1+U8tS+rz3MxjKgu9boo0= github.com/Microsoft/hcsshim v0.12.5/go.mod h1:tIUGego4G1EN5Hb6KC90aDYiUI2dqLSTTOCjVNpOgZ8= -github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= -github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= +github.com/VictoriaMetrics/fastcache v1.13.0 h1:AW4mheMR5Vd9FkAPUv+NH6Nhw+fmbTMGMsNAoA/+4G0= +github.com/VictoriaMetrics/fastcache v1.13.0/go.mod h1:hHXhl4DA2fTL2HTZDJFXWgW0LNjo6B+4aj2Wmng3TjU= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -33,8 +33,8 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24 github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= -github.com/bits-and-blooms/bitset v1.17.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU= +github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A= @@ -76,18 +76,16 @@ github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/e github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= -github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/pebble v1.1.5 h1:5AAWCBWbat0uE0blr8qzufZP5tBjkRyy/jWe1QWLnvw= +github.com/cockroachdb/pebble v1.1.5/go.mod h1:17wO9el1YEigxkP/YtV8NtCivQDgoCyBg5c4VR/eOWo= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/compose-spec/compose-go/v2 v2.1.3 h1:bD67uqLuL/XgkAK6ir3xZvNLFPxPScEi1KW7R5esrLE= github.com/compose-spec/compose-go/v2 v2.1.3/go.mod h1:lFN0DrMxIncJGYAXTfWuajfwj5haBJqrBkarHcnjJKc= -github.com/consensys/bavard v0.1.22 h1:Uw2CGvbXSZWhqK59X0VG/zOjpTFuOMcPLStrp1ihI0A= -github.com/consensys/bavard v0.1.22/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= -github.com/consensys/gnark-crypto v0.14.0 h1:DDBdl4HaBtdQsq/wfMwJvZNE80sHidrK3Nfrefatm0E= -github.com/consensys/gnark-crypto v0.14.0/go.mod h1:CU4UijNPsHawiVGNxe9co07FkzCeWHHrb1li/n1XoU0= +github.com/consensys/gnark-crypto v0.18.0 h1:vIye/FqI50VeAr0B3dx+YjeIvmc3LWz4yEfbWBpTUf0= +github.com/consensys/gnark-crypto v0.18.0/go.mod h1:L3mXGFTe1ZN+RSJ+CLjUt9x7PNdx8ubaYfDROyp2Z8c= github.com/containerd/cgroups/v3 v3.0.3 h1:S5ByHZ/h9PMe5IOQoN7E+nMc2UcLEM/V48DGDJ9kip0= github.com/containerd/cgroups/v3 v3.0.3/go.mod h1:8HBe7V3aWGLFPd/k03swSIsGjZhHI2WzJmticMgVuz0= github.com/containerd/containerd v1.7.19 h1:/xQ4XRJ0tamDkdzrrBAUy/LE5nCcxFKdBm4EcPrSMEE= @@ -110,10 +108,10 @@ github.com/containerd/typeurl/v2 v2.2.0 h1:6NBDbQzr7I5LHgp34xAXYF5DOTQDn05X58lsP github.com/containerd/typeurl/v2 v2.2.0/go.mod h1:8XOOxnyatxSWuG8OfsZXVnAF4iZfedjS/8UHSPJnX4g= github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/crate-crypto/go-eth-kzg v1.4.0 h1:WzDGjHk4gFg6YzV0rJOAsTK4z3Qkz5jd4RE3DAvPFkg= +github.com/crate-crypto/go-eth-kzg v1.4.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOVl3J+MYp5kPMoUZPp7aOYHtaua31lwRHg= github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a/go.mod h1:sTwzHBvIzm2RfVCGNEBZgRyjwK40bVoun3ZnGOCafNM= -github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4= -github.com/crate-crypto/go-kzg-4844 v1.1.0/go.mod h1:JolLjpSff1tCCJKaJx4psrlEdlXuJEC996PL3tTAFks= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= @@ -122,6 +120,8 @@ github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dchest/siphash v1.2.3 h1:QXwFc8cFOR2dSa/gE6o/HokBMWtLUaNDVd+22aKHeEA= +github.com/dchest/siphash v1.2.3/go.mod h1:0NvQU092bT0ipiFN++/rXm69QG9tVxLAlQHIXMPAkHc= github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= @@ -147,22 +147,26 @@ github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQ github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A= +github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/c-kzg-4844 v1.0.2 h1:8tV84BCEiPeOkiVgW9mpYBeBUir2bkCNVqxPwwVeO+s= -github.com/ethereum/c-kzg-4844 v1.0.2/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/ethereum/go-ethereum v1.15.8 h1:H6NilvRXFVoHiXZ3zkuTqKW5XcxjLZniV5UjxJt1GJU= -github.com/ethereum/go-ethereum v1.15.8/go.mod h1:+S9k+jFzlyVTNcYGvqFhzN/SFhI6vA+aOY4T5tLSPL0= +github.com/ethereum/c-kzg-4844/v2 v2.1.3 h1:DQ21UU0VSsuGy8+pcMJHDS0CV1bKmJmxsJYK8l3MiLU= +github.com/ethereum/c-kzg-4844/v2 v2.1.3/go.mod h1:fyNcYI/yAuLWJxf4uzVtS8VDKeoAaRM8G/+ADz/pRdA= +github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab h1:rvv6MJhy07IMfEKuARQ9TKojGqLVNxQajaXEp/BoqSk= +github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab/go.mod h1:IuLm4IsPipXKF7CW5Lzf68PIbZ5yl7FFd74l/E0o9A8= +github.com/ethereum/go-ethereum v1.16.5 h1:GZI995PZkzP7ySCxEFaOPzS8+bd8NldE//1qvQDQpe0= +github.com/ethereum/go-ethereum v1.16.5/go.mod h1:kId9vOtlYg3PZk9VwKbGlQmSACB5ESPTBGT+M9zjmok= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/ferranbt/fastssz v0.1.3 h1:ZI+z3JH05h4kgmFXdHuR1aWYsgrg7o+Fw7/NCzM16Mo= -github.com/ferranbt/fastssz v0.1.3/go.mod h1:0Y9TEd/9XuFlh7mskMPfXiI2Dkw4Ddg9EyXt1W7MRvE= +github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeDY= +github.com/ferranbt/fastssz v0.1.4/go.mod h1:Ea3+oeoRGGLGm5shYAeDgu6PGUlcvQhE2fILyD9+tGg= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= @@ -189,13 +193,13 @@ github.com/go-viper/mapstructure/v2 v2.0.0 h1:dhn8MZ1gZ0mzeodTG3jt5Vj/o87xZKuNAp github.com/go-viper/mapstructure/v2 v2.0.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/goccy/go-json v0.10.4 h1:JSwxQzIqKfmFX1swYPpUThQZp/Ka4wzJdK0LWVytLPM= github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= -github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= -github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= +github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= -github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= +github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= @@ -215,8 +219,8 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= +github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -228,7 +232,6 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -258,8 +261,8 @@ github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iP github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/herumi/bls-eth-go-binary v1.36.1 h1:SfLjxbO1fWkKtKS7J3Ezd1/5QXrcaTZgWynxdSe10hQ= github.com/herumi/bls-eth-go-binary v1.36.1/go.mod h1:luAnRm3OsMQeokhGzpYmc0ZKwawY7o87PUEP11Z7r7U= -github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= -github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= +github.com/holiman/billy v0.0.0-20250707135307-f2f9b9aae7db h1:IZUYC/xb3giYwBLMnr8d0TGTzPKFGNTCGgGLoyeX330= +github.com/holiman/billy v0.0.0-20250707135307-f2f9b9aae7db/go.mod h1:xTEYN9KCHxuYHs+NmrmzFcnvHMzLLNiGFafCb1n3Mfg= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= github.com/holiman/uint256 v1.3.2 h1:a9EgMPSC1AAaj1SZL5zIQD3WbwTuHrMGOerLjGmM/TA= @@ -320,9 +323,6 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= -github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= -github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= -github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= @@ -374,8 +374,8 @@ github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOEL github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nodeset-org/node-manager-core v0.6.1-0.20250814045526-6b3b3fe9286e h1:j7VRbgiBUj6qpaZyjnINzhZxiM4UMoV1pEVe8O8W2kE= -github.com/nodeset-org/node-manager-core v0.6.1-0.20250814045526-6b3b3fe9286e/go.mod h1:W2M1rQxoYunKI3cRlvbwQZR0UXxuloTI8FK9TryLbUQ= +github.com/nodeset-org/node-manager-core v0.6.1-0.20251020134607-548fce73442e h1:OOpGMGi6AQ7BRBciWLj0iS6U1bySoceH6kQGYsq0UJg= +github.com/nodeset-org/node-manager-core v0.6.1-0.20251020134607-548fce73442e/go.mod h1:Wk7HmUGOXu9N+GF0O6sND2yT5v3gMMb70Y4HaZnv5v8= github.com/nodeset-org/nodeset-client-go v1.3.1 h1:y1AYTDjlXauOPunO98ebb5VeOkckzeyLMBeewIoyQc4= github.com/nodeset-org/nodeset-client-go v1.3.1/go.mod h1:X7vNVv8nzjV5FaiRS9epHmj5woxGSRvY6+qn2l0JY4Q= github.com/nodeset-org/osha v0.4.0 h1:g5A6L33mzW26XMGtAOmiY4uWYO0EVaxAIe4+eizz/Qg= @@ -483,8 +483,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/supranational/blst v0.3.14 h1:xNMoHRJOTwMn63ip6qoWJ2Ymgvj7E2b9jY2FAwY+qRo= -github.com/supranational/blst v0.3.14/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe h1:nbdqkIGOGfUAD54q1s2YBcBz/WcsxCO9HUQ4aGV5hUw= +github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/thomaso-mirodin/intmath v0.0.0-20160323211736-5dc6d854e46e h1:cR8/SYRgyQCt5cNCMniB/ZScMkhI9nk8U5C7SbISXjo= @@ -497,8 +497,6 @@ github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2n github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/uber/jaeger-client-go v2.25.0+incompatible h1:IxcNZ7WRY1Y3G4poYlx24szfsn/3LvK9QHCq9oQw8+U= github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/umbracle/gohashtree v0.0.2-alpha.0.20230207094856-5b775a815c10 h1:CQh33pStIp/E30b7TxDlXfM0145bn2e8boI30IxAhTg= -github.com/umbracle/gohashtree v0.0.2-alpha.0.20230207094856-5b775a815c10/go.mod h1:x/Pa0FF5Te9kdrlZKJK82YmAkvL8+f989USgz6Jiw7M= github.com/urfave/cli/v2 v2.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w= github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts= @@ -557,8 +555,8 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= -golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240716160929-1d5bc16f04a8 h1:Z+vTUQyBb738QmIhbJx3z4htsxDeI+rd0EHvNm8jHkg= golang.org/x/exp v0.0.0-20240716160929-1d5bc16f04a8/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= @@ -582,8 +580,8 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= -golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -593,8 +591,8 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -619,15 +617,15 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= -golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= +golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -707,8 +705,6 @@ k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 h1:kmDqav+P+/5e1i9tFfHq1qcF3sOrD k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= -rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= -rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= From 41f88d3d2b5cae9114390fcaf84abc3fbc24d574 Mon Sep 17 00:00:00 2001 From: Joe Clapis Date: Tue, 21 Oct 2025 08:13:06 -0400 Subject: [PATCH 10/11] Updated CB test tag --- shared/config/pbs/cb-pbs-config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/config/pbs/cb-pbs-config.go b/shared/config/pbs/cb-pbs-config.go index 64f1b8b..640f496 100644 --- a/shared/config/pbs/cb-pbs-config.go +++ b/shared/config/pbs/cb-pbs-config.go @@ -11,7 +11,7 @@ import ( const ( CommitBoostConfigFile string = "cb_config.toml" commitBoostPbsProdTag string = "ghcr.io/commit-boost/pbs:v0.8.0" - commitBoostPbsTestTag string = "ghcr.io/commit-boost/pbs:v0.8.0" + commitBoostPbsTestTag string = "ghcr.io/commit-boost/pbs:v0.8.1-rc.4" ) // Configuration for Commit-Boost's PBS service From c09ac3e9f9b69afd2c35bfe6f6f31fa365cd4e0f Mon Sep 17 00:00:00 2001 From: Joe Clapis Date: Tue, 21 Oct 2025 09:26:05 -0400 Subject: [PATCH 11/11] Updated to 1.3.0 B1 --- go.mod | 2 +- go.sum | 4 ++-- shared/version.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index c396925..01f0139 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ toolchain go1.24.2 require github.com/rocket-pool/node-manager-core v0.5.2-0.20250430074613-76bcf6bb1be0 -replace github.com/rocket-pool/node-manager-core => github.com/nodeset-org/node-manager-core v0.6.1-0.20251020134607-548fce73442e +replace github.com/rocket-pool/node-manager-core => github.com/nodeset-org/node-manager-core v0.7.0 require ( filippo.io/age v1.2.0 diff --git a/go.sum b/go.sum index 8578649..1de0975 100644 --- a/go.sum +++ b/go.sum @@ -374,8 +374,8 @@ github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOEL github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nodeset-org/node-manager-core v0.6.1-0.20251020134607-548fce73442e h1:OOpGMGi6AQ7BRBciWLj0iS6U1bySoceH6kQGYsq0UJg= -github.com/nodeset-org/node-manager-core v0.6.1-0.20251020134607-548fce73442e/go.mod h1:Wk7HmUGOXu9N+GF0O6sND2yT5v3gMMb70Y4HaZnv5v8= +github.com/nodeset-org/node-manager-core v0.7.0 h1:UCv9lAUetJe4+6u0ZxU6/3jCCs/ekzM33n/sE75t3ME= +github.com/nodeset-org/node-manager-core v0.7.0/go.mod h1:Wk7HmUGOXu9N+GF0O6sND2yT5v3gMMb70Y4HaZnv5v8= github.com/nodeset-org/nodeset-client-go v1.3.1 h1:y1AYTDjlXauOPunO98ebb5VeOkckzeyLMBeewIoyQc4= github.com/nodeset-org/nodeset-client-go v1.3.1/go.mod h1:X7vNVv8nzjV5FaiRS9epHmj5woxGSRvY6+qn2l0JY4Q= github.com/nodeset-org/osha v0.4.0 h1:g5A6L33mzW26XMGtAOmiY4uWYO0EVaxAIe4+eizz/Qg= diff --git a/shared/version.go b/shared/version.go index a5ebbb3..3d7547b 100644 --- a/shared/version.go +++ b/shared/version.go @@ -1,5 +1,5 @@ package shared const ( - HyperdriveVersion string = "1.3.0-dev" + HyperdriveVersion string = "1.3.0-b1" )