# RPCs & Archive Nodes

RPC and Archive Nodes don't produce blocks or store user files, but they play an important role in making the Vola chain accessible. Every wallet balance check, every transaction query, every block explorer lookup goes through an RPC node.&#x20;

If you are planning to build on Vola an RPC is a must have, without them, applications would have no way to read or interact with the chain without running a full node themselves. Running an RPC or Archive Node is a great way to contribute to the health and decentralization of Vola Network, particularly if you're a developer or infrastructure provider.

{% hint style="warning" icon="circle-info" %}
RPC and Archive Nodes do not require staking and do not earn $VOLA rewards. They are a contribution to network infrastructure and accessibility.
{% endhint %}

### RPC Node vs Archive Node

| X                    | RPC Node                       | Archive Node                                |
| -------------------- | ------------------------------ | ------------------------------------------- |
| **Purpose**          | Serves live chain queries      | Serves live + full historical queries       |
| **State Stored**     | Recent state only              | Complete chain history from genesis         |
| **Storage Required** | 20GB                           | 50GB+                                       |
| **Good For**         | Wallets, apps, general queries | Block explorers, analytics, historical data |
| **Staking Required** | :red\_circle: No               | :red\_circle: No                            |
| **Rewards**          | :red\_circle: No               | :red\_circle: No                            |

<details>

<summary>What RPC Nodes Do</summary>

When a wallet checks a balance, when an application queries a transaction, or when a developer calls the chain, that request is routed through an RPC node. The node reads the current chain state and returns the relevant data.

RPC Nodes keep their state pruned, they don't store the full history of the chain, only what's needed to serve current queries efficiently.

</details>

<details>

<summary>What Archive Nodes Do</summary>

Archive Nodes are a specialised type of RPC node that retain the complete history of the chain every block, every state change, from the very first block to the present.

This makes them essential for:

* **Block explorers** like Vola Explorer (volascan.io)
* **Analytics tools** that need to query historical on-chain data
* **Developers** building applications that reference past transactions or events
* **Auditors** needing a complete, verifiable record of chain activity

{% hint style="success" icon="circle-info" %}
Storage grows over time. Because Archive Nodes store the full chain history, their storage requirements will increase as the network grows. Plan your infrastructure accordingly.
{% endhint %}

</details>

### Hardware Requirements

| Component   | RPC Node               | Archive Node           |
| ----------- | ---------------------- | ---------------------- |
| **RAM**     | 4GB                    | 4GB                    |
| **CPU**     | 2 Core                 | 2 Core                 |
| **Storage** | 20GB                   | 50GB+                  |
| **OS**      | Linux (recommended)    | Linux (recommended)    |
| **Other**   | Docker, Docker Compose | Docker, Docker Compose |

{% hint style="info" %}
These requirements apply to the testnet phase. Requirements may evolve as the network transitions to mainnet.
{% endhint %}

### Setting Up an RPC or Archive Node

Follow these simple steps to setup an RPC or Archive Node:

{% stepper %}
{% step %}

#### Install Docker Engine

<details>

<summary>Uninstall old versions</summary>

Before you can install Docker Engine, you need to uninstall any conflicting packages.

Copy-paste the following command to uninstall all conflicting packages:

```
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)
```

You may be prompted for a Yes/No answer, press `y` & `enter`.

</details>

<details>

<summary>Install Docker Engine</summary>

Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker `apt` repository. Afterward, you can install and update Docker from the repo.

Copy-paste the following commands to set it up:

```
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update
```

Continue to install the latest Docker packages:

```
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

You may be prompted for a Yes/No answer, press `y` & `enter`.

</details>

<details>

<summary>Start Docker &#x26; Verify Installation</summary>

Start the Docker Service:

```
sudo systemctl start docker
```

Verify that Docker is running:

```
sudo systemctl status docker
```

Verify that the installation is successful:

```
docker --version
docker compose version
```

</details>
{% endstep %}

{% step %}

#### Clone the Repository

```
git clone https://github.com/Nuvola-Digital/vola-node-docker
cd vola-node-docker
```

{% endstep %}

{% step %}

#### Configure Environment Variables

Copy the example environment file:

```
cp .env.example .env
```

Open .env in your editor to update the values:

```
nano .env
```

Update it with your values:

```
## Choose your mode as "rpc-pruned" for RPC only (leightweight)
## Choose your mode as "rpc-archive" for an RPC Archive node
MODE="rpc-archive"

## A name for your node (visible on the network)
NODE_NAME="MyVolaRPC"

## Network to join
CHAIN="testnet"

## Ports (defaults are fine for most setups)
PORT=30333
RPC_PORT=9944
PROMETHEUS_PORT=9615

## Your server's public IP, replace <YOUR_IP> with your actual public IP
## Ex: "/ip4/123.45.67.89/tcp/30333"
PUBLIC_ADDR="/ip4/<YOUR_IP>/tcp/30333"
```

Press `ctrl+s` to save and `ctrl+x` to exit.
{% endstep %}

{% step %}

#### Start Your Node

Run the below command to start your node in the background (detached), remove the `-d` from the command to run it in the foreground (not recommended)

```
docker compose up -d
```

Use `docker logs -f` to check the logs.
{% endstep %}
{% endstepper %}

#### What's Next?

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Storage Nodes</strong></td><td><em>Run a Storage Node to contribute file storage capacity and earn $VOLA fees and staking rewards.</em></td><td><a href="/pages/GsrLAfwWLWaMNhVQ2sph">/pages/GsrLAfwWLWaMNhVQ2sph</a></td></tr><tr><td><strong>Vola Explorer</strong></td><td><em>See the Vola chain in action, powered by Vola Archive Node infrastructure.</em></td><td><a href="https://testnet.volascan.io/">https://testnet.volascan.io/</a></td></tr><tr><td><strong>Validation Nodes</strong></td><td><em>Interested in securing the chain and earning block rewards? Explore running a Validation Node.</em></td><td><a href="/pages/Ytxs5hMW3rWfb938QTg3">/pages/Ytxs5hMW3rWfb938QTg3</a></td></tr></tbody></table>


---

# 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://wp.vola.network/docs/vola-node-economy/vola-nodes-overview/rpcs-and-archive-nodes.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.
