# Mainnet Normal Node

## Build dependencies

Installing dependencies and setting things up are required to run a node, please check out [Build dependencies](#build-dependencies) if you have not done.

## Run a node

You can run your read node using [go-u2u](https://github.com/unicornultrafoundation/go-u2u) repository, branch `stable`.

**Note that https and ws must not be enabled on a server that stores wallet account.**

```bash
# Install go-u2u
$ git clone https://github.com/unicornultrafoundation/go-u2u.git
$ cd go-u2u/
$ git checkout stable
$ make
```

Validate your go-u2u installation:

```bash
$./build/u2u help

VERSION:
    x.x.x-rc.x
```

### **Running with mainnet genesis file**

You may use no-history genesis file and sync with `--syncmode snap`.

```bash
# Start u2u node
$ cd build/
$ wget https://github.com/unicornultrafoundation/u2u-genesis/raw/main/mainnet.g
$ nohup ./u2u --genesis mainnet.g --genesis.allowExperimental --syncmode snap &
```

Snapsync will sync much faster. Once it's fully synced, it will automatically switch to the full sync mode.

### **Syncing progress**

Once it's run, you should wait till it's synced up to the latest block before proceeding to the next step.

You may query the latest block number of your node:

```
$ ./u2u attach --exec u2u.blockNumber
```

Then you can compare with the latest block shown on the explorer ([u2uscan.xyz](https://u2uscan.xyz/)).

For trouble shooting your node, please check [this](https://docs.u2u.xyz/network/troubleshooting).
