diff --git a/docs/site/docs/operate/introduction/introduction.md b/docs/site/docs/operate/introduction/introduction.md index 3dc280b21..4c8694cb6 100644 --- a/docs/site/docs/operate/introduction/introduction.md +++ b/docs/site/docs/operate/introduction/introduction.md @@ -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 diff --git a/docs/site/docs/operate/introduction/node_types.md b/docs/site/docs/operate/introduction/node_types.md new file mode 100644 index 000000000..532a57dc6 --- /dev/null +++ b/docs/site/docs/operate/introduction/node_types.md @@ -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 diff --git a/docs/site/docs/operate/introduction/requirements.md b/docs/site/docs/operate/introduction/requirements.md deleted file mode 100644 index b9399f066..000000000 --- a/docs/site/docs/operate/introduction/requirements.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Validator Requirements - -Omniʼs operator needs to run the consensus client and the execution client: - -- EVM client for execution (`geth`) -- Omniʼs consensus client (`halo`) - -## Hardware Requirements - -| Hardware | Requirement (minimum) | -| --- | --- | -| Cores | 4 | -| Bandwidth | 100 Mbps | -| RAM | 32GB | -| SSD Hard Disk | 500 GB | - -## Software Requirements - -| Software | Requirement | -| --- | --- | -| Docker | 24.0.7 | -| Operating System | Linux/macOS (arm/64) | - -### Ports - -Inbound ports will be enabled for cometBFT (tcp://266567) and Geth (tcp://30303, udp://30303) - -## Supported Chains - -Validators must also run full nodes for supported chains. Mainnet v1 supports: Ethereum, Arbitrum, Optimism, and Base. - -Omni full nodes do not need to run full nodes for supported chains. diff --git a/docs/site/docs/operate/onboarding/onboarding.md b/docs/site/docs/operate/onboarding/onboarding.md deleted file mode 100644 index b867e8f64..000000000 --- a/docs/site/docs/operate/onboarding/onboarding.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Becoming an Omni Operator - -## Running a full node - -Currently, anyone can run a node on Omni Omega Testnet. - -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! - -## AVS Registration - -## Registering as an Operator - -Operators can currently register with Omni's Eigenlayer AVS contract. Please note that **\$ETH** delegation will only be enable in the mainnet staking upgrade alongside other features like **\$OMNI** delegation, validator withdrawals, and more. - -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 -``` diff --git a/docs/site/docs/operate/run/full.md b/docs/site/docs/operate/run/full.md new file mode 100644 index 000000000..a3ff9b0bc --- /dev/null +++ b/docs/site/docs/operate/run/full.md @@ -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) diff --git a/docs/site/docs/operate/run/validator.md b/docs/site/docs/operate/run/validator.md new file mode 100644 index 000000000..56eb2a7d8 --- /dev/null +++ b/docs/site/docs/operate/run/validator.md @@ -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) diff --git a/docs/site/sidebars.ts b/docs/site/sidebars.ts index ede067c70..100d8ead3 100644 --- a/docs/site/sidebars.ts +++ b/docs/site/sidebars.ts @@ -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", } ] } diff --git a/docs/site/src/pages/testnet.tsx b/docs/site/src/pages/testnet.tsx index ea78e37ac..80c49fe76 100644 --- a/docs/site/src/pages/testnet.tsx +++ b/docs/site/src/pages/testnet.tsx @@ -68,7 +68,7 @@ function TestnetPage() {

Learn how to build native cross-chain applications

- +

Operate