Skip to main content

Set Up a WAX Testnet Node

Running Antelope infrastructure to support the WAX Protocol Network can be quite daunting when first starting out. This series of guides aims to demystify the infrastructure and operational requirements required to run Rock Solid services for the WAX Protocol Network.

This guide will show you how to get started with building a WAX node on the Public WAX Testnet.

This guide has been updated to incorporate the Antelope Leap software build process.

How to Set Up a WAX Testnet Node

The WAX Testnet has relatively low system requirements compared to the Mainnet, however it is fully functional with freely available WAX Tokens so it is an ideal place to get familiar with the WAX software and network itself.

Testnet Requirements

Hardware

  • 4 Core CPU / 4Ghz__+ recommended if you would like to produce blocks
  • 128GB Disk / Preferably SSD or NVMe
  • 4GB RAM

Operating System

  • Ubuntu 18.04
  • Ubuntu 20.04 (Recommended)
  • Ubuntu 22.04

Internet

  • Modern Broadband / Fibre Connection (1Mb/s and above)
  • Static Public IP Address (Either terminating on this node or forwarded with NAT)

Build the Software

The WAX software is derived from opensource Antelope software, however it has been modified to suit the needs of the WAX Protocol Network.

Currently the WAX Block Producer accepted software build and version is v3.1.0wax01 created by cc32d9 who is member of the EOS Amsterdam Guild

The latest waxbuild tag is currently available on the cc32d9 Github

Building Process

This example uses Ubuntu Linux to build the WAX software from source following the process below:

> cd ~

> sudo apt install -y file

> git clone [https://github.com/cc32d9/wax-leap.git](https://github.com/cc32d9/wax-leap.git)

> cd wax-leap

> git checkout v3.1.0.wax01

> git submodule update --init --recursive

> sudo bash scripts/install_deps.sh

> mkdir build

# If necessary supplement $(nproc) below with the number of jobs your server can sustain, I suggest 4GB RAM required / job

> nice bash scripts/pinned_build.sh ~/wax-leap/build/leap-deps ~/wax-leap/build $(nproc)

# Binaries are located in ~/wax-leap/build/programs

Configuration

Now that a clean build of the WAX software has been compiled lets get into configuring for operation.

To configure and start the node nodeos will be used, nodeosis the core service daemon that runs on every WAX Protocol Network node.

nodeos can be configured to process smart contracts, validate transactions, produce blocks containing valid transactions, and confirm blocks to record them on the blockchain. You can read more about it [here](https://developers.eos.io/manuals/eos/latest/nodeos/.

The primary operational functions of nodeos are; running it as a Block Producer, Network API Endpoint, P2P Seed Node or State-History Node. Typically on a busy network such as the WAX Mainnet you would separate these functions across physically discrete servers.

In this WAX Testnet example you will make your node connect to other network peers, offer a P2P Seed Node service and make the node available as a Network API Endpoint. This node won’t be providing historical data query support.

nodeos requires two files to connect to peers and run on the WAX Testnet:

config.ini

Create a default config.ini by running nodeos without config as per the command below:

> mkdir ~/waxdata

> cd ~/wax-leap/build/programs/nodeos

> ./nodeos --data-dir ~/waxdata --config-dir ~/waxdata

You will then be able to edit the newly created config.ini and see all the available parameters:

> cd ~/waxdata

> nano config.ini

Now edit the config.iniand add the following configuration settings:

wasm-runtime = eos-vm-jit

chain-state-db-size-mb = 16384
chain-state-db-guard-size-mb = 1024

enable-account-queries = true

http-server-address = 0.0.0.0:8888
access-control-allow-origin = *
access-control-allow-headers = Origin, X-Requested-With, Content-Type, Accept
http-max-response-time-ms = 100
verbose-http-errors = true
http-validate-host = false

p2p-listen-endpoint = 0.0.0.0:9876

# 3dkrenderwax: FI, Finland
p2p-peer-address = testnet-p2p.3dkrender.com:9876

# amsterdamwax: DE, Falkenstein
p2p-peer-address = waxtest.eu.eosamsterdam.net:9912

# blokcrafters: US, Portland, Oregon
p2p-peer-address = waxtest-peer-us.blokcrafters.io:19876

# blokcrafters: FI, Helsinki, Uusimaa
p2p-peer-address = waxtest-peer-eu.blokcrafters.io:19876

# bountyblokbp: FR, France
p2p-peer-address = p2p.wax-test.bountyblok.io:9874

# bp.box: KY, Cayman Islands
p2p-peer-address = waxtest.defibox.xyz:19876

# eosdacserver: DE, Germany
p2p-peer-address = waxtest-p2p.eosdac.io:49876

# eosiodetroit: US, wax-testnet-bp
p2p-peer-address = p2p.testnet.wax.detroitledger.tech:1337

# eosphereiobp: AU, Sydney
p2p-peer-address = peer1-wax-testnet.eosphere.io:9876

# greeneosiobp: DE, Germany
p2p-peer-address = p2p.waxtest.waxgalaxy.io:9878

# guild.nefty: DE, Germany
p2p-peer-address = p2p-testnet.neftyblocks.com:19876

# ivote4waxusa: US, Greenville,SC,USA
p2p-peer-address = test.wax.p2p.eosusa.io:19875

# liquidgaming: DE, Germany
p2p-peer-address = 138.201.23.118:9877

# nation.wax: CA, Canada
p2p-peer-address = waxtest.seed.eosnation.io:9876

# oneinacilian: GB, United Kingdom
p2p-peer-address = p2ptest.oiac.io:10877

# pink.gg: DE, Germany
p2p-peer-address = peer1.testnet.wax.pink.gg:16714

# waxhiveguild: DE, Germany
p2p-peer-address = peer-test.hivebp.io:9876

# waxmadrid111: DE, SEED
p2p-peer-address = wax-seed-testnet.eosiomadrid.io:9876

# waxswedenorg: SE, Sweden
p2p-peer-address = p2p.testnet.waxsweden.org:59676

# wecan: DE, Berlin
p2p-peer-address = seed1-wax-testnet.wecan.dev:9876

# wecan: GB, London
p2p-peer-address = seed2-wax-testnet.wecan.dev:9876

# EOSNation Provided PeerList - https://validate.eosnation.io/waxtest/reports/config.html

agent-name = "<yourname> WAX Testnet"

max-clients = 100

sync-fetch-span = 500

plugin = eosio::http_plugin
plugin = eosio::chain_plugin
plugin = eosio::chain_api_plugin

genesis.json

These are the initial state parameters required by every new starting node on the WAX Testnet. Create the file as below:

> cd ~/waxdata

> nano genesis.json

Add the following parameters to the genesis.json file for the WAX Public Testnet:

{  
"initial_timestamp": "2019–12–06T06:06:06.000",
"initial_key": "EOS7PmWAXLBaqCzSgbq8cyr2HFztQpwBpXk3djBJA8fyoyUnYM37q",
"initial_configuration": {
"max_block_net_usage": 1048576,
"target_block_net_usage_pct": 1000,
"max_transaction_net_usage": 524288,
"base_per_transaction_net_usage": 12,
"net_usage_leeway": 500,
"context_free_discount_net_usage_num": 20,
"context_free_discount_net_usage_den": 100,
"max_block_cpu_usage": 200000,
"target_block_cpu_usage_pct": 2500,
"max_transaction_cpu_usage": 150000,
"min_transaction_cpu_usage": 100,
"max_transaction_lifetime": 3600,
"deferred_trx_expiration_window": 600,
"max_transaction_delay": 3888000,
"max_inline_action_size": 4096,
"max_inline_action_depth": 6,
"max_authority_depth": 6
}
}

Running Nodeos

Now that the config.ini has been configured and the initial WAX Testnet chain parameters genesis.json have been created, you can now join the network and sync up the node.

Use screen to keep your session live even when you disconnect, usage below:

Create a new screen session  
----------------------------
> screen -US wax

Disconnect screen session
-------------------------
> ctrl-a+d

Reconnect screen session
------------------------
> screen -r wax

Run nodeos with pointers to the config, data directory and genesis file:

> cd ~/wax-leap/build/programs/nodeos

> ./nodeos --data-dir ~/waxdata --config-dir ~/waxdata --genesis-json ~/waxdata/genesis.json

Your WAX Testnet node will now start syncing with the configured peers until it catches up and is current with the WAX Testnet chain.


These WAX Developer Technical Guides are created using source material from the EOSphere WAX Technical How To Series

Be sure to ask any questions in the EOSphere Telegram