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 1 commit
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
Next Next commit
Update operator node spec
  • Loading branch information
jianoaix committed Oct 2, 2024
commit a07629e649a6b0dd42deb2e4c65a217080b6ac3d
351 changes: 322 additions & 29 deletions docs/operator-guides/requirements/system-requirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ 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
Expand All @@ -13,44 +13,337 @@ 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 |
### CPU and RAM requirements

| Total Quorum Stake (TQS) | vCPUs | RAM (GB)|
| ------------------------ | ----------------------- | -------------------- |
| 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 |
| Up to 0.02% (Solo staker) | 2 | 8 |
| Up to 0.2% | 4 | 16 |
| Up to 20% | 16 | 64 |

For reference, these requirements generally match the large, xlarge and 4xlarge [EigenLayer node class](https://docs.eigenlayer.xyz/eigenlayer/operator-guides/eigenlayer-node-classes#general-purpose-eigenlayer-node-classes).

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.
### Network and Storage Requirements

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.
Each 1% of TQS needs 2.5MB/s network, and 1.2TB storage

We will update this specification to include new EigenLayer node classes as they
are introduced.
Note that the 2.5MB/s is the **actual data transfer throughput** needed between EigenDA Disperser and Node (i.e. not the network bandwidth on paper), in order for the Node to keep up signing. Currently, the Disperser is located in AWS us-east-1, which may be subject to change and moving towards decentralization of the disperser.

## Node Storage Requirements
The following table summarizes requirements based on TQS for your convenience:

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`.
<table>
<tr>
<td><strong>TotalQuorumStake (%)</strong>
</td>
<td><strong>Network throughput (MB/s)</strong>
</td>
<td><strong>Storage (GB)</strong>
</td>
</tr>
<tr>
<td>1
</td>
<td>2.5
</td>
<td>1,200.00
</td>
</tr>
<tr>
<td>0.8
</td>
<td>2
</td>
<td>960.00
</td>
</tr>
<tr>
<td>0.6
</td>
<td>1.5
</td>
<td>720
</td>
</tr>
<tr>
<td>0.4
</td>
<td>1
</td>
<td>480
</td>
</tr>
<tr>
<td>0.2
</td>
<td>0.5
</td>
<td>240
</td>
</tr>
<tr>
<td>0.1
</td>
<td>0.25
</td>
<td>120
</td>
</tr>
<tr>
<td>0.08
</td>
<td>0.2
</td>
<td>96
</td>
</tr>
<tr>
<td>0.06
</td>
<td>0.15
</td>
<td>72
</td>
</tr>
<tr>
<td>0.04
</td>
<td>0.1
</td>
<td>48
</td>
</tr>
<tr>
<td>0.02
</td>
<td>0.05
</td>
<td>24
</td>
</tr>
<tr>
<td>0.01
</td>
<td>0.025
</td>
<td>12
</td>
</tr>
</table>

Failure to maintain adequate
performance will result in unacceptable validation latency and [automatic ejection](protocol-SLA/).

The following table summarizes required storage capacity based on TQS:

| 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>TotalQuorumStake (%)</strong>
</td>
<td><strong>Network throughput (MB/s)</strong>
</td>
<td><strong>Storage (GB)</strong>
</td>
</tr>
<tr>
<td>1
</td>
<td>2.5
</td>
<td>1,200.00
</td>
</tr>
<tr>
<td>2
</td>
<td>5
</td>
<td>2,400.00
</td>
</tr>
<tr>
<td>3
</td>
<td>7.5
</td>
<td>3,600.00
</td>
</tr>
<tr>
<td>4
</td>
<td>10
</td>
<td>4,800.00
</td>
</tr>
<tr>
<td>5
</td>
<td>12.5
</td>
<td>6,000.00
</td>
</tr>
<tr>
<td>6
</td>
<td>15
</td>
<td>7,200.00
</td>
</tr>
<tr>
<td>7
</td>
<td>17.5
</td>
<td>8,400.00
</td>
</tr>
<tr>
<td>8
</td>
<td>20
</td>
<td>9,600.00
</td>
</tr>
<tr>
<td>9
</td>
<td>22.5
</td>
<td>10,800.00
</td>
</tr>
<tr>
<td>10
</td>
<td>25
</td>
<td>12,000.00
</td>
</tr>
<tr>
<td>11
</td>
<td>27.5
</td>
<td>13,200.00
</td>
</tr>
<tr>
<td>12
</td>
<td>30
</td>
<td>14,400.00
</td>
</tr>
<tr>
<td>13
</td>
<td>32.5
</td>
<td>15,600.00
</td>
</tr>
<tr>
<td>14
</td>
<td>35
</td>
<td>16,800.00
</td>
</tr>
<tr>
<td>15
</td>
<td>37.5
</td>
<td>18,000.00
</td>
</tr>
<tr>
<td>16
</td>
<td>40
</td>
<td>19,200.00
</td>
</tr>
<tr>
<td>17
</td>
<td>42.5
</td>
<td>20,400.00
</td>
</tr>
<tr>
<td>18
</td>
<td>45
</td>
<td>21,600.00
</td>
</tr>
<tr>
<td>19
</td>
<td>47.5
</td>
<td>22,800.00
</td>
</tr>
<tr>
<td>20
</td>
<td>50
</td>
<td>24,000.00
</td>
</tr>
<tr>
<td>21
</td>
<td>52.5
</td>
<td>25,200.00
</td>
</tr>
<tr>
<td>22
</td>
<td>55
</td>
<td>26,400.00
</td>
</tr>
<tr>
<td>23
</td>
<td>57.5
</td>
<td>27,600.00
</td>
</tr>
<tr>
<td>24
</td>
<td>60
</td>
<td>28,800.00
</td>
</tr>
<tr>
<td>25
</td>
<td>62.5
</td>
<td>30,000.00
</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