Manual Setup
This guide walks you through the installation and configuration of a Fractal validator node. It is written to ensure easy onboarding for beginners and intermediate users.
Last updated
This guide walks you through the installation and configuration of a Fractal validator node. It is written to ensure easy onboarding for beginners and intermediate users.
Last updated
Hardware Requirements:
Minimum: 8GB RAM, 2 Core CPU (2.90GHz per core), 100GB Hard Disk
Recommended: 16GB RAM, 4 Core CPU (2.90Ghz per core), 300GB Hard Disk
ex: AWS T3 t3.2xlarge
ex: AliCloud g6 g6.2xlarge
ex: GCP n2 n2-standard-8
This guide assumes you have an Ubuntu Server running and can log in as root. We recommend setting up a user account to run the Fractal service under a new account instead of running the software directly as root.
In this guide, we will be using the name servicefractal
but feel free to customize each command block for a different username.
Add the new user account to the server using the adduser
command, shown below.
You will need to pick a password and, optionally, enter some basic info and then answer Y
to confirm, as shown below. Store this password in a secure location.
✅ Completed: Add the "servicefractal" user account.
Once you've created your user account, provide it root access by running the following command:
There will be no output response to the command.
✅ Completed: Provide root access to the "servicefractal" account.
At this point, you can log out by typing exit
and hitting enter.
Log back into your node as "servicefractal" using your SSH client (e.g., Putty).
✅ Completed: Logout and reconnect as "servicefractal".
Verify your new user is in the sudo group by reconnecting now as the new user account. Once logged in, send the command groups
to verify you are in the sudo group.
✅ Completed: Verify root access for "servicefractal".
Install docker by running the following block of code, customize the username servicefractal
if you're using a different user name:
You'll see lengthy output from running this command, but it should return to the prompt after a few moments of setting up docker. This is the expected output:
✅ Completed: Install docker and add "servicefractal" to the docker group.
Disconnect and Reconnect as "servicefractal"
After reconnecting, you can verify you are in the docker group by typing groups
and verifying the docker group is listed as shown.
✅ Completed: Logout and reconnect as "servicefractal".
Run docker ps
command. Below is the expected output:
✅ Completed: Confirm the output above from the
docker ps
command.
Navigate to your project folder and pull the docker image.
Here, we are downloading the fractald
which is the node of the Fractal Network. For security and stability reasons, make sure to download the live version. First, we need to query the live version number.
✅ Completed: Run the "export" command.
Note: At this point, if your session disconnects, you will need to re-run any exports so your server has these variables configured. They only last for your currently connected session.
Download the correct version:
✅ Completed: Run the "docker pull" command.
Optional: Verify your version of fractald:
You will need the Fractal Node Setup (fn) CLI tool that contains the necessary sub-commands to set up a validator node and stake/unstake FRA.
Download the proper application file for your OS - Linux/MacOS.
✅ Completed: Download the fn CLI using the command above.
✅ Completed: Use the export command to configure the environment path variable.
First, we will clean up any old data you might have by removing the ROOT_DIR folder. Be sure to back up all your keys (validator, node, and wallet key) before removing this directory.
Proceed With Caution
Since the ROOT_DIR is the source of the connection to Mainnet, you might lose your funds if the keys are not backed up properly. This warning applies only if you're running this command on an existing, pre-built validator node.
Ignore this warning if you're starting from scratch.
✅ Completed: Remove the ROOT_DIR folder.
Now create a new ledger data directory & set permissions for your servicefractal
user; customize the username if needed before running:
✅ Completed: Create a new ledger data directory and set user permissions.
Initializing Tendermint will create a node key (stored in a newly created file at the path ${ROOT_DIR}/tendermint/config/priv_validator_key.json
). The node key will be used to identify your node, sign blocks, and perform other Tendermint consensus-related tasks.
✅ Completed: Initialize Tendermint using the command above.
Set the correct permissions by running the following code. No output is expected.
✅ Completed: Set permissions using the command above.
Set your namespace to the current working environment. No output is expected.
Fractal node may contain light history (regular full node) or full history (archive node) based on the node operators' needs. An archive node requires larger disk space (200GB as of Jan. 2023) than regular full nodes.
To get data link for regular full node
To get data link for archive node
Run the following to verify the download link. It should display a link ending in .tar.gz.
✅ Completed: Obtain the link for the latest chain data and export URL to a variable.
Next, you need to download the data from the link you got in the step above.
Note
This might take a while depending on file size, server location, and internet download speed on your VPS. You will see a progress bar while the download runs with an estimated time remaining.
✅ Completed: Download the Fractal database.
Run the following commands to unpack the zipped file and finish the process.
This will take a few minutes and a lot of text will be output.
Note
If you encounter a security issue error when trying to initialize the Fractal node, you may need to approve its security privileges in your OS first manually then re-run the command again
✅ Completed: Unpack the zipped database file.
Wait until the unzipping process is completed before proceeding..
Generate a new, random pair of public and private keys that will be used for FRA staking:
✅ Completed: Generate new encryption keys.
Important:
Make sure to save this information in a secure location. Using this output as a note inside a password vault is recommended. Wherever you decide to save your mnemonic and private key (the "sec_key" line), please ensure it's password protected.
Never share this information.
✅ Completed: Generate new encryption keys and save the output to a secure location.
For convenience, you can conveniently import your new validator private key into the Fractal wallet. Doing so will allow you to check and manage your FRA balances or to view historical transaction data for this wallet address.
It's suggested to edit the wallet name once imported for easy identification.
Reference the Fractal Wallet section under the Wallet category for information on importing an existing wallet.
The private key is displayed next to sec_key
(above).
The private key or the mnemonic phrase should never be shared with anyone, even with people from the Fractal community or development team. Our mods will never ask for this information. It would be advisable to keep a backup of your mnemonic on a separate storage, should you ever need to restore it.
✅ Completed: Import your new mnemonic phrase into the Fractal wallet.
Copy your new wallet key to the data location for future use. This command will run with no output.
✅ Completed: Copy the new wallet key to the data location.
For convenience in setting up your node via the fn
tool, store your 24 mnemonic keywords (located inside tmp.gen.keypair) into ${ROOT_DIR}/node.mnemonic.
This command will run without output.
Below is an example of that command. Customize the command for your mnemonic.
Do not use the mnemonic displayed below on your validator!
You can verify the file is setup properly by running the following command, which should return your 24 mnemonic works on a single line:
✅ Completed: Store the mnemonic words into ${ROOT_DIR}/node.mnemonic
To connect fn
with the Fractal Network and to your node.mnemonic & priv_validator___key.json files, run the following command, which will return no output:
After entering this command, you can now run fn show
to see your validator information.
Note:
We have yet to send the command to perform the initial staking and configuration, both of which are required to get your validator online. This will come later.
Note your Fractal address, as this will need to be funded with at least 10,000 FRA to start your validator.
✅ Completed: Connect to the network.
Optional: Stop your local container if necessary using the command below. Stopping the local container is only necessary if you're working on an existing, live node.
Mandatory: Start your node container with the command below (add --arc-history=65530,10
for archive node) to pull and setup the latest image.
To run the node in archive mode, you have to add below option
To run the node with Rosetta API enabled, you have to pass additional environment variables
✅ Completed: Start your node container.
Run the following commands and ensure they return status messages without errors. Your node has been successfully configured and started if no errors are displayed.
Moving forward, you can use the top curl command to view the status of your node and check if it's in sync or not at this time. You will want to wait until your server is fully synced up before moving on to the next step.
You can verify this is completed by running the status curl command and by verifying that "catching_up" is false, as shown in the screenshot below.
You may continue through the guide as the validator catches up, but it will not sign blocks until "catching_up" shows false and the steps below are complete.
Using fn show
allows you to see your future validator address. Because the self-stake of 10,000 FRA is mandatory for creating your on-chain validator, you should now fund your validator wallet with at least 10,000 FRA plus extra to cover any gas fees or slashing due to unexpected downtime.
Use the Fractal wallet to monitor the balance of your validator address.
✅ Completed: Transfer 10,000+ FRA to your validator address.
Create the file staker_memo in your home directory. This file defines your validator name, description, your website, and logo to display.
This will open the nano text editor. You can copy and paste the template below.
Remember to customize the fields above before saving the file. For the logo, a free and easy platform to use is imgur.com. Paste your logo to imgur.com and use the link they provide, ensuring it ends in .png or .jpg.
In the next step, when you create your validator, the information in this file is passed onto the command to be used on the Fractal Validator Explorer.
In the future, you can still utilize this file to update your validator information by re-editing the file and resending your info via the fn staker-update
command show later.
✅ Completed: Create and customize the staker_memo file.
With the wallet funded and staker_memo created, you are now ready to create your validator on-chain and begin signing blocks.
The example below shows how to start your validator with a stake of 15,000 FRA with a commission rate of 2%.
Modify it to your personal preferences.
In this example, 15000 * 1000000 FRA is 15,000 FRA tokens staked.
In a few minutes, your validator information page on scan.fra.tech will show the commission rate and self-stake you selected in the command above.
✅ Completed: Customize self-stake and commission rate and create your on-chain validator.
Congratulations!
If all steps were completed successfully, your validator should now be online - viewable from the Fractal Explorer, in sync with the chain, and self-staked with at least 10,000 FRA.
Reviewing the Best Practices and Troubleshooting sections of the validator guide is strongly recommended for your next steps. We also suggest joining the Fractal Validator Support telegram channel and joining the conversation with other validators.
Ensure you stay up-to-date on the latest Fractal news and changes, as some upgrades to the network will require you to update your validator node in a timely manner.
It's recommended to stay active and support the Fractal project and its community by answering questions and creating content such as articles, educational videos, etc.