# Prepare a full node for ETHW

## 1. Setup

### 1.1 Recommended Hardware Requirements

* A fast CPU with 4+ cores
* 16GB+ of RAM
* At least 2 TB space of fast SSD drive
* 25 MBit/s bandwith

### 1.2 ETHW source code

The golang implementation of the ETHW protocol is at GitHub `https://github.com/ethereumpow/go-ethereum`

Download the code and build it

```shell
git clone https://github.com/ethereumpow/go-ethereum.git
cd go-ethereum
make
```

## 2. Prepare

The ethw fork need to prepare the data before Ethereum total terminal difficulty(TTD) was reached. There are several ways to prepare chinadata:

### 2.1 Download the prepared data

The following commands were run at `ubuntu 22.04 LTS` platform. The downloaded file is about`1.1T`. You can download the file `chaindata_15509444.tar.lz4` via BT network or HTTP.

BT is recommeded download method since the p2p network provides better downlaod speed.

#### 2.1.1 Download data file

Install download tool packages

```shell
sudo apt install transmission-cli -y
sudo apt install lz4 -y
sudo apt install aria2 -y
```

The file can be download by BT transmission:

```shell
cd YOUR_DOWNLOAD_DIR

wget http://snapshot.ethwscan.com/15509444.torrent
# check your download
openssl sha256 15509444.torrent 
SHA256(15509444.torrent)= ecf242df51d286906c2ef3a06bdba5bed608881a61f49a76a990d1ba57bd8ff2
transmission-cli -w .  15509444.torrent
```

or download from magnet:

```shell
magnet:?xt=urn:btih:76612d6d83fa1a2b2dc4fa9f9059b4e8409d1328&dn=chaindata%5F15509444.tar.lz4&tr=udp%3A%2F%2Ftracker.ethereumpow.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2810%2Fannounce&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.openbittorrent.com%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=https%3A%2F%2Fopentracker.i2p.rocks%3A443%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker1.bt.moack.co.kr%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.moeking.me%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.dler.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fopen.demonii.com%3A1337%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fchouchou.top%3A8080%2Fannounce&tr=udp%3A%2F%2Fbt.oiyo.tk%3A6969%2Fannounce&tr=https%3A%2F%2Ftracker.nanoha.org%3A443%2Fannounce&tr=https%3A%2F%2Ftracker.lilithraws.org%3A443%2Fannounce&tr=http%3A%2F%2Ftracker3.ctix.cn%3A8080%2Fannounce&tr=http%3A%2F%2Ftracker.nucozer-tracker.ml%3A2710%2Fannounce&ws=http%3A%2F%2Fsnapshot.ethwscan.com%2Fchaindata%5F15509444.tar.lz4&ws=http%3A%2F%2Fsnapshot-us1.ethwscan.com%2Fchaindata%5F15509444.tar.lz4&ws=http%3A%2F%2Fsnapshot-eu1.ethwscan.com%2Fchaindata%5F15509444.tar.lz4
```

or download from http

```shell
aria2c -s16 -x16 -k100M http://snapshot.ethwscan.com/chaindata_15509444.tar.lz4
```

After download is finished, verify download file

```shell
openssl sha256  chaindata_15509444.tar.lz4 
SHA256(chaindata_15509444.tar.lz4)= c69fb808346f2efdf6b080cfa034b3dcbdce981068bc42ac55db31a2c3d2eea0
```

#### 2.1.2 Decompress and unpack the files

```
lz4 -cd chaindata_15509444.tar.lz4 | tar xf -
```

#### 2.1.3 Verify chaindata in a stand-alone network(optional)

```shell
# create a new dataspace
geth --datadir YOUR_DATA_SPACE
# Ctrl+C to quit 
rm -fr YOUR_DATA_SPACE/geth/chaindata
mv YOUR_DOWNLOAD_DIR/chaindata YOUR_DATA_SPACE/geth/

geth --datadir YOUR_DATA_SPACE --syncmode full --nodiscover console

# Check log is clean
# check block number 
> eth.blockNumber
15509444
```

### 2.2 sync the chaindata from Ethereum network

Also, you can do a full sync from ethereum network to get the chinadata before ETHW fork(It could take one week or two weeks).

Stop the sync before total terminal difficulty(TTD) 58,750,000,000,000,000,000,000 is reached.

## 3. Run

To run a fullnode, execute this command after ETHW fork

```
geth --datadir YOUR_DATA_SPACE --syncmode full
```


---

# 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.ethereumpow.org/prepare-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.
