From b8772606cc71ecb1038a93bed8a334fc25b81298 Mon Sep 17 00:00:00 2001 From: mabasian <54101509+mabasian@users.noreply.github.com> Date: Thu, 17 Oct 2024 09:48:57 +0200 Subject: [PATCH 1/5] FIX ISSUES before release (#2095) * UPDATE: beaconcha btn position updating * ADD: Tooltips for Alert Box FIX #2081 * FIX: services in the sepolia FIX #2061 --- launcher/public/output.css | 372 ++++++++---------- .../components/drawer/DrawerFilter.vue | 2 +- .../components/drawer/ServicesDrawer.vue | 2 +- .../node-page/components/alert/NodeAlert.vue | 24 +- .../components/list/rows/KeyRow.vue | 34 +- .../UI/the-control/ControlAlert.vue | 16 +- 6 files changed, 223 insertions(+), 227 deletions(-) diff --git a/launcher/public/output.css b/launcher/public/output.css index a1abaffc1..88d7fde67 100755 --- a/launcher/public/output.css +++ b/launcher/public/output.css @@ -1,7 +1,169 @@ @import url("https://fonts.googleapis.com/css2?family=Noto+Sans:wght@100;200;300;400;500;600;700;800;900&display=swap"); +*, ::before, ::after{ + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +::-ms-backdrop{ + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +::backdrop{ + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + /* -! tailwindcss v3.4.4 | MIT License | https://tailwindcss.com +! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com */ /* @@ -478,168 +640,6 @@ video { scrollbar-width: initial; } -*, ::before, ::after{ - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; -} - -::-ms-backdrop{ - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; -} - -::backdrop{ - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; -} - ::-webkit-scrollbar { background-color: transparent; width: 5px; @@ -807,10 +807,6 @@ video { top: -90px; } -.bottom-0{ - bottom: 0px; -} - .bottom-0\.5{ bottom: 0.125rem; } @@ -1840,10 +1836,6 @@ video { height: 70px; } -.h-\[74\%\]{ - height: 74%; -} - .h-\[8\%\]{ height: 8%; } @@ -2018,6 +2010,10 @@ video { max-height: 503px; } +.max-h-\[59vh\]{ + max-height: 59vh; +} + .max-h-\[60px\]{ max-height: 60px; } @@ -2030,30 +2026,6 @@ video { max-height: 100%; } -.max-h-\[74vh\]{ - max-height: 74vh; -} - -.max-h-\[72vh\]{ - max-height: 72vh; -} - -.max-h-\[65vh\]{ - max-height: 65vh; -} - -.max-h-\[50vh\]{ - max-height: 50vh; -} - -.max-h-\[60vh\]{ - max-height: 60vh; -} - -.max-h-\[59vh\]{ - max-height: 59vh; -} - .min-h-11{ min-height: 2.75rem; } @@ -2821,6 +2793,11 @@ video { justify-content: space-between; } +.justify-around{ + -ms-flex-pack: distribute; + justify-content: space-around; +} + .justify-evenly{ -webkit-box-pack: space-evenly; -ms-flex-pack: space-evenly; @@ -5414,11 +5391,6 @@ html body { left: 2px; } -.after\:top-0::after{ - content: var(--tw-content); - top: 0px; -} - .after\:top-0\.5::after{ content: var(--tw-content); top: 0.125rem; diff --git a/launcher/src/components/UI/edit-page/components/drawer/DrawerFilter.vue b/launcher/src/components/UI/edit-page/components/drawer/DrawerFilter.vue index 2d4c44f11..9fd6f3e03 100644 --- a/launcher/src/components/UI/edit-page/components/drawer/DrawerFilter.vue +++ b/launcher/src/components/UI/edit-page/components/drawer/DrawerFilter.vue @@ -81,7 +81,7 @@ const networkFilter = (service) => { case "holesky": return true; case "sepolia": - return service.service !== "SSVNetworkService"; + return service.service !== "SSVNetworkService" && service.service !== "SSVDKGService"; case "gnosis": return /(Lighthouse|Teku|Nethermind|Erigon|Grafana|Prometheus)/.test(service.service); default: diff --git a/launcher/src/components/UI/edit-page/components/drawer/ServicesDrawer.vue b/launcher/src/components/UI/edit-page/components/drawer/ServicesDrawer.vue index 47eefc47f..a1ef4c20e 100644 --- a/launcher/src/components/UI/edit-page/components/drawer/ServicesDrawer.vue +++ b/launcher/src/components/UI/edit-page/components/drawer/ServicesDrawer.vue @@ -68,7 +68,7 @@ import { useServices } from "@/store/services"; import { useFooter } from "@/store/theFooter"; import i18n from "@/includes/i18n"; import { computed, onUnmounted, ref } from "vue"; -import { useSetups } from "../../../../../store/setups"; +import { useSetups } from "@/store/setups"; const t = i18n.global.t; diff --git a/launcher/src/components/UI/node-page/components/alert/NodeAlert.vue b/launcher/src/components/UI/node-page/components/alert/NodeAlert.vue index 5659111d8..6cbeef823 100755 --- a/launcher/src/components/UI/node-page/components/alert/NodeAlert.vue +++ b/launcher/src/components/UI/node-page/components/alert/NodeAlert.vue @@ -1,14 +1,16 @@ diff --git a/launcher/src/components/UI/the-control/ControlAlert.vue b/launcher/src/components/UI/the-control/ControlAlert.vue index d7e0d43f7..3570812a7 100755 --- a/launcher/src/components/UI/the-control/ControlAlert.vue +++ b/launcher/src/components/UI/the-control/ControlAlert.vue @@ -2,13 +2,15 @@
-
+
green
@@ -18,6 +20,8 @@ filtered: alertShowState.includes('yellow'), }" @click="alertPicker('yellow')" + @mouseenter="cursorLocation = `filter to not show warnings`" + @mouseleave="cursorLocation = ''" > green
@@ -27,12 +31,19 @@ filtered: alertShowState.includes('red'), }" @click="alertPicker('red')" + @mouseenter="cursorLocation = `filter to not show alarms`" + @mouseleave="cursorLocation = ''" > green
-
+
green Date: Thu, 17 Oct 2024 13:31:47 +0200 Subject: [PATCH 2/5] ADD: Release Fixes (#2097) * FIX: beaconcha button directing to validator page * FIX: Valdiator Exit Process --- launcher/src/backend/Monitoring.js | 6 ++++-- launcher/src/backend/ValidatorAccountManager.js | 14 ++++++++++++++ .../staking-page/components/list/rows/KeyRow.vue | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/launcher/src/backend/Monitoring.js b/launcher/src/backend/Monitoring.js index 6537528bc..cf4ecc44d 100755 --- a/launcher/src/backend/Monitoring.js +++ b/launcher/src/backend/Monitoring.js @@ -3166,7 +3166,7 @@ rm -rf diskoutput } try { - const beaconAPIPort = beaconStatus.data[0].beacon.destinationPort; + const beaconAPIPort = beaconStatus.data[0].beacon.servicePort; const serviceId = beaconStatus.data[0].sid; if (!Array.isArray(pubkey)) { pubkey = [pubkey]; @@ -3177,7 +3177,7 @@ rm -rf diskoutput if (!output.includes("{") || !output.includes("}")) { return { pubkey: pubkey, - code: null, + code: /20[0-8] OK/.test(output) ? 200 : null, msg: output, }; } @@ -3223,6 +3223,8 @@ rm -rf diskoutput if (SSHService.checkExecError(runExitCommand) && runExitCommand.stderr) { throw new Error(SSHService.extractExecError(runExitCommand)); } + if (!runExitCommand.stdout) + throw `ReturnCode: ${runExitCommand.rc}\nStderr: ${runExitCommand.stderr}\nStdout: ${runExitCommand.stdout}\nIs Your Consensus Client Running?`; const response = parseRunExitCommandOutput(runExitCommand.stdout, pubkey); diff --git a/launcher/src/backend/ValidatorAccountManager.js b/launcher/src/backend/ValidatorAccountManager.js index a799ff926..9d5dbbf0f 100755 --- a/launcher/src/backend/ValidatorAccountManager.js +++ b/launcher/src/backend/ValidatorAccountManager.js @@ -225,6 +225,9 @@ export class ValidatorAccountManager { //Error handling if (SSHService.checkExecError(result) && result.stderr) throw SSHService.extractExecError(result); + if (!result.stdout) + throw `ReturnCode: ${result.rc}\nStderr: ${result.stderr}\nStdout: ${result.stdout}\nIs Your Consensus Client Running?`; + const data = JSON.parse(result.stdout); if (data.data === undefined) { if (data.code === undefined || data.message === undefined) { @@ -703,7 +706,18 @@ export class ValidatorAccountManager { this.nodeConnection.taskManager.otherTasksHandler(ref, `Get Remote Keys`, true, result.stdout); + //Error handling + if (SSHService.checkExecError(result) && result.stderr) throw SSHService.extractExecError(result); + if (!result.stdout) + throw `ReturnCode: ${result.rc}\nStderr: ${result.stderr}\nStdout: ${result.stdout}\nIs Your Consensus Client Running?`; + const data = JSON.parse(result.stdout); + if (data.data === undefined) { + if (data.code === undefined || data.message === undefined) { + throw "Undexpected Error: " + result; + } + throw data.code + " " + data.message; + } if (!data.data) data.data = []; this.nodeConnection.taskManager.otherTasksHandler(ref); diff --git a/launcher/src/components/UI/staking-page/components/list/rows/KeyRow.vue b/launcher/src/components/UI/staking-page/components/list/rows/KeyRow.vue index e3c7dc6a0..0e1b89af2 100644 --- a/launcher/src/components/UI/staking-page/components/list/rows/KeyRow.vue +++ b/launcher/src/components/UI/staking-page/components/list/rows/KeyRow.vue @@ -309,7 +309,7 @@ const navToBeaconcha = (network) => { holesky: "https://holesky.beaconcha.in/", }; - const url = urls[network]; + const url = urls[network] + "validator/" + props.item.key; if (url) { window.open(url, "_blank"); } else { From d2c33c3f801dc4c41fcd96453555d47ae69306c3 Mon Sep 17 00:00:00 2001 From: NeoPlays <80448387+NeoPlays@users.noreply.github.com> Date: Thu, 17 Oct 2024 13:54:04 +0200 Subject: [PATCH 3/5] ADD: Update Scripts and Changes to new Setups (#2091) * ADD: Erigon Changes * ADD: SSV Changes * FIX: Tests * FIX: ssv image * ADD: new oracle allowlist for holesky * REVERT: new image for dkg service * ADJUST: remove eden and add titan relay * REMOVE: SSV Changes --- .../update-changes/molecule/223/prepare.yml | 237 +++++++++++++++++- .../update-changes/molecule/223/verify.yml | 74 +++++- .../tasks/2.2.3/ejector_changes.yaml | 14 +- .../tasks/2.2.3/erigon_changes.yaml | 48 ++++ .../tasks/2.2.3/mev_changes.yaml | 18 ++ .../tasks/2.2.3/updates-223.yaml | 14 +- launcher/src/backend/OneClickInstall.js | 3 - launcher/src/backend/ServiceManager.js | 2 - .../ethereum-services/ErigonService.js | 15 +- .../ValidatorEjectorService.js | 2 +- .../tests/integration/ErigonService.int.js | 2 +- .../backend/tests/unit/ErigonService.test.js | 2 +- launcher/src/store/nodeManage.js | 19 +- 13 files changed, 403 insertions(+), 47 deletions(-) create mode 100644 controls/roles/update-changes/tasks/2.2.3/erigon_changes.yaml create mode 100644 controls/roles/update-changes/tasks/2.2.3/mev_changes.yaml diff --git a/controls/roles/update-changes/molecule/223/prepare.yml b/controls/roles/update-changes/molecule/223/prepare.yml index c4c5cd28f..ecbd9c402 100644 --- a/controls/roles/update-changes/molecule/223/prepare.yml +++ b/controls/roles/update-changes/molecule/223/prepare.yml @@ -4,18 +4,18 @@ tasks: - name: Make sure Stereum's config path exists file: - path: '/etc/stereum/services' + path: "/etc/stereum/services" state: directory - owner: 'root' - group: 'root' + owner: "root" + group: "root" mode: 0644 become: yes - name: Create ValidatorEjectorService config copy: - dest: '/etc/stereum/services/15ce3684-4dbd-4657-8a21-b1243b72b1ca.yaml' - owner: 'root' - group: 'root' + dest: "/etc/stereum/services/15ce3684-4dbd-4657-8a21-b1243b72b1ca.yaml" + owner: "root" + group: "root" mode: 0644 content: | service: ValidatorEjectorService @@ -63,9 +63,9 @@ - name: Create ValidatorEjectorService config copy: - dest: '/etc/stereum/services/41b15ea7-12d4-49f6-8448-8a6164edef36.yaml' - owner: 'root' - group: 'root' + dest: "/etc/stereum/services/41b15ea7-12d4-49f6-8448-8a6164edef36.yaml" + owner: "root" + group: "root" mode: 0644 content: | service: ValidatorEjectorService @@ -102,4 +102,223 @@ mevboost: [] otherServices: [] become: yes + + - name: Create ErigonService config + copy: + dest: "/etc/stereum/services/b180d035-f390-d644-5fae-6671659dbcdb.yaml" + owner: "root" + group: "root" + mode: 0644 + content: | + service: ErigonService + id: b180d035-f390-d644-5fae-6671659dbcdb + configVersion: 1 + command: + - erigon + - --chain=holesky + - --datadir=/opt/data/erigon + - --authrpc.addr=0.0.0.0 + - --authrpc.vhosts=* + - --authrpc.port=8551 + - --authrpc.jwtsecret=/engine.jwt + - --rpc.returndata.limit=1000000 + - --ws + - --http + - --http.vhosts=* + - --http.corsdomain=* + - --http.addr=0.0.0.0 + - --http.port=8545 + - --http.api=engine,net,eth,web3 + - --metrics + - --metrics.addr=0.0.0.0 + - --metrics.port=6060 + - --db.pagesize=16K + - --db.size.limit=8TB + - --prune=htc + entrypoint: [] + env: {} + image: thorax/erigon:v2.60.8 + ports: + - 0.0.0.0:30303:30303/tcp + - 0.0.0.0:30303:30303/udp + - 127.0.0.1:8545:8545/tcp + - 127.0.0.1:8546:8546/tcp + volumes: + - /opt/stereum/erigon-b180d035-f390-d644-5fae-6671659dbcdb/data:/opt/data/erigon + - /opt/stereum/erigon-b180d035-f390-d644-5fae-6671659dbcdb/engine.jwt:/engine.jwt + user: root + autoupdate: true + network: holesky + dependencies: + executionClients: [] + consensusClients: [] + mevboost: [] + otherServices: [] + become: yes + + - name: Create ErigonService config + copy: + dest: "/etc/stereum/services/580c2c43-ad2a-405d-ab78-eb3678383f59.yaml" + owner: "root" + group: "root" + mode: 0644 + content: | + service: ErigonService + id: 580c2c43-ad2a-405d-ab78-eb3678383f59 + configVersion: 1 + command: + - erigon + - --chain=holesky + - --datadir=/opt/data/erigon + - --authrpc.addr=0.0.0.0 + - --authrpc.vhosts=* + - --authrpc.port=8551 + - --authrpc.jwtsecret=/engine.jwt + - --rpc.returndata.limit=1000000 + - --ws + - --http + - --http.vhosts=* + - --http.corsdomain=* + - --http.addr=0.0.0.0 + - --http.port=8545 + - --http.api=engine,net,eth,web3 + - --metrics + - --metrics.addr=0.0.0.0 + - --metrics.port=6060 + - --db.pagesize=16K + - --db.size.limit=8TB + - --prune=htc + entrypoint: [] + env: {} + image: erigontech/erigon:v2.60.8 + ports: + - 0.0.0.0:30303:30303/tcp + - 0.0.0.0:30303:30303/udp + - 127.0.0.1:8545:8545/tcp + - 127.0.0.1:8546:8546/tcp + volumes: + - /opt/stereum/erigon-580c2c43-ad2a-405d-ab78-eb3678383f59/data:/opt/data/erigon + - /opt/stereum/erigon-580c2c43-ad2a-405d-ab78-eb3678383f59/engine.jwt:/engine.jwt + user: root + autoupdate: true + network: holesky + dependencies: + executionClients: [] + consensusClients: [] + mevboost: [] + otherServices: [] + become: yes + + - name: Create ValidatorEjectorService config + copy: + dest: "/etc/stereum/services/3911cf56-f350-5fc7-dded-1d08da1a9954.yaml" + owner: "root" + group: "root" + mode: 0644 + content: | + service: ValidatorEjectorService + id: 3911cf56-f350-5fc7-dded-1d08da1a9954 + configVersion: 1 + command: [] + entrypoint: [] + env: + EXECUTION_NODE: "" + CONSENSUS_NODE: "" + LOCATOR_ADDRESS: "0x28FAB2059C713A7F9D8c86Db49f9bb0e96Af1ef8" + STAKING_MODULE_ID: "1" + OPERATOR_ID: "123456789" + MESSAGES_LOCATION: /app/messages + ORACLE_ADDRESSES_ALLOWLIST: '["0x12A1D74F8697b9f4F1eEBb0a9d0FB6a751366399", + "0xD892c09b556b547c80B7d8c8cB8d75bf541B2284", + "0xf7aE520e99ed3C41180B5E12681d31Aa7302E4e5", + "0x31fa51343297FFce0CC1E67a50B2D3428057D1b1", + "0x81E411f1BFDa43493D7994F82fb61A415F6b8Fd4", + "0x4c75FA734a39f3a21C57e583c1c29942F021C6B7", + "0xD3b1e36A372Ca250eefF61f90E833Ca070559970", + "0xF0F23944EfC5A63c53632C571E7377b85d5E6B6f", + "0xb29dD2f6672C0DFF2d2f173087739A42877A5172", + "0x3799bDA7B884D33F79CEC926af21160dc47fbe05"]' + HTTP_PORT: "8989" + RUN_METRICS: "true" + RUN_HEALTH_CHECK: "true" + DRY_RUN: "false" + image: lidofinance/validator-ejector:1.6.0 + ports: [] + volumes: + - /opt/stereum/validatorejector-3911cf56-f350-5fc7-dded-1d08da1a9954/messages:/app/messages + user: "2000" + autoupdate: true + network: holesky + dependencies: + executionClients: [] + consensusClients: [] + mevboost: [] + otherServices: [] + become: yes + + - name: Create FlashbotsMevBoostService config + copy: + dest: "/etc/stereum/services/5c9c2120-03dc-ffa3-30a8-7faf61f09a3d.yaml" + owner: "root" + group: "root" + mode: 0644 + content: | + service: FlashbotsMevBoostService + id: 5c9c2120-03dc-ffa3-30a8-7faf61f09a3d + configVersion: 1 + command: [] + entrypoint: + - /app/mev-boost + - -addr + - 0.0.0.0:18550 + - -holesky + - -relay-check + - -relays + - https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@holesky.titanrelay.xyz,https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-stag.ultrasound.money,https://0x821f2a65afb70e7f2e820a925a9b4c80a159620582c1766b1b09729fec178b11ea22abb3a51f07b288be815a1a2ff516@bloxroute.holesky.blxrbdn.com,https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-holesky.flashbots.net,https://0xab78bf8c781c58078c3beb5710c57940874dd96aef2835e7742c866b4c7c0406754376c2c8285a36c630346aa5c5f833@holesky.aestus.live,https://0xb1d229d9c21298a87846c7022ebeef277dfc321fe674fa45312e20b5b6c400bfde9383f801848d7837ed5fc449083a12@relay-holesky.edennetwork.io + env: {} + image: flashbots/mev-boost:1.8 + ports: [] + volumes: [] + user: "2000" + autoupdate: true + network: holesky + dependencies: + executionClients: [] + consensusClients: [] + mevboost: [] + otherServices: [] + become: yes + + - name: Create FlashbotsMevBoostService config + copy: + dest: "/etc/stereum/services/4fee6e50-1fe2-533c-8ec2-e23b83e3236c.yaml" + owner: "root" + group: "root" + mode: 0644 + content: | + service: FlashbotsMevBoostService + id: 4fee6e50-1fe2-533c-8ec2-e23b83e3236c + configVersion: 1 + command: [] + entrypoint: + - /app/mev-boost + - -addr + - 0.0.0.0:18550 + - -holesky + - -relay-check + - -relays + - https://0xab78bf8c781c58078c3beb5710c57940874dd96aef2835e7742c866b4c7c0406754376c2c8285a36c630346aa5c5f833@holesky.aestus.live,https://0xb1d229d9c21298a87846c7022ebeef277dfc321fe674fa45312e20b5b6c400bfde9383f801848d7837ed5fc449083a12@relay-holesky.edennetwork.io,https://0x821f2a65afb70e7f2e820a925a9b4c80a159620582c1766b1b09729fec178b11ea22abb3a51f07b288be815a1a2ff516@bloxroute.holesky.blxrbdn.com,https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-holesky.flashbots.net,https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-stag.ultrasound.money,https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@holesky.titanrelay.xyz + env: {} + image: flashbots/mev-boost:1.8 + ports: [] + volumes: [] + user: "2000" + autoupdate: true + network: holesky + dependencies: + executionClients: [] + consensusClients: [] + mevboost: [] + otherServices: [] + become: yes #EOF diff --git a/controls/roles/update-changes/molecule/223/verify.yml b/controls/roles/update-changes/molecule/223/verify.yml index 1f375cb43..b93b016bb 100644 --- a/controls/roles/update-changes/molecule/223/verify.yml +++ b/controls/roles/update-changes/molecule/223/verify.yml @@ -6,34 +6,100 @@ # ValidatorEjectorService - name: Read ValidatorEjectorService file slurp: - src: '/etc/stereum/services/15ce3684-4dbd-4657-8a21-b1243b72b1ca.yaml' + src: "/etc/stereum/services/15ce3684-4dbd-4657-8a21-b1243b72b1ca.yaml" register: Ejector_service_configuration_raw # ValidatorEjectorService2 - name: Read ValidatorEjectorService file slurp: - src: '/etc/stereum/services/41b15ea7-12d4-49f6-8448-8a6164edef36.yaml' + src: "/etc/stereum/services/41b15ea7-12d4-49f6-8448-8a6164edef36.yaml" register: Ejector_service_configuration2_raw + # ValidatorEjectorService3 + - name: Read ValidatorEjectorService file + slurp: + src: "/etc/stereum/services/3911cf56-f350-5fc7-dded-1d08da1a9954.yaml" + register: Ejector_service_configuration3_raw + + # ErigonService + - name: Read ErigonService file + slurp: + src: "/etc/stereum/services/b180d035-f390-d644-5fae-6671659dbcdb.yaml" + register: Erigon_service_configuration_raw + + # ErigonService2 + - name: Read ErigonService file + slurp: + src: "/etc/stereum/services/580c2c43-ad2a-405d-ab78-eb3678383f59.yaml" + register: Erigon_service_configuration2_raw + + # FlashbotsMevBoostService + - name: Read FlashbotsMevBoostService file + slurp: + src: "/etc/stereum/services/5c9c2120-03dc-ffa3-30a8-7faf61f09a3d.yaml" + register: Mev_service_configuration_raw + + # FlashbotsMevBoostService + - name: Read FlashbotsMevBoostService file + slurp: + src: "/etc/stereum/services/4fee6e50-1fe2-533c-8ec2-e23b83e3236c.yaml" + register: Mev_service_configuration2_raw + - name: Parse Service configurations set_fact: Ejector_service_configuration: "{{ Ejector_service_configuration_raw['content'] | b64decode | from_yaml }}" Ejector_service_configuration2: "{{ Ejector_service_configuration2_raw['content'] | b64decode | from_yaml }}" + Ejector_service_configuration3: "{{ Ejector_service_configuration3_raw['content'] | b64decode | from_yaml }}" + Erigon_service_configuration: "{{ Erigon_service_configuration_raw['content'] | b64decode | from_yaml }}" + Erigon_service_configuration2: "{{ Erigon_service_configuration2_raw['content'] | b64decode | from_yaml }}" + Mev_service_configuration: "{{ Mev_service_configuration_raw['content'] | b64decode | from_yaml }}" + Mev_service_configuration2: "{{ Mev_service_configuration2_raw['content'] | b64decode | from_yaml }}" - debug: - msg: '{{ Ejector_service_configuration }}' + msg: "{{ Ejector_service_configuration }}" - debug: msg: "{{ Ejector_service_configuration_raw['content'] | b64decode }}" - debug: - msg: '{{ Ejector_service_configuration2 }}' + msg: "{{ Ejector_service_configuration2 }}" - debug: msg: "{{ Ejector_service_configuration2_raw['content'] | b64decode }}" + - debug: + msg: "{{ Ejector_service_configuration3 }}" + - debug: + msg: "{{ Ejector_service_configuration3_raw['content'] | b64decode }}" + + - debug: + msg: "{{ Erigon_service_configuration }}" + - debug: + msg: "{{ Erigon_service_configuration_raw['content'] | b64decode }}" + + - debug: + msg: "{{ Erigon_service_configuration2 }}" + - debug: + msg: "{{ Erigon_service_configuration2_raw['content'] | b64decode }}" + + - debug: + msg: "{{ Mev_service_configuration }}" + - debug: + msg: "{{ Mev_service_configuration_raw['content'] | b64decode }}" + + - debug: + msg: "{{ Mev_service_configuration2 }}" + - debug: + msg: "{{ Mev_service_configuration2_raw['content'] | b64decode }}" + - assert: that: - Ejector_service_configuration.env.ORACLE_ADDRESSES_ALLOWLIST | from_yaml | select('match', '0xe57B3792aDCc5da47EF4fF588883F0ee0c9835C9') | length == 1 - Ejector_service_configuration.env.ORACLE_ADDRESSES_ALLOWLIST | from_yaml | select('match', '0xEC4BfbAF681eb505B94E4a7849877DC6c600Ca3A') | length == 0 - Ejector_service_configuration2.env.ORACLE_ADDRESSES_ALLOWLIST | from_yaml | select('match', '0xe57B3792aDCc5da47EF4fF588883F0ee0c9835C9') | length == 1 - Ejector_service_configuration2.env.ORACLE_ADDRESSES_ALLOWLIST | from_yaml | select('match', '0xEC4BfbAF681eb505B94E4a7849877DC6c600Ca3A') | length == 0 + - Ejector_service_configuration3.env.ORACLE_ADDRESSES_ALLOWLIST | from_yaml | select('match', '0xfe43A8B0b481Ae9fB1862d31826532047d2d538c') | length == 1 + - Ejector_service_configuration3.env.ORACLE_ADDRESSES_ALLOWLIST | from_yaml | select('match', '0x3799bDA7B884D33F79CEC926af21160dc47fbe05') | length == 0 + - Erigon_service_configuration.image | split(':') | first == 'erigontech/erigon' + - Erigon_service_configuration2.image == 'erigontech/erigon:v2.60.8' + - Mev_service_configuration.entrypoint | select('match', 'eden') | length == 0 + - Mev_service_configuration2.entrypoint | select('match', 'eden') | length == 0 # EOF diff --git a/controls/roles/update-changes/tasks/2.2.3/ejector_changes.yaml b/controls/roles/update-changes/tasks/2.2.3/ejector_changes.yaml index 9c64b044a..5248870d1 100644 --- a/controls/roles/update-changes/tasks/2.2.3/ejector_changes.yaml +++ b/controls/roles/update-changes/tasks/2.2.3/ejector_changes.yaml @@ -1,7 +1,7 @@ --- - name: Read service file slurp: - src: '{{ config_file.path }}' + src: "{{ config_file.path }}" register: service_configuration_raw - name: Parse service's configuration @@ -11,10 +11,20 @@ - name: Update Oracle Allow List replace: - path: '{{ config_file.path }}' + path: "{{ config_file.path }}" regexp: '(?s)ORACLE_ADDRESSES_ALLOWLIST:.*?]["'']{1}' replace: 'ORACLE_ADDRESSES_ALLOWLIST: ''["0x140Bd8FbDc884f48dA7cb1c09bE8A2fAdfea776E","0xA7410857ABbf75043d61ea54e07D57A6EB6EF186","0x404335BcE530400a5814375E7Ec1FB55fAff3eA2","0x946D3b081ed19173dC83Cd974fC69e1e760B7d78","0x007DE4a5F7bc37E2F26c0cb2E8A95006EE9B89b5","0xe57B3792aDCc5da47EF4fF588883F0ee0c9835C9","0x61c91ECd902EB56e314bB2D5c5C07785444Ea1c8","0x1Ca0fEC59b86F549e1F1184d97cb47794C8Af58d","0xc79F702202E3A6B0B6310B537E786B9ACAA19BAf"]''' when: - service_configuration.service == "ValidatorEjectorService" - service_configuration.network == "mainnet" - service_configuration.env.ORACLE_ADDRESSES_ALLOWLIST | from_yaml | select('match', '0xEC4BfbAF681eb505B94E4a7849877DC6c600Ca3A') | length == 1 + +- name: Update Oracle Allow List + replace: + path: "{{ config_file.path }}" + regexp: '(?s)ORACLE_ADDRESSES_ALLOWLIST:.*?]["'']{1}' + replace: 'ORACLE_ADDRESSES_ALLOWLIST: ''["0x12A1D74F8697b9f4F1eEBb0a9d0FB6a751366399","0xD892c09b556b547c80B7d8c8cB8d75bf541B2284","0xf7aE520e99ed3C41180B5E12681d31Aa7302E4e5","0x31fa51343297FFce0CC1E67a50B2D3428057D1b1","0x81E411f1BFDa43493D7994F82fb61A415F6b8Fd4","0x4c75FA734a39f3a21C57e583c1c29942F021C6B7","0xD3b1e36A372Ca250eefF61f90E833Ca070559970","0xF0F23944EfC5A63c53632C571E7377b85d5E6B6f","0xb29dD2f6672C0DFF2d2f173087739A42877A5172","0xfe43A8B0b481Ae9fB1862d31826532047d2d538c"]''' + when: + - service_configuration.service == "ValidatorEjectorService" + - service_configuration.network == "holesky" + - service_configuration.env.ORACLE_ADDRESSES_ALLOWLIST | from_yaml | select('match', '0x3799bDA7B884D33F79CEC926af21160dc47fbe05') | length == 1 diff --git a/controls/roles/update-changes/tasks/2.2.3/erigon_changes.yaml b/controls/roles/update-changes/tasks/2.2.3/erigon_changes.yaml new file mode 100644 index 000000000..c44fc5609 --- /dev/null +++ b/controls/roles/update-changes/tasks/2.2.3/erigon_changes.yaml @@ -0,0 +1,48 @@ +--- +- name: Read service file + slurp: + src: "{{ config_file.path }}" + register: service_configuration_raw + +- name: Parse service's configuration + set_fact: + service_configuration: "{{ service_configuration_raw['content'] | b64decode | from_yaml }}" + +- name: Update Erigon image + when: service_configuration.service == "ErigonService" and "thorax" in service_configuration.image + block: + - name: Download update metadata + uri: + url: https://stereum.net/downloads/updates.json + method: GET + return_content: true + status_code: 200 + body_format: json + register: update_data_download + + - name: Set update data + set_fact: + update_data: "{{ update_data_test | default(update_data_download) }}" + + - name: Get latest version for this service + set_fact: + new_service_docker_image_tag: "{{ update_data.json[service_configuration.network][service_configuration.service] | default(update_data.json['mainnet'][service_configuration.service]) | last }}" + + - name: set new config + ansible.utils.update_fact: + updates: + - path: service_configuration.image + value: "erigontech/erigon:{{ new_service_docker_image_tag }}" + register: updated + + - name: update config + set_fact: + new_service_configuration: "{{ updated.service_configuration }}" + + - name: Write Config + copy: + dest: "{{ config_file.path }}" + content: "{{ new_service_configuration | to_nice_yaml(indent=2) }}" + owner: "root" + group: "root" + mode: 0644 diff --git a/controls/roles/update-changes/tasks/2.2.3/mev_changes.yaml b/controls/roles/update-changes/tasks/2.2.3/mev_changes.yaml new file mode 100644 index 000000000..b89e93d33 --- /dev/null +++ b/controls/roles/update-changes/tasks/2.2.3/mev_changes.yaml @@ -0,0 +1,18 @@ +--- +- name: Read service file + slurp: + src: "{{ config_file.path }}" + register: service_configuration_raw + +- name: Parse service's configuration + set_fact: + service_configuration: "{{ service_configuration_raw['content'] | b64decode | from_yaml }}" + +- name: Remove Eden Relay + when: service_configuration.service == "FlashbotsMevBoostService" and service_configuration.entrypoint | select('match', 'eden') | length > 0 + block: + - name: Remove Eden relays from the relays list + replace: + path: "{{ config_file.path }}" + regexp: ",?https://[^,]*eden[^,]*" + replace: "" diff --git a/controls/roles/update-changes/tasks/2.2.3/updates-223.yaml b/controls/roles/update-changes/tasks/2.2.3/updates-223.yaml index f0a96d19a..bca9b7724 100644 --- a/controls/roles/update-changes/tasks/2.2.3/updates-223.yaml +++ b/controls/roles/update-changes/tasks/2.2.3/updates-223.yaml @@ -4,8 +4,20 @@ paths: "/etc/stereum/services" register: service_config_files -- name: Include Prysm Changes +- name: Include Ejector Changes include_tasks: ejector_changes.yaml loop: "{{ service_config_files.files }}" loop_control: loop_var: config_file + +- name: Include Erigon Changes + include_tasks: erigon_changes.yaml + loop: "{{ service_config_files.files }}" + loop_control: + loop_var: config_file + +- name: Include MEV Changes + include_tasks: mev_changes.yaml + loop: "{{ service_config_files.files }}" + loop_control: + loop_var: config_file diff --git a/launcher/src/backend/OneClickInstall.js b/launcher/src/backend/OneClickInstall.js index d1c2ba8e2..b6390f414 100755 --- a/launcher/src/backend/OneClickInstall.js +++ b/launcher/src/backend/OneClickInstall.js @@ -63,9 +63,6 @@ export class OneClickInstall { if (this.mevboost) serviceList.push(this.mevboost); if (this.validatorService) serviceList.push(this.validatorService); if (this.extraServices) this.extraServices.forEach((service) => serviceList.push(service)); - serviceList.forEach((service) => { - if (service.switchImageTag) service.switchImageTag(this.nodeConnection.settings.stereum.settings.arch); - }); return serviceList.map((service) => service.buildConfiguration()); } diff --git a/launcher/src/backend/ServiceManager.js b/launcher/src/backend/ServiceManager.js index 70b650161..3d803ef57 100755 --- a/launcher/src/backend/ServiceManager.js +++ b/launcher/src/backend/ServiceManager.js @@ -894,7 +894,6 @@ export class ServiceManager { new ServicePort("127.0.0.1", 8546, 8546, servicePortProtocol.tcp), ]; service = ErigonService.buildByUserInput(args.network, ports, args.installDir + "/erigon"); - service.switchImageTag(this.nodeConnection.settings.stereum.settings.arch); return service; case "LighthouseBeaconService": @@ -1383,7 +1382,6 @@ export class ServiceManager { } else if (versions["prater"] && versions["prater"][service.service]) { service.imageVersion = versions["prater"][service.service].slice(-1).pop(); } - if (service.switchImageTag) service.switchImageTag(this.nodeConnection.settings.stereum.settings.arch); }); for (const service of newServices) { await this.nodeConnection.writeServiceConfiguration( diff --git a/launcher/src/backend/ethereum-services/ErigonService.js b/launcher/src/backend/ethereum-services/ErigonService.js index bc064d8d6..8d573d60d 100755 --- a/launcher/src/backend/ethereum-services/ErigonService.js +++ b/launcher/src/backend/ethereum-services/ErigonService.js @@ -15,8 +15,8 @@ export class ErigonService extends NodeService { "ErigonService", // service service.id, // id 1, // configVersion - "thorax/erigon", // image - "v2.36.1", // imageVersion + "erigontech/erigon", // image + "v2.60.8", // imageVersion [ `erigon`, `--chain=${network}`, @@ -81,17 +81,6 @@ export class ErigonService extends NodeService { return service; } - switchImageTag(arch) { - const armArchs = ["arm", "arm64", "aarch64_be", "aarch64", "armv8b", "armv8l"]; //Possible arm architectures: https://stackoverflow.com/questions/45125516/possible-values-for-uname-m - if (armArchs.includes(arch)) { - this.imageVersion = this.imageVersion.endsWith("-arm64") ? this.imageVersion : this.imageVersion + "-arm64"; - this.imageVersion = this.imageVersion.startsWith("v") ? this.imageVersion.slice(1) : this.imageVersion; - } else { - this.imageVersion = this.imageVersion.endsWith("-arm64") ? this.imageVersion.replace("-arm64", "") : this.imageVersion; - this.imageVersion = this.imageVersion.startsWith("v") ? this.imageVersion : "v" + this.imageVersion; - } - } - buildExecutionClientHttpEndpointUrl() { return "http://stereum-" + this.id + ":8545"; } diff --git a/launcher/src/backend/ethereum-services/ValidatorEjectorService.js b/launcher/src/backend/ethereum-services/ValidatorEjectorService.js index f1e148772..9432f190d 100755 --- a/launcher/src/backend/ethereum-services/ValidatorEjectorService.js +++ b/launcher/src/backend/ethereum-services/ValidatorEjectorService.js @@ -23,7 +23,7 @@ export class ValidatorEjectorService extends NodeService { case "holesky": locatorAddress = "0x28FAB2059C713A7F9D8c86Db49f9bb0e96Af1ef8"; //https://docs.lido.fi/deployed-contracts/holesky#core-protocol oracleAllowList = - '["0x12A1D74F8697b9f4F1eEBb0a9d0FB6a751366399", "0xD892c09b556b547c80B7d8c8cB8d75bf541B2284", "0xf7aE520e99ed3C41180B5E12681d31Aa7302E4e5", "0x31fa51343297FFce0CC1E67a50B2D3428057D1b1", "0x81E411f1BFDa43493D7994F82fb61A415F6b8Fd4", "0x4c75FA734a39f3a21C57e583c1c29942F021C6B7", "0xD3b1e36A372Ca250eefF61f90E833Ca070559970", "0xF0F23944EfC5A63c53632C571E7377b85d5E6B6f", "0xb29dD2f6672C0DFF2d2f173087739A42877A5172", "0x3799bDA7B884D33F79CEC926af21160dc47fbe05"]'; + '["0x12A1D74F8697b9f4F1eEBb0a9d0FB6a751366399", "0xD892c09b556b547c80B7d8c8cB8d75bf541B2284", "0xf7aE520e99ed3C41180B5E12681d31Aa7302E4e5", "0x31fa51343297FFce0CC1E67a50B2D3428057D1b1", "0x81E411f1BFDa43493D7994F82fb61A415F6b8Fd4", "0x4c75FA734a39f3a21C57e583c1c29942F021C6B7", "0xD3b1e36A372Ca250eefF61f90E833Ca070559970", "0xF0F23944EfC5A63c53632C571E7377b85d5E6B6f", "0xb29dD2f6672C0DFF2d2f173087739A42877A5172", "0xfe43A8B0b481Ae9fB1862d31826532047d2d538c"]'; break; case "sepolia": locatorAddress = "0x8f6254332f69557A72b0DA2D5F0Bc07d4CA991E7"; //https://docs.lido.fi/deployed-contracts/sepolia#core-protocol diff --git a/launcher/src/backend/tests/integration/ErigonService.int.js b/launcher/src/backend/tests/integration/ErigonService.int.js index 3e130e2e3..1b3f301c0 100755 --- a/launcher/src/backend/tests/integration/ErigonService.int.js +++ b/launcher/src/backend/tests/integration/ErigonService.int.js @@ -90,7 +90,7 @@ test("erigon installation", async () => { expect(ufw.stdout).toMatch(/30303\/udp/); //check docker container - expect(docker.stdout).toMatch(/thorax\/erigon/); + expect(docker.stdout).toMatch(/erigontech\/erigon/); expect(docker.stdout).toMatch(/30303->30303/); expect(docker.stdout).toMatch(/8545-8546/); if (!executionClient.id.includes("Up")) { diff --git a/launcher/src/backend/tests/unit/ErigonService.test.js b/launcher/src/backend/tests/unit/ErigonService.test.js index 0e83d235a..d31fc19f1 100755 --- a/launcher/src/backend/tests/unit/ErigonService.test.js +++ b/launcher/src/backend/tests/unit/ErigonService.test.js @@ -18,7 +18,7 @@ test("user", () => { }); test("image", () => { - expect(ErigonService.buildByUserInput("mainnet", null, null).buildConfiguration().image).toMatch(/thorax\/erigon/); + expect(ErigonService.buildByUserInput("mainnet", null, null).buildConfiguration().image).toMatch(/erigontech\/erigon/); }); test("endpoint url", () => { diff --git a/launcher/src/store/nodeManage.js b/launcher/src/store/nodeManage.js index 0e2180a70..6db4c692c 100755 --- a/launcher/src/store/nodeManage.js +++ b/launcher/src/store/nodeManage.js @@ -123,27 +123,26 @@ export const useNodeManage = defineStore("nodeManage", { freeCensorship: true, }, { - icon: "/img/icon/one-click-icons/mevboost-icons/eden.png", - name: "Eden", + icon: "/img/icon/one-click-icons/mevboost-icons/flashbots.png", + name: "Titan Relay", mainnet: - "https://0xb3ee7afcf27f1f1259ac1787876318c6584ee353097a50ed84f51a1f21a323b3736f271a895c7ce918c038e4265918be@relay.edennetwork.io/", - + "https://0x8c4ed5e24fe5c6ae21018437bde147693f68cda427cd1122cf20819c30eda7ed74f72dece09bb313f2a1855595ab677d@global.titanrelay.xyz", holesky: - "https://0xb1d229d9c21298a87846c7022ebeef277dfc321fe674fa45312e20b5b6c400bfde9383f801848d7837ed5fc449083a12@relay-holesky.edennetwork.io", + "https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@holesky.titanrelay.xyz", id: 10, isSelected: false, isRemoved: false, - freeCensorship: false, + freeCensorship: true, }, { icon: "/img/icon/one-click-icons/mevboost-icons/flashbots.png", - name: "Titan Relay", - holesky: - "https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@holesky.titanrelay.xyz", + name: "Titan Relay Filtered", + mainnet: + "https://0x8c4ed5e24fe5c6ae21018437bde147693f68cda427cd1122cf20819c30eda7ed74f72dece09bb313f2a1855595ab677d@regional.titanrelay.xyz", id: 11, isSelected: false, isRemoved: false, - freeCensorship: true, + freeCensorship: false, }, { icon: "/img/icon/one-click-icons/mevboost-icons/bloxroute.png", From 8086cd22a0d229754b21f6b16382df70599fdf4e Mon Sep 17 00:00:00 2001 From: NeoPlays <80448387+NeoPlays@users.noreply.github.com> Date: Thu, 17 Oct 2024 20:27:58 +0200 Subject: [PATCH 4/5] REVERT: Erigon Image Change (#2098) * REVERT: Erigon Image Change * ADD: other changes --- .../roles/update-changes/molecule/223/verify.yml | 4 ++-- .../update-changes/tasks/2.2.3/updates-223.yaml | 10 +++++----- launcher/src/backend/OneClickInstall.js | 3 +++ launcher/src/backend/ServiceManager.js | 2 ++ .../src/backend/ethereum-services/ErigonService.js | 13 ++++++++++++- .../src/backend/tests/unit/ErigonService.test.js | 2 +- 6 files changed, 25 insertions(+), 9 deletions(-) diff --git a/controls/roles/update-changes/molecule/223/verify.yml b/controls/roles/update-changes/molecule/223/verify.yml index b93b016bb..a0e1f840d 100644 --- a/controls/roles/update-changes/molecule/223/verify.yml +++ b/controls/roles/update-changes/molecule/223/verify.yml @@ -98,8 +98,8 @@ - Ejector_service_configuration2.env.ORACLE_ADDRESSES_ALLOWLIST | from_yaml | select('match', '0xEC4BfbAF681eb505B94E4a7849877DC6c600Ca3A') | length == 0 - Ejector_service_configuration3.env.ORACLE_ADDRESSES_ALLOWLIST | from_yaml | select('match', '0xfe43A8B0b481Ae9fB1862d31826532047d2d538c') | length == 1 - Ejector_service_configuration3.env.ORACLE_ADDRESSES_ALLOWLIST | from_yaml | select('match', '0x3799bDA7B884D33F79CEC926af21160dc47fbe05') | length == 0 - - Erigon_service_configuration.image | split(':') | first == 'erigontech/erigon' - - Erigon_service_configuration2.image == 'erigontech/erigon:v2.60.8' + # - Erigon_service_configuration.image | split(':') | first == 'erigontech/erigon' + # - Erigon_service_configuration2.image == 'erigontech/erigon:v2.60.8' - Mev_service_configuration.entrypoint | select('match', 'eden') | length == 0 - Mev_service_configuration2.entrypoint | select('match', 'eden') | length == 0 # EOF diff --git a/controls/roles/update-changes/tasks/2.2.3/updates-223.yaml b/controls/roles/update-changes/tasks/2.2.3/updates-223.yaml index bca9b7724..2bf114863 100644 --- a/controls/roles/update-changes/tasks/2.2.3/updates-223.yaml +++ b/controls/roles/update-changes/tasks/2.2.3/updates-223.yaml @@ -10,11 +10,11 @@ loop_control: loop_var: config_file -- name: Include Erigon Changes - include_tasks: erigon_changes.yaml - loop: "{{ service_config_files.files }}" - loop_control: - loop_var: config_file +# - name: Include Erigon Changes +# include_tasks: erigon_changes.yaml +# loop: "{{ service_config_files.files }}" +# loop_control: +# loop_var: config_file - name: Include MEV Changes include_tasks: mev_changes.yaml diff --git a/launcher/src/backend/OneClickInstall.js b/launcher/src/backend/OneClickInstall.js index b6390f414..d1c2ba8e2 100755 --- a/launcher/src/backend/OneClickInstall.js +++ b/launcher/src/backend/OneClickInstall.js @@ -63,6 +63,9 @@ export class OneClickInstall { if (this.mevboost) serviceList.push(this.mevboost); if (this.validatorService) serviceList.push(this.validatorService); if (this.extraServices) this.extraServices.forEach((service) => serviceList.push(service)); + serviceList.forEach((service) => { + if (service.switchImageTag) service.switchImageTag(this.nodeConnection.settings.stereum.settings.arch); + }); return serviceList.map((service) => service.buildConfiguration()); } diff --git a/launcher/src/backend/ServiceManager.js b/launcher/src/backend/ServiceManager.js index 3d803ef57..70b650161 100755 --- a/launcher/src/backend/ServiceManager.js +++ b/launcher/src/backend/ServiceManager.js @@ -894,6 +894,7 @@ export class ServiceManager { new ServicePort("127.0.0.1", 8546, 8546, servicePortProtocol.tcp), ]; service = ErigonService.buildByUserInput(args.network, ports, args.installDir + "/erigon"); + service.switchImageTag(this.nodeConnection.settings.stereum.settings.arch); return service; case "LighthouseBeaconService": @@ -1382,6 +1383,7 @@ export class ServiceManager { } else if (versions["prater"] && versions["prater"][service.service]) { service.imageVersion = versions["prater"][service.service].slice(-1).pop(); } + if (service.switchImageTag) service.switchImageTag(this.nodeConnection.settings.stereum.settings.arch); }); for (const service of newServices) { await this.nodeConnection.writeServiceConfiguration( diff --git a/launcher/src/backend/ethereum-services/ErigonService.js b/launcher/src/backend/ethereum-services/ErigonService.js index 8d573d60d..f1142c11f 100755 --- a/launcher/src/backend/ethereum-services/ErigonService.js +++ b/launcher/src/backend/ethereum-services/ErigonService.js @@ -15,7 +15,7 @@ export class ErigonService extends NodeService { "ErigonService", // service service.id, // id 1, // configVersion - "erigontech/erigon", // image + "thorax/erigon", // image "v2.60.8", // imageVersion [ `erigon`, @@ -81,6 +81,17 @@ export class ErigonService extends NodeService { return service; } + switchImageTag(arch) { + const armArchs = ["arm", "arm64", "aarch64_be", "aarch64", "armv8b", "armv8l"]; //Possible arm architectures: https://stackoverflow.com/questions/45125516/possible-values-for-uname-m + if (armArchs.includes(arch)) { + this.imageVersion = this.imageVersion.endsWith("-arm64") ? this.imageVersion : this.imageVersion + "-arm64"; + this.imageVersion = this.imageVersion.startsWith("v") ? this.imageVersion.slice(1) : this.imageVersion; + } else { + this.imageVersion = this.imageVersion.endsWith("-arm64") ? this.imageVersion.replace("-arm64", "") : this.imageVersion; + this.imageVersion = this.imageVersion.startsWith("v") ? this.imageVersion.slice(1) : this.imageVersion; + } + } + buildExecutionClientHttpEndpointUrl() { return "http://stereum-" + this.id + ":8545"; } diff --git a/launcher/src/backend/tests/unit/ErigonService.test.js b/launcher/src/backend/tests/unit/ErigonService.test.js index d31fc19f1..0e83d235a 100755 --- a/launcher/src/backend/tests/unit/ErigonService.test.js +++ b/launcher/src/backend/tests/unit/ErigonService.test.js @@ -18,7 +18,7 @@ test("user", () => { }); test("image", () => { - expect(ErigonService.buildByUserInput("mainnet", null, null).buildConfiguration().image).toMatch(/erigontech\/erigon/); + expect(ErigonService.buildByUserInput("mainnet", null, null).buildConfiguration().image).toMatch(/thorax\/erigon/); }); test("endpoint url", () => { From e0f9044f6ed2e8f62b33f09c70d813c145cfb07b Mon Sep 17 00:00:00 2001 From: daverolo <107847185+daverolo@users.noreply.github.com> Date: Thu, 17 Oct 2024 21:24:09 +0200 Subject: [PATCH 5/5] FIX: Update Version [NOCI][DRAFT] --- launcher/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/package.json b/launcher/package.json index d9091e0e9..8545e44d5 100755 --- a/launcher/package.json +++ b/launcher/package.json @@ -1,6 +1,6 @@ { "name": "stereum-launcher", - "version": "2.2.3", + "version": "2.2.4", "private": true, "description": "Stereum Ethereum Node Setup Launcher", "author": "stereum.net",