Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTML Fix for Update operator node spec #24

Open
wants to merge 13 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
306 changes: 275 additions & 31 deletions docs/operator-guides/requirements/system-requirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,53 +4,297 @@ sidebar_position: 1

# System Requirements

## General System Requirements
## Hardware Requirements

The EigenDA network design dictates that operators with greater stake will
be asked to store a larger number of blob chunks/shards. As a result, an operator's node requirements are a
function of the total amount of stake they wield across all quorums, which we
call 'Total Quorum Stake' (TQS). For example, if an operator Foobar has 3% stake
call `Total Quorum Stake` (TQS). For example, if an operator Foobar has 3% stake
on the restaked ETH quorum, and 5% ETH on a staked WETH quorum, then operator
Foobar's TQS is 8%.

Operators should use the following table to determine which [EigenLayer node class](https://docs.eigenlayer.xyz/eigenlayer/operator-guides/eigenlayer-node-classes#general-purpose-eigenlayer-node-classes)
is appropriate for their level of stake:
The requirements here are designed to support max system throughput of 20MiB/s.

| Total Quorum Stake (TQS) | Max Allocated Throughput | Node Class |
| ------------------------ | ----------------------- | -------------------- |
| Up to 0.03% (Solo staker) | 80 Kbps | General Purpose - large |
| Up to 0.2% | 500 Kbps | General Purpose - xl |
| Up to 20% | 50 Mbps | General Purpose - 4xl |
### CPU and RAM requirements

Here 'Max Allocated Throughput' refers to the maximum amount of blob shard traffic that
will be sent to a node based on their total quorum stake. This measure does not translate
directly to the networking capacity required by the node; operators should use the network
capacity requirements of the associated node class.
| Total Quorum Stake (TQS) | vCPUs | RAM (GB)|
| ------------------------ | ----------------------- | -------------------- |
| Up to 0.02% (Solo staker) | 2 | 8 |
| Up to 0.2% | 4 | 16 |
| Up to 20% | 16 | 64 |

Professional operators with large or variable amounts of delegated stake should
select the `4xl` node class. The `large` class is intended to be used by solo
stakers with the minimal allowed quantity of stake.
For reference, these requirements generally match the large, xlarge and 4xlarge in [EigenLayer node class](https://docs.eigenlayer.xyz/eigenlayer/operator-guides/eigenlayer-node-classes#general-purpose-eigenlayer-node-classes). Operators could provision the node following this standardized node class based on their stake percentage.

We will update this specification to include new EigenLayer node classes as they
are introduced.
### Network and Storage Requirements

## Node Storage Requirements
*TL;DR Each 1% of TQS needs roughly 4.8MB/s download bandwidth, 48MB/s upload bandwidth, and 2.3TB storage*

EigenDA nodes **must** provision high-performance SSD storage in order to keep
up with network storage and retrieval tasks. Enterprise grade SSDs are recommended, such as `PCIe 4.0 x4 M.2/U.2 NVMe`.
Note:
* The bandwidth numbers here are the **actual steady-state data transfer throughput** needed Node (i.e. not just the ingress bandwidth of the node).
* Actual bandwidth may be affected by transportation via the public internet over geographic distances.
* Currently, the Disperser is located in AWS us-east-1, which may be subject to change and moving towards decentralization.
* The operators with less than 0.05% stake will be provisioning the resource the same as the 0.05% due to the rounding effects.
* This doesn't include the resource needed for other services (if any) on the same machine.

Failure to maintain adequate
performance will result in unacceptable validation latency and [automatic ejection](protocol-SLA/).
For reference, the following tables summarize requirements based on TQS:

The following table summarizes required storage capacity based on TQS:
<table>
<tr>
<td><strong>Total Quorum Stake (%)</strong></td>
<td><strong>Download bandwidth (MB/s)</strong></td>
<td><strong>Max upload bandwidth (MB/s)</strong></td>
<td><strong>Storage (GB)</strong></td>
</tr>
<tr>
<td>1</td>
<td>4.8</td>
<td>48.00</td>
<td>2,322.43</td>
</tr>
<tr>
<td>2</td>
<td>9.4</td>
<td>94.00</td>
<td>4,548.10</td>
</tr>
<tr>
<td>3</td>
<td>14</td>
<td>140.00</td>
<td>6,773.76</td>
</tr>
<tr>
<td>4</td>
<td>18.6</td>
<td>186.00</td>
<td>8,999.42</td>
</tr>
<tr>
<td>5</td>
<td>23.2</td>
<td>232.00</td>
<td>11,225.09</td>
</tr>
<tr>
<td>6</td>
<td>27.8</td>
<td>278.00</td>
<td>13,450.75</td>
</tr>
<tr>
<td>7</td>
<td>32.4</td>
<td>324.00</td>
<td>15,676.42</td>
</tr>
<tr>
<td>8</td>
<td>37</td>
<td>370.00</td>
<td>17,902.08</td>
</tr>
<tr>
<td>9</td>
<td>41.6</td>
<td>416.00</td>
<td>20,127.74</td>
</tr>
<tr>
<td>10</td>
<td>46.2</td>
<td>462.00</td>
<td>22,353.41</td>
</tr>
<tr>
<td>11</td>
<td>50.8</td>
<td>508.00</td>
<td>24,579.07</td>
</tr>
<tr>
<td>12</td>
<td>55.4</td>
<td>554.00</td>
<td>26,804.74</td>
</tr>
<tr>
<td>13</td>
<td>60</td>
<td>600.00</td>
<td>29,030.40</td>
</tr>
<tr>
<td>14</td>
<td>64.6</td>
<td>646.00</td>
<td>31,256.06</td>
</tr>
<tr>
<td>15</td>
<td>69.2</td>
<td>692.00</td>
<td>33,481.73</td>
</tr>
<tr>
<td>16</td>
<td>73.8</td>
<td>738.00</td>
<td>35,707.39</td>
</tr>
<tr>
<td>17</td>
<td>78.4</td>
<td>784.00</td>
<td>37,933.06</td>
</tr>
<tr>
<td>18</td>
<td>83</td>
<td>830.00</td>
<td>40,158.72</td>
</tr>
<tr>
<td>19</td>
<td>87.6</td>
<td>876.00</td>
<td>42,384.38</td>
</tr>
<tr>
<td>20</td>
<td>92.2</td>
<td>922.00</td>
<td>44,610.05</td>
</tr>
<tr>
<td>21</td>
<td>96.8</td>
<td>968.00</td>
<td>46,835.71</td>
</tr>
<tr>
<td>22</td>
<td>101.4</td>
<td>1,014.00</td>
<td>49,061.38</td>
</tr>
<tr>
<td>23</td>
<td>106</td>
<td>1,060.00</td>
<td>51,287.04</td>
</tr>
<tr>
<td>24</td>
<td>110.6</td>
<td>1,106.00</td>
<td>53,512.70</td>
</tr>
<tr>
<td>25</td>
<td>115.2</td>
<td>1,152.00</td>
<td>55,738.37</td>
</tr>
</table>

| Total Quorum Stake (TQS) | Max Allocated Throughout | Required Storage |
| ------------------------ | -------------------- | ---------------- |
| Up to 0.03% | 80 Kbps | 20 GB |
| Up to 0.2% | 500 Kbps | 150 GB |
| Up to 1% | 2.5 Mbps | 750 GB |
| Up to 10% | 25 Mbps | 4 TB |
| Up to 20% | 50 Mbps | 8 TB |
<table>
<tr>
<td><strong>Total Quorum Stake (%)</strong></td>
<td><strong>Download bandwidth (MB/s)</strong></td>
<td><strong>Max upload bandwidth (MB/s)</strong></td>
<td><strong>Storage (GB)</strong></td>
</tr>
<tr>
<td>1</td>
<td>4.8</td>
<td>48.00</td>
<td>185.79</td>
</tr>
<tr>
<td>0.9</td>
<td>4.34</td>
<td>43.40</td>
<td>167.99</td>
</tr>
<tr>
<td>0.8</td>
<td>3.88</td>
<td>38.80</td>
<td>150.18</td>
</tr>
<tr>
<td>0.7</td>
<td>3.42</td>
<td>34.20</td>
<td>132.38</td>
</tr>
<tr>
<td>0.6</td>
<td>2.96</td>
<td>29.60</td>
<td>114.57</td>
</tr>
<tr>
<td>0.5</td>
<td>2.5</td>
<td>25.00</td>
<td>96.77</td>
</tr>
<tr>
<td>0.4</td>
<td>2.04</td>
<td>20.40</td>
<td>78.96</td>
</tr>
<tr>
<td>0.3</td>
<td>1.58</td>
<td>15.80</td>
<td>61.16</td>
</tr>
<tr>
<td>0.2</td>
<td>1.12</td>
<td>11.20</td>
<td>43.35</td>
</tr>
<tr>
<td>0.1</td>
<td>0.66</td>
<td>6.60</td>
<td>25.55</td>
</tr>
<tr>
<td>0.09</td>
<td>0.614</td>
<td>6.14</td>
<td>23.77</td>
</tr>
<tr>
<td>0.08</td>
<td>0.568</td>
<td>5.68</td>
<td>21.99</td>
</tr>
<tr>
<td>0.07</td>
<td>0.522</td>
<td>5.22</td>
<td>20.21</td>
</tr>
<tr>
<td>0.06</td>
<td>0.476</td>
<td>4.76</td>
<td>18.42</td>
</tr>
<tr>
<td>0.05</td>
<td>0.43</td>
<td>4.30</td>
<td>16.64</td>
</tr>
</table>

:::info
The rough size of the message sent from the EigenDA disperser to a DA node can be estimated using the following formula:
Expand Down