Skip to content

Commit

Permalink
chore(docs): update node operator docs (#1660)
Browse files Browse the repository at this point in the history
update node operator docs, requirements, and more.

issue: none
  • Loading branch information
ttarsi authored Aug 7, 2024
1 parent 2e9b8ae commit f187eb1
Show file tree
Hide file tree
Showing 8 changed files with 146 additions and 83 deletions.
14 changes: 9 additions & 5 deletions docs/site/docs/operate/introduction/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@ sidebar_position: 1

# Introduction

## What Is a Node Operator in Omni?
A **node** is any instance of Omni client software that is connected to other instances in the peer to peer network.

Operators run Omni node software and play an active role in validating the Omni network.
Every node must run 2 clients:

Validators must run the Omni client in addition to nodes for all supported chains, since validators attest to xchain blocks. Full nodes don't need to run nodes for supported chains.

Validators stake **\$OMNI**, and can optionally stake **\$ETH** or receive **\$ETH** delegations via Eigenlayer. Many staking features including validator withdrawals, **\$OMNI** delegation, **\$ETH** delegation, and more will be released in the staking network upgrade.
- consensus client: `halo`
- allows the network to agree on the state of cross chain blocks (`XBlocks`)
- allows the network to agree (reach "consensus") on the state of the Omni execution client
- execution client: `geth`
- listens to new transactions broadcasted in the network
- executes transactions and builds blocks
- keeps a database of execution state
31 changes: 31 additions & 0 deletions docs/site/docs/operate/introduction/node_types.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
sidebar_position: 2
---

# Node Types

## Validators

- stake **\$OMNI** and **\$ETH**, and receive delegations for cryptoeconomic security
- build, propose, and attest to new blocks
- attest to cross chain blocks (`XBlocks`)
- receive **\$OMNI** rewards for performing their duties
- receive penalties (slashes) if they do not perform their duties

## Full Nodes

- do block by block validation of the network
- verify block body and state data for each block (not cross chain block data)
- store the last `n` chain states
- serve network data to other nodes
- can serve RPC endpoints for users, developers, and services

## Archive Nodes

- full nodes that never delete any downloaded data
- store chain state for every historical block

## Seed Nodes

- maintain an address book of peers on the p2p network
- help new nodes bootstrap p2p connections
36 changes: 0 additions & 36 deletions docs/site/docs/operate/introduction/requirements.md

This file was deleted.

39 changes: 0 additions & 39 deletions docs/site/docs/operate/onboarding/onboarding.md

This file was deleted.

50 changes: 50 additions & 0 deletions docs/site/docs/operate/run/full.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
sidebar_position: 1
---

# Running a Full Node

Currently, anyone can run a node on Omega Testnet. Stay tuned for running full nodes on mainnet.

## Omni Omega Testnet

Please note that if you're running an Omega full node, you will need to redeploy it several times, as the network is being redeployed with new features frequently.

### Quick Start

The simplest way to run a full node is with the following commands:

```bash
# Install the Omni CLI (alternate instructions here: https://docs.omni.network/tools/cli/)
curl -sSfL https://raw.githubusercontent.com/omni-network/omni/main/scripts/install_omni_cli.sh | sh -s

# init geth and halo
omni operator init-nodes --network=omega --moniker=foo --clean

# start geth and helo
cd ~/.omni/omega
docker compose up
```

Congrats, you're running a full node!

### Details

What's actually happening here?

- First, you're installing the `omni` cli. We've packaged up several flows into this CLI to make running a node easier for operators.
- The `init-nodes` command is used to generate genesis files and node initialization configs in your `~/.omni/` directory.
- `docker compose up` spins up a docker container for `halo` and `geth`, and starts your node.

### Node Requirements

| Category | Recommendation |
| --- | --- |
| Cores | 4 |
| Bandwidth | 100 Mbps |
| RAM | 16GB |
| SSD Hard Disk | 500 GB |
| Docker | 24.0.7 |
| Operating System | Linux/macOS (arm/64) |

Inbound ports will be enabled for cometBFT (tcp://266567) and Geth (tcp://30303, udp://30303)
53 changes: 53 additions & 0 deletions docs/site/docs/operate/run/validator.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
sidebar_position: 2
---

# Running a Validator

## Validator Requirements

### Running full nodes for supported chains

In the Omni Network, **validators must also run full nodes for supported chains**, since validators attest to cross chain blocks (`XBlocks`). Mainnet v1 includes: Ethereum, Arbitrum, Optimism, and Base. If you are interested in becoming a validator, you must have robust infrastructure supporting full nodes for each of these chains.

### Staking

Validators must stake **\$OMNI**. Validators can also opt into receiving **\$ETH** delegations once the Eigenlayer integration is complete.

## Validator Whitelist

Omni currently has a validator whitelist. A future network upgrade will enable permissionless validator registration.

## Mainnet Staking Network Upgrades

There will be several network upgrades to enable various validator / staking features. Some of these features include:

- Withdrawals: similar to the Beacon Chain launch, validators will not initially be able to withdrawal their $OMNI stake.
- Delegations: validators can receive **\$OMNI** delegations.
- **\$ETH** Restaking: validators can opt into receiving restaked **\$ETH** delegations, pending Eigenlayer slashing.
- Permissionless validator registration: anyone can register, and collect delegations to be included in the active set.

## AVS Registration

Operators can currently register with Omni's Eigenlayer AVS contract. Please note that **\$ETH** delegation counting for validator power will only be enabled in the mainnet staking upgrades listed above, and is not available in mainnet v1. The full Eigenlayer integration is pending **\$ETH** slashing being available as a feature in Eigenlayer (if **\$ETH** isn't slashable, it can't count for economic security yet).

You can follow Eigenlayer's instructions [here](https://docs.eigenlayer.xyz/eigenlayer/operator-guides/operator-installation) to register your operator key with their contracts.

Then you can run the following command to register within the Omni AVS contract:

```bash
omni operator register --config-file ~/path/to/operator.yaml
```

## Node Requirements

| Category | Recommendation |
| --- | --- |
| Cores | 4 |
| Bandwidth | 100 Mbps |
| RAM | 16GB |
| SSD Hard Disk | 500 GB |
| Docker | 24.0.7 |
| Operating System | Linux/macOS (arm/64) |

Inbound ports will be enabled for cometBFT (tcp://266567) and Geth (tcp://30303, udp://30303)
4 changes: 2 additions & 2 deletions docs/site/sidebars.ts
Original file line number Diff line number Diff line change
Expand Up @@ -284,13 +284,13 @@ const sidebars: SidebarsConfig = {
},
{
type: "category",
label: "Onboarding",
label: "Run a Node",
className: "sidebar-title",
collapsible: false,
items: [
{
type: "autogenerated",
dirName: "operate/onboarding",
dirName: "operate/run",
}
]
}
Expand Down
2 changes: 1 addition & 1 deletion docs/site/src/pages/testnet.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ function TestnetPage() {
<p>Learn how to build native cross-chain applications</p>
</div>
<div className="start-box">
<a href="/operate/onboarding/" className="start-box-link"></a>
<a href="/operate/run/full_node" className="start-box-link"></a>
<div className='dot'></div>
<ThemedIcon />
<h3>Operate</h3>
Expand Down

0 comments on commit f187eb1

Please sign in to comment.