Instruction for node operators

Find the system requirements at the link.

Installation script

In order to launch a EYWA Oracle node, you should use the installer script install.py. The script greatly simplifies the process of running a node and automates the following steps:

  • Install and configure the necessary environment for deployment and operating the EYWA Oracle node;

  • Takes care of node directory setup in server's filesystem;

  • Downloads actual EYWA Oracle docker image and configurations files;

Script works in idempotence mode. It means if you interrupt executing script you can start again and all keys will be same.

Prerequisites

  1. Make sure that Git is installed on the node. Instructions for the Git installation can be found here.

  2. Before running the script on the server, make sure that the latest version of Python is installed. If not, install the python package, which provides the current release of Python3.

Process of installation

First, copy the repository with the following command:

git clone https://github.com/eywa-protocol/eywa-oracle.git

Then navigate to the directory of the copied repository with the following command:

cd eywa-oracle

Next, execute the node installation script with the following command:

sudo python3 install_bridge.py

During execution, the script will ask you to do the following:

  1. Enter your node name. Node name usually matches the hostname and this will be the name of the docker container;

  2. Select the network to connect to. For the PoA mainnet you need to select option 1 - prod.

  3. Enter the secret password for the keystore of the node. This password is needed to store node private keys in encrypted form.

  4. Choose between automatic and manual mode. After the line "Manual or fully automatic installation (A/m)" enter A (upper case!) and press Enter to confirm.

At runtime, the script will configure the necessary software environment to run the node, load the docker image of the EYWA Oracle node, and create a keystore containing the private keys of the oracle node.

After that the user will be shown the public address of the node in the Fantom and asked to top up the balance of that node with FTM and EYWA tokens:

At this point you should credit the balance of the node in the required amount of tokens. Minimum required amount for deposit:

  1. 5 FTM. FTM assets are needed for a node to be able to send transactions to EYWA governance smart contacts located in the Fantom network. These contracts control the operation of the EYWA protocol.

  2. 1 EPOA. While the oracle network is in PoA mode, PoA participants need to have EYWA-PoA tokens to get into the number of active cross-chain call validators. To get EYWA technical tokens for the PoA mainnet, the users need go to Zealy page and complete 3 quests:

    • Mainnet Node name request

    • Mainnet IP address request

    • Mainnet Public node key request

    The data will be processed after which the technical team will send you the EYWA technical token to your address.

Don't worries you can interrupt script, fill balance in Fantom network and start script again. You just need to enter the same container when entering the name of the node. The script automatically initializes the already created keystore.

After the balance will be credited with the required number of tokens, press Enter. This will register the node in the smart-contract. As registration passes, the oracle will be restarted and will start synchronizing with the network of oracles. To understand that your node is in sync with the active set of validators, you can use the log view command. See the Node sync section for details.

Keystore backup

To ensure that in case of emergency you will not lose the private keys of your node, we strongly recommend that you make a backup of the keystore of the node.

Backup your /app/.data/keys folder which contains all network keys and private keys. The keys are encrypted, the password for encoding is requested by the script.

When you start the node, the keystore initialization process takes place. If you have copied a keystore, they will be initialized and the script will ask you to enter the password for the keystore. If the password is entered correctly, the node starts to work using the private keys from the keystore.

Thus, you have the option to transfer the keystore between different nodes. To do this, create a directory /app/.data/keys on the new server, put keystore into this directory and run the script. The script will automatically initialize the imported keystore and ask you to enter the password for it.

Node sync

In order to check the synchronization status of your node you can use the following command:

docker logs -f "Container name"

In the received answer you can see the height of the block to be processed:

You also can see the status of the node's actual relaychains heights via the API http://127.0.0.1:8081/v1/chain_heights

If the height of the processed block is the same as the height of the block in the network of active validators, it means that the node is synchronized. You also can see the status of sync via the API http://127.0.0.1:8081/v1/sync_state * You should see FULLY_SYNCED. In order to view the version, use the following command:

docker exec -ti {name} ./bridge --version

Additional information

Opening the port is mandatory during the PoA mainnet phase, as it will allow our team to collect much more metrics to evaluate network performance.

During the PoA mainnet, it is important for our technical team to collect information about the operation of nodes in order to optimize the process and make it as convenient and seamless as possible.

EYWA oracle needs to accept connections from the Internet on the network port 45554.

Opening a port for p2p communications :

sudo ufw route allow 45554

Run the command to leave access to node metrics only for our system.

iface=$(route | grep '^default' | grep -o '[^ ]*$'); iptables -I DOCKER-USER -i $iface -p tcp -m tcp --dport 10300 -j DROP && iptables -I DOCKER-USER -i $iface -s 185.132.176.41/32 -j ACCEPT

If you also want to get metrics in your Prometheus installation, use the following command:

 iptables -I DOCKER-USER -i $iface -s IP/32 -j ACCEPT

Instead of IP, write the ip address of your Prometheus:

Instructions for transferring a node to a new server.

After the node has been installed on the server and the keys have been created, it is necessary to save a backup folder copy with these keys (backup) to be able to transfer the node to a new server.

The path to download the backup folder: /app. This folder at app/ stores a backup copy of all the necessary keys.

To migrate a node to a new server, you need to perform the following steps:

  1. Check the id of the container docker with the node:

docker ps -a
  1. Stop the node on the old server:

docker stop "container id docker"
  1. On the new server, download the backup (App folder) with the keys from the node you wish to move to the root folder

  2. In that folder, delete the levelbd folder, which is located at the following path: app/.data/levelbd

cd /app/.data/
rm -rf levelbdSome code
  1. Run the installation script on the new server

Note: during installation of the boot script, at Step 1 (Enter your node name) and Step 3 (Enter the secret password for the node key store) you need to specify the same data as during installation on the previous server!

Last updated