# Run Full Node

## Running a Full Node for Onyx

<br>

This guide provides step-by-step instructions for running an Onyx full node using Arbitrum Nitro. It incorporates the exact parameters and chain configuration for the conduit-orbit-deployer Orbit chain.

***

### Overview

* Chain Name: Onyx
* Chain ID: 80888
* Parent Chain ID: 8453
* Chain Type: Arbitrum Orbit (AnyTrust enabled)
* Nitro Image: offchainlabs/nitro-node:v3.4.0-d896e9c

<br>

This setup runs a non-sequencer full node that syncs from an external sequencer.

***

### Prerequisites

<br>

#### Hardware Requirements

<br>

Minimum recommended configuration:

* RAM: 8–16 GB
* CPU: 2–4 cores (AWS equivalent: t3.xlarge)
* Storage: 50 GB (SSD strongly recommended)

<br>

#### Software Requirements

* Docker (latest stable version)
* Access to a parent chain RPC endpoint (Base / chain ID 8453)

***

### Required Parameters

<br>

#### 1. Parent Chain Parameters

<br>

The parent chain is Base (chain ID 8453). You must provide a standard EVM RPC endpoint:

```
--parent-chain.connection.url=<BASE_RPC_URL>
```

> ⚠️ Note: Public RPC endpoints may be rate-limited. For reliable sync performance, use a dedicated RPC provider or a self-hosted Base node.

***

#### 2. Child Chain (Orbit) Parameters

<br>

**a. Chain Info JSON**

This parameter defines the Orbit chain configuration and deployed contracts:

```
--chain.info-json=<PATH_OR_INLINE_JSON>
```

For Onyx, the chain info includes:

* Chain ID: 80888
* Parent Chain ID: 8453
* ArbOS Version: 32
* Data Availability Committee: Enabled (AnyTrust)
* Rollup contracts:
  * Rollup: 0x50752f7988d0195d4d5fb09a1A22B8354b5A8c0b
  * Inbox: 0x8635f49481A90DeD18E8D0eB374028C4b39E700F
  * Sequencer Inbox: 0xdA2445f1cA60bC2C739A96298746aDBB6706f011
  * Bridge: 0xcdf10130c75D42a3880Ae521734EaA8631aC2905

<br>

You may either inline the JSON or pass a file path.

***

**b. Chain Name**

The chain name must exactly match the name defined in chain.info-json:

```
--chain.name=conduit-orbit-deployer
```

***

**c. Execution Forwarding Target**

Since this node is not a sequencer, it must forward transactions to the sequencer endpoint:

```
--execution.forwarding-target=<SEQUENCER_RPC_URL>
```

***

### AnyTrust (Data Availability) Configuration

<br>

This chain uses AnyTrust, so data availability must be explicitly enabled.

<br>

Required flags:

```
--node.data-availability.enable
--node.data-availability.rest-aggregator.enable
```

You must also specify one of the following:

<br>

#### Option A: Static DAS URLs

```
--node.data-availability.rest-aggregator.urls=<DAS_URL_1>,<DAS_URL_2>
```

#### Option B: Dynamic DAS URL List

```
--node.data-availability.rest-aggregator.online-url-list=<DAS_URL_LIST_ENDPOINT>
```

***

### RPC and WebSocket Ports

<br>

Expose HTTP and WebSocket endpoints as needed:

```
--http.addr=0.0.0.0
--http.vhosts=*
--http.api=net,web3,eth
--http.corsdomain=*

--ws.addr=0.0.0.0
--ws.port=8548
--ws.origins=*
```

Default exposed ports:

* HTTP RPC: 8547
* WebSocket: 8548

***

### Docker Setup

<br>

#### Persistent Data Directory

<br>

Create a local directory for persistent chain data:

```
mkdir -p /data/arbitrum
chmod -R 777 /data/arbitrum
```

The directory must be mounted to:

```
/home/user/.arbitrum
```

***

### Full Docker Command

```
docker run --rm -it \
  -v /data/arbitrum:/home/user/.arbitrum \
  -p 0.0.0.0:8547:8547 \
  -p 0.0.0.0:8548:8548 \
  offchainlabs/nitro-node:v3.4.0-d896e9c \
  --parent-chain.connection.url=<BASE_RPC_URL> \
  --chain.id=80888 \
  --chain.name=conduit-orbit-deployer \
  --chain.info-json=<CHAIN_INFO_JSON> \
  --execution.forwarding-target=<SEQUENCER_RPC_URL> \
  --node.data-availability.enable \
  --node.data-availability.rest-aggregator.enable \
  --node.data-availability.rest-aggregator.urls=<DAS_URLS> \
  --http.api=net,web3,eth \
  --http.addr=0.0.0.0 \
  --http.vhosts=* \
  --http.corsdomain=* \
  --ws.addr=0.0.0.0 \
  --ws.port=8548 \
  --ws.origins=*
```

> ⚠️ Ensure the mounted directory exists before running Docker to avoid permission errors.

***

### Sequencer Feed (Recommended)

<br>

To stay in sync with the latest state, enable the sequencer feed:

```
--node.feed.input.url=<SEQUENCER_FEED_URL>
```

If you operate the sequencer, ensure it is started with:

```
--node.feed.output.enable=true \
--node.feed.output.addr=<SEQUENCER_FEED_ADDR> \
--node.feed.output.port=<SEQUENCER_FEED_PORT>
```

***

### Graceful Shutdown

<br>

Always stop the node gracefully to avoid database corruption:

```
docker stop --time=300 $(docker ps -aq)
```

***

### Additional Parameters

<br>

For a complete list of available Nitro flags:

```
--help
```

***

### Summary

<br>

This document describes a production-ready configuration for running a non-sequencer Onyx full node on an AnyTrust Arbitrum Orbit chain, using the exact deployed contracts and chain metadata for conduit-orbit-deployer.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.onyx.org/developers/run-full-node.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
