Skip to content

Commit 0ee5058

Browse files
authored
Merge pull request #67 from Alex-ssvlabs/main
SSV-specific Best Practices + small fixes
2 parents ada4225 + d0d8716 commit 0ee5058

File tree

4 files changed

+76
-53
lines changed

4 files changed

+76
-53
lines changed

docs/developers/tools/ssv-dkg-client/ceremony-output-summary.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ ceremony-[timestamp]
9595
```
9696

9797
#### Details about `sharesData` field
98-
Below is an example of `sharesData` from a Hoodi validator broken down:
98+
Below is an example of `sharesData` from a Hoodi validator with 4 operators. Each segment is highlighted with color:
9999

100100
<div style={{ textAlign: 'center', width: '100%', margin: '0 auto' }}>
101101
<img src="/img/sharesData.png" alt="" />

docs/operators/operator-node/node-setup/README.md

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,11 @@ Git is needed to download the SSV Node stack on your machine.
114114

115115
#### 4. Adjust Firewall
116116

117-
Make sure to expose the ports on your SSV node machine's firewall, otherwise your node won't be able to run correctly. The default ports are :
117+
Make sure to expose the ports on your SSV node machine's firewall, otherwise your node won't be able to run correctly. The default ports are:
118118
- P2P - **12001 UDP** and **13001 TCP**
119119
- Metrics - **15000 TCP**
120120
- Health endpoint - **16000 TCP**
121+
- DKG port - **3030 TCP**
121122

122123
If you don't want to use the default ports, they can be changed on the next step.
123124

@@ -143,21 +144,31 @@ Edit the `ssv.env` file and adjust the settings to your needs. The minimum you n
143144
* `BEACON_NODE_ADDR` - HTTP address of the Beacon node (e.g. `http://1.2.3.4:5052`)
144145
* `ETH_1_ADDR` - WebSocket address of the Execution node (e.g. `ws://1.2.3.4:8546`)
145146
* `NETWORK` - The network you are running on (`mainnet`, `hoodi`)
146-
:::info
147+
148+
All existing settings are listed on the [Configuration Reference page](./node-configuration-reference.md).
149+
:::info Multiple Endpoints
147150
Both `BEACON_NODE_ADDR` and `ETH_1_ADDR` support multiple endpoints. Separate them with `;`.
148151

149152
Example: `BEACON_NODE_ADDR=http://1.2.3.4:5052;http://1.2.3.4:5053`
150153
:::
151-
***
152-
If you already have encrypted key and password files:
154+
155+
### Password and private key
156+
On the first start the Node will generate a random `password` and encrypted `private_key` files. You can find the files under `~/ssv-stack/ssv-node-data` directory.&#x20;
157+
158+
**If you already have encrypted key and password files**:
153159
* Copy/move them to `/ssv-stack/ssv-node-data`
154160
* Edit the environment variables to the correct file names, e.g.:
155161
* `PRIVATE_KEY_FILE=/data/encrypted_private_key.json`
156162
* `PASSWORD_FILE=/data/password`
157163

158164
**If this is done incorrectly**, new keys will be automatically generated, and you will see a message in the console indicating this.
159165

160-
All existing settings are listed on the [Configuration Reference page](./node-configuration-reference.md).
166+
167+
:::info Backup your files
168+
Both password and private key are needed to run SSV and DKG Nodes.
169+
170+
**Backup those files** on a separate device, if any of the two are lost — you will lose access to your operator without a chance to recover.
171+
:::
161172

162173
### Custom ports
163174

@@ -171,24 +182,20 @@ Changes to those files will be applied after a restart of the node (_if you alre
171182
## Start the Node
172183

173184
To start your node use the following command
174-
175185
```bash
176186
docker compose up
177187
```
178188

179189
Or you can start it in the background, so there won't be logs in your CLI
180-
181190
```bash
182191
docker compose up -d
183192
```
184193

185-
:::info Backup your files
186-
On the first start the Node will generate a random `password` and encrypted `private_key` files.&#x20;
194+
## Start DKG Node
195+
You can also run the stack with DKG, simplifying the setup process.
187196

188-
Both files are needed to run SSV Node and DKG Node. You can find them under `~/ssv-stack/ssv-node-data` directory.&#x20;
197+
The instructions are on the ["Enablind DKG" section](./enabling-dkg/start-dkg-node/README.md).
189198

190-
**Backup those files** on a separate device, if any of the two are lost — you will lose access to your operator without a chance to recover.
191-
:::
192199

193200
## Other setup options
194201

docs/operators/operator-node/node-setup/best-practices.md

Lines changed: 54 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ sidebar_position: 3
77

88
This guide outlines key recommendations to ensure the best Performance and Correctness of your node. The guide will be updated as we get new information.
99

10-
The page is divided into three parts:
11-
- [**Introduction**](#introduction) - understanding the Performance, Correctness, and their key factors.
12-
- [**Major impact**](#major-impact) - vital tips, more obvious.
13-
- [**Minor impact**](#minor-impact) - fine-tuning tips, nice-to-have, less obvious.
10+
The page is divided into four parts:
11+
- [**Introduction**](#introduction) - Understanding the Performance, Correctness, and their key factors.
12+
- [**SSV-specific**](#ssv-specific) - Features of SSV that will improve Performance or Correctness.
13+
- [**Major impact**](#major-impact) - Vital tips, more obvious.
14+
- [**Minor impact**](#minor-impact) - Fine-tuning tips, nice-to-have, less obvious.
1415

1516

1617
## **Introduction**
@@ -22,6 +23,52 @@ Several key factors influence this:
2223
- **Network Throughput & Latency:** Minimal network delay is critical, especially for production setups.
2324
- **Hardware Resources:** Adequate CPU, sufficient RAM, and fast, reliable storage are necessary.
2425

26+
## **SSV-specific**
27+
28+
#### Failover for EL and CL clients
29+
```yaml
30+
eth2:
31+
# HTTP URL of the Beacon node to connect to.
32+
BeaconNodeAddr: http://example.url:5052;http://example.url:5053
33+
34+
eth1:
35+
# WebSocket URL of the Execution node to connect to.
36+
ETH1Addr: ws://example.url:8546/ws;ws://example.url:8547/ws
37+
```
38+
- When the first node goes offline or out of sync, SSV will switch to the next endpoint.
39+
- Endpoints should be set in the order you want them to be used. The first node will be the primary one.
40+
- Failover works in round-robin way, so once SSV circled through all of the endpoints it will start from the first one again.
41+
- When SSV node restarts it will always start with the first endpoint from the list.
42+
43+
44+
#### Weighted Attestation Data
45+
```yaml
46+
eth2:
47+
WithWeightedAttestationData: true # Enables WAD
48+
```
49+
- The feature only works with 2+ CL endpoints (`BeaconNodeAddr`) configured.
50+
- Improves attestation accuracy by scoring responses from multiple Beacon nodes based on epoch and slot proximity. Adds slight latency to duties but includes safeguards (timeouts, retries).
51+
52+
#### Parallel Data Submission
53+
```yaml
54+
eth2:
55+
WithParallelSubmissions: true # Sends duties to all nodes concurrently
56+
```
57+
- The feature only works with 2+ CL endpoints (`BeaconNodeAddr`) configured.
58+
- SSV will submit duty data to all Beacon nodes in parallel. This built-in configuration ensures high availability and improves performance.
59+
60+
61+
#### Doppelganger Protection
62+
```yaml
63+
EnableDoppelgangerProtection: true # Enables Doppelganger Protection
64+
```
65+
- Doppelganger Protection (DG) checks if the managed validators are attesting elsewhere at the moment of SSV node start. That prevents double signature which is a slashable event.
66+
- SSV with DG enabled will be offline for the first 3 epochs after the node start.
67+
- If enough nodes in the cluster have DG enabled and are online - a restarted node will not wait for 3 epochs. Node can identify that there's a DG quorum going on and will join it. This process is almost as quick as restart of a node without DG.
68+
- If you manage all nodes in the cluster — it is recommended to restart one by one. Otherwise, it will take 3 epochs to do the DG checks.
69+
- To learn more technical details please refer to [our documentation page on GitHub](https://github.com/ssvlabs/ssv/blob/v2.3.0/doppelganger/README.md).
70+
71+
2572
## **Major impact**
2673
High‑priority practices that ensure reliable, on‑time duty submissions. Might sound obvious, but are often overlooked.
2774

@@ -32,7 +79,7 @@ Most of hardware-related suggestions below are for Execution (EL) and Consensus
3279
### **For Home Setups**
3380
- **Hardware:** Usual setup has 4- to 8-core CPU (focus on single-thread performance) and 32GB RAM.
3481
- **Disk:** NVMe SSDs are strongly recommended. If you're unsure with filesystem to use, stick to `ext4`, as it is performant and the easiest to maintain.
35-
- **Reliability:** Use a UPS and ensure the machine is well-ventilated. Sudden power loss or thermal throttling can cause downtime or result in missed duties
82+
- **Reliability:** Use a UPS and ensure the machine is well-ventilated. Sudden power loss or thermal throttling can cause downtime or result in missed duties.
3683
- **Internet Connectivity:** Ensure your ISP doesn't impose strict data caps. Choose a plan with at least 10 Mbps upload speed, but latency and reliability make the difference.
3784
- **[Follow EthStaker hardware section](https://ethstaker.org/staking-hardware)** as their guides are focused on running Execution and Consensus nodes.
3885

@@ -62,8 +109,8 @@ Ensure your hardware meets or exceeds [SSV recommended specifications](./hardwar
62109
Ensure all required ports are open and correctly configured on your setup.
63110

64111
**Critical Ports:**
65-
- **SSV P2P:** Typically 12001 UDP and 13001 TCP (or as specified in your configuration)
66-
- **Execution P2P:** Typically 30303 TCP and UDP (for Geth and Nethermind)
112+
- **SSV P2P:** Typically 12001 UDP and 13001 TCP (or as specified in your configuration).
113+
- **Execution P2P:** Typically 30303 TCP and UDP (for Geth and Nethermind).
67114
- **Execution RPC:** HTTP 8545 and WS 8546 (for Geth and Nethermind), **open only to SSV Node!**.
68115
- **Consensus P2P:** Depends on your client, make sure to follow your client's documentation to open the correct ports.
69116
- **Consensus RPC:** Depends on your client (e.g. 3500 for Prysm, 5052 for Lighthouse), **open only to SSV Node!**.
@@ -84,9 +131,6 @@ Location of your clients plays a direct role in performance. Co-hosting Executio
84131

85132
### Network Throughput and Latency
86133

87-
**Recommendation:**
88-
Optimize your overall network performance by implementing the following best practices:
89-
90134
**Minimizing Intermediate Layers**
91135
- Reduce the number of intermediate hops (such as redundant routers, proxies, or firewalls) between your nodes and connected services.
92136
- Simplify your firewall configuration by using minimal, direct rule sets (e.g., UFW with straightforward rules) to avoid delays.
@@ -145,36 +189,6 @@ Keep your clients updated, while prioritizing stability over following every upg
145189
**TCP Congestion Control**
146190
- Set your TCP congestion control to BBR by [following this guide](https://www.cyberciti.biz/cloud-computing/increase-your-linux-server-internet-speed-with-tcp-bbr-congestion-control/), if supported by your kernel version.
147191

148-
### SSV-Specific
149-
150-
**Failover for EL and CL clients:**
151-
152-
```yaml
153-
eth2:
154-
# HTTP URL of the Beacon node to connect to.
155-
BeaconNodeAddr: http://example.url:5052;http://example.url:5053
156-
157-
eth1:
158-
# WebSocket URL of the Eth1 node to connect to.
159-
ETH1Addr: ws://example.url:8546/ws;ws://example.url:8547/ws
160-
```
161-
162-
**Weighted Attestation Data**
163-
- The feature only works with 2+ CL endpoints configured
164-
- Improves attestation accuracy by scoring responses from multiple Beacon nodes based on epoch and slot proximity. Adds slight latency to duties but includes safeguards (timeouts, retries).
165-
```yaml
166-
eth2:
167-
WithWeightedAttestationData: true # Enables WAD
168-
```
169-
170-
**Parallel Data Submission**
171-
- The feature only works with 2+ CL endpoints (`BeaconNodeAddr`) configured
172-
- Take advantage of the SSV client's native ability to submit duty data in parallel. This built-in configuration helps ensure high availability and improve performance:
173-
```yaml
174-
eth2:
175-
WithParallelSubmissions: true # Sends duties to all nodes concurrently
176-
```
177-
178192
### Containerization Trade-offs
179193

180194
**Recommendation:**

docs/stakers/clusters/reactivation.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Reactivation
22

3+
The following the theoretical context behind Cluster Reactivation. To see the actionable steps, please follow [this guide instead](../cluster-management/re-activating-a-cluster.md).
4+
35
In order to reactivate a liquidated cluster, the user must supply the liquidation collateral required for their cluster. It is advised to deposit more than the reactivation amount so the cluster will have an operational runway. Users that only deposit the liquidation collateral may be liquidated soon after because they did not compensate for the operational cost of their cluster’s managed validator(s).
46

57
Once reactivated, the clusters’ validator(s) operation will continue. To calculate how much minimal funding (liquidation collateral) is needed to reactivate a cluster:

0 commit comments

Comments
 (0)