Node Setup Manual
How to Operate Tellor Node.
Recommended Hardware Specs
Operating a node for a personal RPC can be done usin most modern computers. Even modest hardware should be fine for this purpose.
Operating a validator:
Modern cpu with at least 8 cores / threads
ram: 32 gb + 16gb swap space
storage: 1000gb+ @ NVME gen3+
network: 500mb/s DL, 100mb/s UL (the faster the better)
Note: The memory requirement (32gb) is a minimum that is important to consider if you are planning to operate continuously as a validator. We have tested upgrades with oracle data store migrations that weren't possible on 16gb machines even with swap space.
Node Setup Quick Start
Software Prerequisites
jq, yq, sed, curl, wget, make, and Go are required for running the various commands and config scripts and commands in this guide:
jq:sudo apt install jqsed:sudo apt install sedcurl:sudo apt install curlwget:sudo apt install wgetGo version 1.22: Use the default install instructions here.make:sudo apt install build-essential
jq, yq, sed, curl, wget, make, and Go are required for running the various commands and config scripts and commands in this guide:
jq:brew install jqsed:brew install sedwget: brew install wgetGo ≥ 1.22: Use the default install instructions here.make:xcode-select --install
Commands shown should just work while logged in as a user (using root is not recommended).
If you are using an older Mac with an intel chip, the linux versions (amd64) in step 1 below may be used. (just remember to use the mac commands!)
If on raspberry pi or similar, use the binary downloads for "arm64".
Choose How you will Sync your Node
There are two options for starting a new tellor-1 node:
State sync: Your node is configured with seeds and peers from which it will try to download recent chain state snapshots. This sync method is faster, but you will not be able to query block info (like transactions) for any blocks that were produced before the day of your sync. For a new setup state sync, the setup script works great!
Genesis sync: Your node will start with the genesis binary and sync the entire chain. A different binary will be needed for each upgrade since genesis. This sync method can take a long time depending on how long tellor-1 has been live.
1. Download and Organize the layerd Binary(s)
layerd Binary(s)2. Set System Variables
A Layer node uses the following variables:
TOKEN_BRIDGE_CONTRACT: the token bridge contract address.
ETH_RPC_URL: A reliable Ethereum RPC URL.
ETH_RPC_URL_PRIMARY: Ethereum RPC url for the reporter daemon (can be the same).
ETH_RPC_URL_FALLBACK: A second RPC url for calling the bridge contract if the primary RPC fails to respond.
Set the environment variables so that they are set in new terminal windows by default. Open your .bashrc or .zshrc file with a text editor like nano:
Add these lines to the bottom of the file. Remember to replace the example ETH_RPC_URL with your actual Ethereum RPC url, and if you're going to run a reporter, replace the REPORTERS_VALIDATOR_ADDRESS with your own as well.
Exit nano with ctrl^x then enter y to save the changes.
Load the new variables:
3. Edit Chain Configuration for Tellor.
We need to open up the tellor layer config files and change some variables. You can use any local text editor like code, vim, or nano.
Note: All other variables can be safely left as is.
In ~/.layer/config/app.toml:
In ~/.layer/config/client.toml:
In ~/.layer/config/config.toml:
4. Sync the Node
Before starting your node, it's a good idea to think about how you want to run it so that the process does not get killed accidentally. This is not obvious for beginners. Try GNU screen or tmux. More advanced setups can be achieved using systemd services.
Choose the tab depending on whether or not you are doing a genesis sync, or a state sync:
We need to make a few more config edits to make sure your state sync goes smoothly.
To find a good trusted height to use for a snapshot sync, we need to find the height of a snapshot available from
https://mainnet.tellorlayer.com/rpc/. Copy and paste this entire block of commands into a terminal and hit enter:
The output should be something like:
Edit config.toml:
Open your config file:
Scroll or search (ctrl^w) the file and edit the state sync variables shown here to match the trusted height and trusted hash you found above:
Be sure to replace the trust_height and trust_hash with the block number and hash from the curl command above.
Exit nano with ctrl^x then enter y to save the changes.
Start your node:
The node should start up quickly and begin downloading a state snapshot from peers.
Start your layer node with the command:
You should now see your log quickly downloading blocks!
Upgrades
Your node will stop syncing at the following block height(s) for each binary upgrade:
1534900 for upgrade v5.0.0
3891401 for upgrade v5.1.0
6699035 for upgrade v5.1.1
8593590 for upgrade v5.1.2
9908000 for upgrade v6.0.0
When the sync stops for an upgrade at the heights shown above, you will need to kill the layerd process and start it back up again on the corresponding upgraded binary.
To check if the node is fully synced, open a separate terminal window and run:
You should see a JSON formatted list of information about your running node. If you see catching_up":false that means that you're node is fully synced and ready to use!
Last updated

