> For the complete documentation index, see [llms.txt](https://docs.matchain.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.matchain.io/development/running-matchain-node.md).

# Running Matchain Node

This guide provides instructions on launching a full node on Matchain using a simple Docker Compose script. Follow the steps below to set up your full node.

{% hint style="info" %}
**Network update for node operators (October 2026)**

1. Transaction forwarding: if your op-geth uses <https://matchain-mainnet.alt.technology> as `--rollup.sequencerhttp` (`SEQUENCER_HTTP`), change it to <https://rpc.matchain.io>
2. Add the Matchain seed for op-geth (bootnodes and static peers): `enode://4fabb9a1f34cc553617ec0e706dc37fad1e4f533401d267b953a5acc32fb5b7207a8f49df81fbbe6d3832d7ae87bdcdb5bdebb0ad38912ed86d9414e2e071cc1@162.19.80.175:10010`
3. Add the Matchain seed for op-node (`--p2p.static`): `/ip4/162.19.80.175/tcp/20010/p2p/16Uiu2HAm5hjiTU198Yw4tQ9pmvNysTS1WZRVU5saiKSSEgAE1iTY`
4. Allow outbound TCP and UDP 10010 and 20010 to 162.19.80.175.
5. Remove the alt.technology seed entries at your next configuration change.

The example configuration in the matchain/node and matchain/opstack-fullnode-sync repositories still carries the old values. Apply the changes above when you use it.
{% endhint %}

***

#### Prerequisites

**Clone the Repository**

Before starting, clone the `opstack-fullnode-sync` repository:

```bash
git clone -b v0.3.0 https://github.com/matchain/opstack-fullnode-sync.git
cd opstack-fullnode-sync
```

***

#### Recommended Hardware

* **CPU**: 4 Cores
* **RAM**: 16 GB+
* **Storage**: 1TB SSD (NVMe Recommended)
* **Network**: 100 MB/s+ Download

***

#### Preparation

1. **Generate JWT File**\
   Run the following command to generate a JWT file:

   ```bash
   openssl rand -hex 32 > jwt.txt
   ```
2. **Configure Environment Variables**\
   Copy the `.env.example` file to create your `.env` file, and update the values as needed:

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

   Modify `.env` to set your parameters, or request a preconfigured `.env` [file](https://github.com/matchain/node) from the Matchain team.

***

#### Operating the Node

**Start the Node**

Use Docker Compose to start the node:

```bash
docker compose --env-file .env up -d
```

**View Logs**

* **Logs for OP Node**:

  ```bash
  docker compose logs -f node
  ```
* **Logs for OP Geth**:

  ```bash
  docker compose logs -f geth
  ```

***

#### Sanity Test

**Check Sync Status**

To check the sync status, use:

```bash
curl --location 'localhost:8545' \
--header 'Content-Type: application/json' \
--data '{
  "jsonrpc": "2.0",
  "method": "eth_syncing",
  "params": [],
  "id": 2
}'
```

* If the node is still syncing, you will see output similar to:

  ```json
  {
    "jsonrpc": "2.0",
    "id": 2,
    "result": {
      "currentBlock": "0x7d0f5",
      ...
      "highestBlock": "0xd8674",
      ...
    }
  }
  ```
* When syncing completes, you will see:

  ```json
  {"jsonrpc":"2.0","id":2,"result":false}
  ```

**Check Block Number**

After syncing completes, verify by checking the latest block number:

```bash
curl --location 'localhost:8545' \
--header 'Content-Type: application/json' \
--data '{
  "jsonrpc": "2.0",
  "method": "eth_blockNumber",
  "id": 2
}'
```

* Example response:

  ```json
  {
    "jsonrpc": "2.0",
    "id": 2,
    "result": "0x2139"
  }
  ```

***

#### Stop the Node

To stop the node, use:

```bash
docker compose down
```

***

#### Reference

For further details, refer to the [Optimism Documentation](https://docs.optimism.io/builders/node-operators/tutorials/node-from-docker).
