From ca814169de11cd5bed0da38f8fb6ffa8f17d805b Mon Sep 17 00:00:00 2001 From: Nick Doherty Date: Tue, 17 Feb 2026 10:55:25 +1000 Subject: [PATCH 1/4] feature: saturn ascii art --- rocketpool/node/node.go | 39 ++++++++++------------------------ rocketpool/node/saturn-art.txt | 20 +++++++++++++++++ 2 files changed, 31 insertions(+), 28 deletions(-) create mode 100644 rocketpool/node/saturn-art.txt diff --git a/rocketpool/node/node.go b/rocketpool/node/node.go index dcd1da0b9..dce1cddb9 100644 --- a/rocketpool/node/node.go +++ b/rocketpool/node/node.go @@ -1,6 +1,7 @@ package node import ( + _ "embed" "fmt" "math/big" "net/http" @@ -25,8 +26,13 @@ import ( ) // Config -var tasksInterval, _ = time.ParseDuration("5m") -var taskCooldown, _ = time.ParseDuration("10s") +var ( + tasksInterval, _ = time.ParseDuration("5m") + taskCooldown, _ = time.ParseDuration("10s") +) + +//go:embed saturn-art.txt +var saturnArt string const ( MaxConcurrentEth1Requests = 200 @@ -63,7 +69,6 @@ func RegisterCommands(app *cli.App, name string, aliases []string) { // Run daemon func run(c *cli.Context) error { - // Handle the initial fee recipient file deployment err := deployDefaultFeeRecipientFile(c) if err != nil { @@ -338,22 +343,18 @@ func run(c *cli.Context) error { // Wait for both threads to stop wg.Wait() return nil - } // Configure HTTP transport settings func configureHTTP() { - // The daemon makes a large number of concurrent RPC requests to the Eth1 client // The HTTP transport is set to cache connections for future re-use equal to the maximum expected number of concurrent requests // This prevents issues related to memory consumption and address allowance from repeatedly opening and closing connections http.DefaultTransport.(*http.Transport).MaxIdleConnsPerHost = MaxConcurrentEth1Requests - } // Copy the default fee recipient file into the proper location func deployDefaultFeeRecipientFile(c *cli.Context) error { - cfg, err := services.GetConfig(c) if err != nil { return err @@ -364,7 +365,7 @@ func deployDefaultFeeRecipientFile(c *cli.Context) error { if os.IsNotExist(err) { // Make sure the validators dir is created validatorsFolder := filepath.Dir(feeRecipientPath) - err = os.MkdirAll(validatorsFolder, 0755) + err = os.MkdirAll(validatorsFolder, 0o755) if err != nil { return fmt.Errorf("could not create validators directory: %w", err) } @@ -378,7 +379,7 @@ func deployDefaultFeeRecipientFile(c *cli.Context) error { // Docker and Hybrid just need the address itself defaultFeeRecipientFileContents = cfg.Smartnode.GetRethAddress().Hex() } - err := os.WriteFile(feeRecipientPath, []byte(defaultFeeRecipientFileContents), 0664) + err := os.WriteFile(feeRecipientPath, []byte(defaultFeeRecipientFileContents), 0o664) if err != nil { return fmt.Errorf("could not write default fee recipient file to %s: %w", feeRecipientPath, err) } @@ -387,12 +388,10 @@ func deployDefaultFeeRecipientFile(c *cli.Context) error { } return nil - } // Remove the old fee recipient files that were created in v1.5.0 func removeLegacyFeeRecipientFiles(c *cli.Context) error { - legacyFeeRecipientFile := "rp-fee-recipient.txt" cfg, err := services.GetConfig(c) @@ -416,7 +415,6 @@ func removeLegacyFeeRecipientFiles(c *cli.Context) error { } return nil - } // Update the latest network state at each cycle @@ -449,23 +447,8 @@ func GetPriorityFee(priorityFee *big.Int, maxFee *big.Int) *big.Int { // Print a message if Saturn has been deployed yet func printSaturnMessage(log *log.ColorLogger) { + fmt.Print(saturnArt) log.Println(` -* . -* / \ -* |.'.| -* |'.'| -* ,'| |'. -* |,-'-|-'-.| -* __|_| | _ _ _____ _ -* | ___ \| | | | | | ___ \ | | -* | |_/ /|__ ___| | _____| |_ | |_/ /__ ___ | | -* | // _ \ / __| |/ / _ \ __| | __/ _ \ / _ \| | -* | |\ \ (_) | (__| < __/ |_ | | | (_) | (_) | | -* \_| \_\___/ \___|_|\_\___|\__| \_| \___/ \___/|_| -* +---------------------------------------------------+ -* | DECENTRALISED STAKING PROTOCOL FOR ETHEREUM | -* +---------------------------------------------------+ -* * ============== Saturn 1 has launched! =============== `) } diff --git a/rocketpool/node/saturn-art.txt b/rocketpool/node/saturn-art.txt new file mode 100644 index 000000000..0b809e0fc --- /dev/null +++ b/rocketpool/node/saturn-art.txt @@ -0,0 +1,20 @@ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^""""""""""""""""""""""""""""""""^^^"""""""^^ +^^^^^^^^^^^^^^^^^^^^^^"""""""""""",,,,,,,,,,,,,,,,,:,,::::,,,,,,,::::,,""""""""" +""""""""""""""""""""""""",,,,,,,,,:::::,,::::;;;II;;::::::;Il!i>><<>iii<>!;,,,,, +""""""""""""""""",,,,,,,,::::::::;;Ili>~++~<illlIl!i<_]{)\fjrrxxxrjt\1<I<]}~:,,, +""""",,,,,,,,,,,,,,,::::::;;;IIl!<_]{(\tfffjjf\(jxvUUJJJYzvcXJJJJJJLLQx:l}/_:,,, +,,,,,,,,,,,,,,:::::::;;;IIIIl!i<+-][{{1)(\/fxvXJOZz||1}[1xvvYZ0ZO0000u<<(/+:::,: +,,,,,,,,,,:::::::;;;IIIll!!illii<~+-?[}1(\/fxucYCwbx<~<_}YQLZwwmOO0z)_1t}l,::::: +,,,,::::::::::;;IIIll!!i!l>I`,;li<~_?]}1(\tjxvYLZqaBu+)uQZmqppwOJn)[)\[!::;;:::: +,,,::::::::;;;IIll!!!!!<]r/```^:li<+-]}1(/fxcULOmm0CXXOqqppqZJu/11)1+I:;I;;;:::: +::::::::::;;IIlll!i<-(cmpw1`^``^,I>~_]})/jnvzXXzvcXLmddqmLXx\)11{-iI;II;;;;;;;;; +::::::;;;;IIIIli<]/UpbOx]>l;:,,,,:I!<_]{(|/tfxvU0wqqOJzr/)11{[_>llllII;;;;;;;;;; +:::::;;;II;I!<?\zqkOr_Ili~<IIIII;:::;!+[(fvULOmZQUuf|1{{{[-~illllIII;;;;;;;;;::; +:::::;;;:I>+{jCqqc[il;li!!!;",:;!<-{\xzJQO0CYvj\1}[[[?_<illlllIII;;;;;;;:::::::: +:::::::I~?}rCqdmznjt([-___-[})\juXJLLCYcrt(1[]-+~<<>!lIllIII;;;:::::::::,,,,,,,, +:::::;<}]}Y0m0LJXznrjjjrxnuvzXXzcnj/)}]-_+~>l:,,:;I;I;;::::::::,,,,,,,,,,,,,"""" +::::i]{?;fUuvvvvvunxxxrrjft\(1}?-+~~~~il:,^^^,:;::,,,,,,,,,,,,,""""""""""^^^^^^^ +:::i??_<II~?]}}}}}}[]?-+~~<>ii!lllI;:,"",,::,,,"""""""""""""^^^^^^^^^^^````````` +,,,Il>i!!lIIIIIllllIIII;;;::,""^^^^^^"""^^^^^^^^^^^^^^^^``````````````````'''''' +"""^""""",,,,,,,"""^^^^```````^^^^`````````````````````````''''''''''''''''''''' +^^^````````````````````````````````'`''''''''''''''''''''''''''................. From 1022dc33b3ff3938a85addbcfb0f3bb6c488d887 Mon Sep 17 00:00:00 2001 From: Nick Doherty Date: Tue, 17 Feb 2026 11:33:26 +1000 Subject: [PATCH 2/4] bugfix: tty: true on containers so they respect colour output --- shared/services/rocketpool/assets/install/templates/eth1.tmpl | 1 + shared/services/rocketpool/assets/install/templates/eth2.tmpl | 1 + shared/services/rocketpool/assets/install/templates/node.tmpl | 1 + .../services/rocketpool/assets/install/templates/watchtower.tmpl | 1 + 4 files changed, 4 insertions(+) diff --git a/shared/services/rocketpool/assets/install/templates/eth1.tmpl b/shared/services/rocketpool/assets/install/templates/eth1.tmpl index 028960a92..b0aa783e5 100644 --- a/shared/services/rocketpool/assets/install/templates/eth1.tmpl +++ b/shared/services/rocketpool/assets/install/templates/eth1.tmpl @@ -8,6 +8,7 @@ services: eth1: image: {{.GetECContainerTag}} + tty: true user: root container_name: {{.Smartnode.ProjectName}}_eth1 restart: unless-stopped diff --git a/shared/services/rocketpool/assets/install/templates/eth2.tmpl b/shared/services/rocketpool/assets/install/templates/eth2.tmpl index 5688c50af..f603f0859 100644 --- a/shared/services/rocketpool/assets/install/templates/eth2.tmpl +++ b/shared/services/rocketpool/assets/install/templates/eth2.tmpl @@ -23,6 +23,7 @@ services: eth2: image: {{.GetBeaconContainerTag}} + tty: true user: root container_name: {{.Smartnode.ProjectName}}_eth2 restart: unless-stopped diff --git a/shared/services/rocketpool/assets/install/templates/node.tmpl b/shared/services/rocketpool/assets/install/templates/node.tmpl index 1fe7025d4..3f564e086 100644 --- a/shared/services/rocketpool/assets/install/templates/node.tmpl +++ b/shared/services/rocketpool/assets/install/templates/node.tmpl @@ -10,6 +10,7 @@ services: image: {{.Smartnode.GetSmartnodeContainerTag}} container_name: {{.Smartnode.ProjectName}}_node restart: unless-stopped + tty: true volumes: - /var/run/docker.sock:/var/run/docker.sock - {{.RocketPoolDirectory}}:/.rocketpool diff --git a/shared/services/rocketpool/assets/install/templates/watchtower.tmpl b/shared/services/rocketpool/assets/install/templates/watchtower.tmpl index 01e7ee423..e412411b7 100644 --- a/shared/services/rocketpool/assets/install/templates/watchtower.tmpl +++ b/shared/services/rocketpool/assets/install/templates/watchtower.tmpl @@ -10,6 +10,7 @@ services: image: {{.Smartnode.GetSmartnodeContainerTag}} container_name: {{.Smartnode.ProjectName}}_watchtower restart: unless-stopped + tty: true volumes: - {{.RocketPoolDirectory}}:/.rocketpool - {{.Smartnode.DataPath}}:/.rocketpool/data From b9dfb64c522f7e32ed7bd47c2fba43cba5b4d26b Mon Sep 17 00:00:00 2001 From: Nick Doherty Date: Tue, 17 Feb 2026 12:03:44 +1000 Subject: [PATCH 3/4] bugfix: adjustment to layout --- rocketpool/node/node.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rocketpool/node/node.go b/rocketpool/node/node.go index dce1cddb9..e9636c318 100644 --- a/rocketpool/node/node.go +++ b/rocketpool/node/node.go @@ -447,8 +447,9 @@ func GetPriorityFee(priorityFee *big.Int, maxFee *big.Int) *big.Int { // Print a message if Saturn has been deployed yet func printSaturnMessage(log *log.ColorLogger) { - fmt.Print(saturnArt) log.Println(` * ============== Saturn 1 has launched! =============== `) + + fmt.Print(saturnArt) } From f129742e63e5776c50a5b2e675c17f869c524eff Mon Sep 17 00:00:00 2001 From: Fornax <23104993+fornax2@users.noreply.github.com> Date: Tue, 17 Feb 2026 18:14:49 -0300 Subject: [PATCH 4/4] Remove tty from ec, cc containers --- shared/services/rocketpool/assets/install/templates/eth1.tmpl | 1 - shared/services/rocketpool/assets/install/templates/eth2.tmpl | 1 - 2 files changed, 2 deletions(-) diff --git a/shared/services/rocketpool/assets/install/templates/eth1.tmpl b/shared/services/rocketpool/assets/install/templates/eth1.tmpl index b0aa783e5..028960a92 100644 --- a/shared/services/rocketpool/assets/install/templates/eth1.tmpl +++ b/shared/services/rocketpool/assets/install/templates/eth1.tmpl @@ -8,7 +8,6 @@ services: eth1: image: {{.GetECContainerTag}} - tty: true user: root container_name: {{.Smartnode.ProjectName}}_eth1 restart: unless-stopped diff --git a/shared/services/rocketpool/assets/install/templates/eth2.tmpl b/shared/services/rocketpool/assets/install/templates/eth2.tmpl index f603f0859..5688c50af 100644 --- a/shared/services/rocketpool/assets/install/templates/eth2.tmpl +++ b/shared/services/rocketpool/assets/install/templates/eth2.tmpl @@ -23,7 +23,6 @@ services: eth2: image: {{.GetBeaconContainerTag}} - tty: true user: root container_name: {{.Smartnode.ProjectName}}_eth2 restart: unless-stopped