diff --git a/rocketpool/node/defend-challenge-exit.go b/rocketpool/node/defend-challenge-exit.go index a18ffe89b..f8d7101d2 100644 --- a/rocketpool/node/defend-challenge-exit.go +++ b/rocketpool/node/defend-challenge-exit.go @@ -77,8 +77,8 @@ func newDefendChallengeExit(c *cli.Context, logger log.ColorLogger) (*defendChal priorityFeeGwei := cfg.Smartnode.PriorityFee.Value.(float64) var priorityFee *big.Int if priorityFeeGwei == 0 { - logger.Println("WARNING: priority fee was missing or 0, setting a default of 2.") - priorityFee = eth.GweiToWei(2) + logger.Printlnf("WARNING: priority fee was missing or 0, setting a default of %.2f.", rpgas.DefaultPriorityFeeGwei) + priorityFee = eth.GweiToWei(rpgas.DefaultPriorityFeeGwei) } else { priorityFee = eth.GweiToWei(priorityFeeGwei) } diff --git a/rocketpool/node/defend-pdao-props.go b/rocketpool/node/defend-pdao-props.go index aeade6303..0d115e7db 100644 --- a/rocketpool/node/defend-pdao-props.go +++ b/rocketpool/node/defend-pdao-props.go @@ -81,8 +81,8 @@ func newDefendPdaoProps(c *cli.Context, logger log.ColorLogger) (*defendPdaoProp priorityFeeGwei := cfg.Smartnode.PriorityFee.Value.(float64) var priorityFee *big.Int if priorityFeeGwei == 0 { - logger.Println("WARNING: priority fee was missing or 0, setting a default of 2.") - priorityFee = eth.GweiToWei(2) + logger.Printlnf("WARNING: priority fee was missing or 0, setting a default of %.2f.", rpgas.DefaultPriorityFeeGwei) + priorityFee = eth.GweiToWei(rpgas.DefaultPriorityFeeGwei) } else { priorityFee = eth.GweiToWei(priorityFeeGwei) } diff --git a/rocketpool/node/distribute-minipools.go b/rocketpool/node/distribute-minipools.go index 1d18ece48..aaf27eb7b 100644 --- a/rocketpool/node/distribute-minipools.go +++ b/rocketpool/node/distribute-minipools.go @@ -99,8 +99,8 @@ func newDistributeMinipools(c *cli.Context, logger log.ColorLogger) (*distribute priorityFeeGwei := cfg.Smartnode.PriorityFee.Value.(float64) var priorityFee *big.Int if priorityFeeGwei == 0 { - logger.Println("WARNING: priority fee was missing or 0, setting a default of 2.") - priorityFee = eth.GweiToWei(2) + logger.Printlnf("WARNING: priority fee was missing or 0, setting a default of %.2f.", rpgas.DefaultPriorityFeeGwei) + priorityFee = eth.GweiToWei(rpgas.DefaultPriorityFeeGwei) } else { priorityFee = eth.GweiToWei(priorityFeeGwei) } diff --git a/rocketpool/node/notify-final-balance.go b/rocketpool/node/notify-final-balance.go index 3bc7ab4ba..51931cf2e 100644 --- a/rocketpool/node/notify-final-balance.go +++ b/rocketpool/node/notify-final-balance.go @@ -80,8 +80,8 @@ func newNotifyFinalBalance(c *cli.Context, logger log.ColorLogger) (*notifyFinal priorityFeeGwei := cfg.Smartnode.PriorityFee.Value.(float64) var priorityFee *big.Int if priorityFeeGwei == 0 { - logger.Println("WARNING: priority fee was missing or 0, setting a default of 2.") - priorityFee = eth.GweiToWei(2) + logger.Printlnf("WARNING: priority fee was missing or 0, setting a default of %.2f.", rpgas.DefaultPriorityFeeGwei) + priorityFee = eth.GweiToWei(rpgas.DefaultPriorityFeeGwei) } else { priorityFee = eth.GweiToWei(priorityFeeGwei) } diff --git a/rocketpool/node/notify-validator-exit.go b/rocketpool/node/notify-validator-exit.go index 7c57e9cbe..2e0924268 100644 --- a/rocketpool/node/notify-validator-exit.go +++ b/rocketpool/node/notify-validator-exit.go @@ -79,8 +79,8 @@ func newNotifyValidatorExit(c *cli.Context, logger log.ColorLogger) (*notifyVali priorityFeeGwei := cfg.Smartnode.PriorityFee.Value.(float64) var priorityFee *big.Int if priorityFeeGwei == 0 { - logger.Println("WARNING: priority fee was missing or 0, setting a default of 2.") - priorityFee = eth.GweiToWei(2) + logger.Printlnf("WARNING: priority fee was missing or 0, setting a default of %.2f.", rpgas.DefaultPriorityFeeGwei) + priorityFee = eth.GweiToWei(rpgas.DefaultPriorityFeeGwei) } else { priorityFee = eth.GweiToWei(priorityFeeGwei) } diff --git a/rocketpool/node/prestake-megapool-validator.go b/rocketpool/node/prestake-megapool-validator.go index c23d01cae..45551b1c5 100644 --- a/rocketpool/node/prestake-megapool-validator.go +++ b/rocketpool/node/prestake-megapool-validator.go @@ -74,8 +74,8 @@ func newPrestakeMegapoolValidator(c *cli.Context, logger log.ColorLogger) (*pres priorityFeeGwei := cfg.Smartnode.PriorityFee.Value.(float64) var priorityFee *big.Int if priorityFeeGwei == 0 { - logger.Println("WARNING: priority fee was missing or 0, setting a default of 2.") - priorityFee = eth.GweiToWei(2) + logger.Printlnf("WARNING: priority fee was missing or 0, setting a default of %.2f.", rpgas.DefaultPriorityFeeGwei) + priorityFee = eth.GweiToWei(rpgas.DefaultPriorityFeeGwei) } else { priorityFee = eth.GweiToWei(priorityFeeGwei) } diff --git a/rocketpool/node/promote-minipools.go b/rocketpool/node/promote-minipools.go index 29dd56d26..55aba4137 100644 --- a/rocketpool/node/promote-minipools.go +++ b/rocketpool/node/promote-minipools.go @@ -76,8 +76,8 @@ func newPromoteMinipools(c *cli.Context, logger log.ColorLogger) (*promoteMinipo priorityFeeGwei := cfg.Smartnode.PriorityFee.Value.(float64) var priorityFee *big.Int if priorityFeeGwei == 0 { - logger.Println("WARNING: priority fee was missing or 0, setting a default of 2.") - priorityFee = eth.GweiToWei(2) + logger.Printlnf("WARNING: priority fee was missing or 0, setting a default of %.2f.", rpgas.DefaultPriorityFeeGwei) + priorityFee = eth.GweiToWei(rpgas.DefaultPriorityFeeGwei) } else { priorityFee = eth.GweiToWei(priorityFeeGwei) } diff --git a/rocketpool/node/provision-express-tickets.go b/rocketpool/node/provision-express-tickets.go index 1e992ca8e..af11b9ea0 100644 --- a/rocketpool/node/provision-express-tickets.go +++ b/rocketpool/node/provision-express-tickets.go @@ -76,8 +76,8 @@ func newProvisionExpressTickets(c *cli.Context, logger log.ColorLogger) (*provis priorityFeeGwei := cfg.Smartnode.PriorityFee.Value.(float64) var priorityFee *big.Int if priorityFeeGwei == 0 { - logger.Println("WARNING: priority fee was missing or 0, setting a default of 2.") - priorityFee = eth.GweiToWei(2) + logger.Printlnf("WARNING: priority fee was missing or 0, setting a default of %.2f.", rpgas.DefaultPriorityFeeGwei) + priorityFee = eth.GweiToWei(rpgas.DefaultPriorityFeeGwei) } else { priorityFee = eth.GweiToWei(priorityFeeGwei) } diff --git a/rocketpool/node/reduce-bonds.go b/rocketpool/node/reduce-bonds.go index 35fe89dd8..65fd501aa 100644 --- a/rocketpool/node/reduce-bonds.go +++ b/rocketpool/node/reduce-bonds.go @@ -78,8 +78,8 @@ func newReduceBonds(c *cli.Context, logger log.ColorLogger) (*reduceBonds, error priorityFeeGwei := cfg.Smartnode.PriorityFee.Value.(float64) var priorityFee *big.Int if priorityFeeGwei == 0 { - logger.Println("WARNING: priority fee was missing or 0, setting a default of 2.") - priorityFee = eth.GweiToWei(2) + logger.Printlnf("WARNING: priority fee was missing or 0, setting a default of %.2f.", rpgas.DefaultPriorityFeeGwei) + priorityFee = eth.GweiToWei(rpgas.DefaultPriorityFeeGwei) } else { priorityFee = eth.GweiToWei(priorityFeeGwei) } diff --git a/rocketpool/node/stake-megapool-validator.go b/rocketpool/node/stake-megapool-validator.go index bd0590a3a..ad11ab9de 100644 --- a/rocketpool/node/stake-megapool-validator.go +++ b/rocketpool/node/stake-megapool-validator.go @@ -78,8 +78,8 @@ func newStakeMegapoolValidator(c *cli.Context, logger log.ColorLogger) (*stakeMe priorityFeeGwei := cfg.Smartnode.PriorityFee.Value.(float64) var priorityFee *big.Int if priorityFeeGwei == 0 { - logger.Println("WARNING: priority fee was missing or 0, setting a default of 2.") - priorityFee = eth.GweiToWei(2) + logger.Printlnf("WARNING: priority fee was missing or 0, setting a default of %.2f.", rpgas.DefaultPriorityFeeGwei) + priorityFee = eth.GweiToWei(rpgas.DefaultPriorityFeeGwei) } else { priorityFee = eth.GweiToWei(priorityFeeGwei) } diff --git a/rocketpool/node/stake-prelaunch-minipools.go b/rocketpool/node/stake-prelaunch-minipools.go index 8d8b71b72..56da258de 100644 --- a/rocketpool/node/stake-prelaunch-minipools.go +++ b/rocketpool/node/stake-prelaunch-minipools.go @@ -83,8 +83,8 @@ func newStakePrelaunchMinipools(c *cli.Context, logger log.ColorLogger) (*stakeP priorityFeeGwei := cfg.Smartnode.PriorityFee.Value.(float64) var priorityFee *big.Int if priorityFeeGwei == 0 { - logger.Println("WARNING: priority fee was missing or 0, setting a default of 2.") - priorityFee = eth.GweiToWei(2) + logger.Printlnf("WARNING: priority fee was missing or 0, setting a default of %.2f.", rpgas.DefaultPriorityFeeGwei) + priorityFee = eth.GweiToWei(rpgas.DefaultPriorityFeeGwei) } else { priorityFee = eth.GweiToWei(priorityFeeGwei) } diff --git a/rocketpool/node/verify-pdao-props.go b/rocketpool/node/verify-pdao-props.go index 239065aa5..555a7e042 100644 --- a/rocketpool/node/verify-pdao-props.go +++ b/rocketpool/node/verify-pdao-props.go @@ -90,8 +90,8 @@ func newVerifyPdaoProps(c *cli.Context, logger log.ColorLogger) (*verifyPdaoProp priorityFeeGwei := cfg.Smartnode.PriorityFee.Value.(float64) var priorityFee *big.Int if priorityFeeGwei == 0 { - logger.Println("WARNING: priority fee was missing or 0, setting a default of 2.") - priorityFee = eth.GweiToWei(2) + logger.Printlnf("WARNING: priority fee was missing or 0, setting a default of %.2f.", rpgas.DefaultPriorityFeeGwei) + priorityFee = eth.GweiToWei(rpgas.DefaultPriorityFeeGwei) } else { priorityFee = eth.GweiToWei(priorityFeeGwei) } diff --git a/rocketpool/watchtower/process-penalties.go b/rocketpool/watchtower/process-penalties.go index 295d10534..c47f312dd 100644 --- a/rocketpool/watchtower/process-penalties.go +++ b/rocketpool/watchtower/process-penalties.go @@ -97,8 +97,8 @@ func newProcessPenalties(c *cli.Context, logger log.ColorLogger, errorLogger log priorityFeeGwei := cfg.Smartnode.PriorityFee.Value.(float64) var priorityFee *big.Int if priorityFeeGwei == 0 { - logger.Println("WARNING: priority fee was missing or 0, setting a default of 2.") - priorityFee = eth.GweiToWei(2) + logger.Printlnf("WARNING: priority fee was missing or 0, setting a default of %.2f.", rpgas.DefaultPriorityFeeGwei) + priorityFee = eth.GweiToWei(rpgas.DefaultPriorityFeeGwei) } else { priorityFee = eth.GweiToWei(priorityFeeGwei) } diff --git a/shared/services/config/migration/migration-manager.go b/shared/services/config/migration/migration-manager.go index f831d399c..4ee9e8ada 100644 --- a/shared/services/config/migration/migration-manager.go +++ b/shared/services/config/migration/migration-manager.go @@ -41,6 +41,10 @@ func UpdateConfig(serializedConfig map[string]map[string]string) error { if err != nil { return err } + v1189, err := parseVersion("1.18.9") + if err != nil { + return err + } // Create the collection of upgraders upgraders := []ConfigUpgrader{ @@ -61,6 +65,10 @@ func UpdateConfig(serializedConfig map[string]map[string]string) error { Version: v1160, UpgradeFunc: upgradeFromV1160, }, + { + Version: v1189, + UpgradeFunc: upgradeFromV1189, + }, } // Find the index of the provided config's version diff --git a/shared/services/config/migration/v1189-manager.go b/shared/services/config/migration/v1189-manager.go new file mode 100644 index 000000000..748bb8a47 --- /dev/null +++ b/shared/services/config/migration/v1189-manager.go @@ -0,0 +1,17 @@ +package migration + +func upgradeFromV1189(serializedConfig map[string]map[string]string) error { + + // If the previous priority fee is 2, set it to 0.01 + priorityFee, exists := serializedConfig["smartnode"]["priorityFee"] + if exists && priorityFee == "2" { + serializedConfig["smartnode"]["priorityFee"] = "0.01" + } + + // If the previous auto tx gas threshold is 150, set it to 20 + autoTxGasThreshold, exists := serializedConfig["smartnode"]["minipoolStakeGasThreshold"] + if exists && autoTxGasThreshold == "150" { + serializedConfig["smartnode"]["minipoolStakeGasThreshold"] = "20" + } + return nil +} diff --git a/shared/services/gas/etherscan/etherscan.go b/shared/services/gas/etherscan/etherscan.go index 61d64776a..30986cd9d 100644 --- a/shared/services/gas/etherscan/etherscan.go +++ b/shared/services/gas/etherscan/etherscan.go @@ -9,7 +9,7 @@ import ( "github.com/goccy/go-json" ) -const gasOracleUrl string = "https://api.etherscan.io/v2/api?chainid=%1&module=gastracker&action=gasoracle" +const gasOracleUrl string = "https://api.etherscan.io/v2/api?chainid=1&module=gastracker&action=gasoracle" // Standard response type gasOracleResponse struct { diff --git a/shared/services/gas/gas.go b/shared/services/gas/gas.go index 2183d8e60..4d29f9c0b 100644 --- a/shared/services/gas/gas.go +++ b/shared/services/gas/gas.go @@ -18,6 +18,9 @@ const colorReset string = "\033[0m" const colorYellow string = "\033[33m" const colorBlue string = "\033[36m" +// DefaultPriorityFeeGwei is the default priority fee in gwei used for automatic transactions +const DefaultPriorityFeeGwei float64 = 0.01 + type Gas struct { maxFeeGwei float64 maxPriorityFeeGwei float64