Run Validator Node

Validator Parameters

  • Minimum stake: 50,000 FTM.

  • Minimum hardware requirements: AWS EC2 m5.large with 8GB RAM, 2 vCPUs, and at least 300 GB of Amazon EBS General Purpose SSD (gp3) storage (or equivalent).

  • We would recommend going with Ubuntu Server 22.04 LTS (64-bit).

Network Settings

Open up port 22 for SSH, as well as port 7946 for both TCP and UDP traffic. A custom port can be used with "--port <port>" flag when running your testnet node.

Steps to Run Validator

1. Install Required Tools

You are still logged in as the new user via SSH. Now we are going to install Go and Opera.

First, install the required build tools:

Install Opera:

Validate your Opera installation:

db.preset

When using version 1.1.3, you need to add the db.preset argument (introduced since 1.1.2) for starting the Opera command. For standard conditions, please use this option:

  • db.preset=ldb-1

You can use different db presets, either --db.preset ldb-1 or --db.preset legacy-db. It's not recommended to use pbl-1 for validator nodes.

2. Register Testnet Validator

Next, register your Opera testnet validator node. You need to create a validator wallet. The wallet is the validator’s identity on the network, which it uses to authenticate, sign messages, etc.

First, start the Opera read-only node and download a genesis file from this list of genesis files.

3. Create a Validator Wallet

The node is currently running and syncing the network in your console. To create a wallet, open a new console window, connect to the server via SSH, and enter the following commands.:

After entering the command, you will get prompted to enter a password for the account. It will look something like this:

4. Create a New Validator Key

We have to create a validator private key with which to sign consensus messages. It can be done only using go-opera:

Follow the prompts and supply the password. The output is as follows:

5. Create Your Validator via The SFC

You should wait for your node to sync to the latest block of the network before proceeding. To proceed, open up the console where you entered the commands to create the validator wallet previously and attach it to the Opera node console:

By doing so, you will get a JavaScript console where you can directly interact with the Opera node and e.g. send transactions (which you will do in a moment):

Now initialize the SFC contract ABI variable:

Also, initialize the SFC contract object itself:

After initializing both variables, you can now interact with the network’s SFC. Enter the following command to check that everything works as expected:

If it looks like the above, everything is working. Next, try to get your validator ID from the SFC using your previously generated validator wallet address:

This should return "0" as you are not registered as a validator yet: Next, unlock your validator wallet to be able to execute the registration transaction (make sure to use the password you set before):

This will return “true” if unlocking the wallet was successful: Next, send the createValidator transaction to register your validator (the value is the representation of the smallest FTM unit, so dividing it by 1e18 will result in 500,000 FTM. Alternatively, you can use web3.toWei("500000.0", "ftm")). Use quotes for "0xYOUR_PUBKEY" and "0xYOUR_ADDRESS":

Make sure to check your registration transaction (could take a few moments to be confirmed):

Look for the status: “0x1” at the bottom, which means the transaction was successful. You can also copy the transaction hash and go to the Fantom Explorer and check your transaction there:

https://explorer.testnet.fantom.network/transactions/[YOURTX]

Finally, execute the following command again to check your validator ID:

It should now return something other than “0”. Congrats, you've registered a testnet validator!

6. Run Your Testnet Validator Node

The last step is to restart your node in validator mode! Close the Opera console window by typing “exit”. Then head back to the console window where you started your node with the following command:

For the latest update, please check our GitHub.