Build Linux binary from source and become a Sentry Node Operator
Preresquites
Operating System
This tutorial assumes that your node is running Ubuntu LTS version (i.e: 18.04, 20.04 or 22.04). It does not work with Ubuntu 16.04 or older versions.
Go version
The Golang version should be from 1.18 and above If you have not installed it yet, you can refer to this document.
Make sure that $GOPATH
is in your $PATH
. It's the crucial part of this tutorial.
Make
If your node does not have Make, install using: sudo apt update && sudo apt install make
Gcc
You need to install Gcc to build the binary. Type: sudo apt update && sudo apt install gcc
Build the binary from source
Please define the $ORAI_HOME
environment variable which will be used as the working directory, in this tutorial we will assume that your $ORAI_HOME
is root
. If you don't define it, all of the following installations will be using your $HOME
folder as $ORAI_HOME
, please replace $ORAI_HOME
with $HOME
in the corresponding commands (except export ORAI_HOME command).
Make sure your user has enough permissions to write data to the $ORAI_HOME
folder.
Copy
# Export ORAI_HOME env variable
export ORAI_HOME="/root"
Copy
# clone the Oraichain network repository
cd $ORAI_HOME
git clone https://github.com/oraichain/orai.git
# enter the repo
cd orai
# checkout the latest tag
git checkout <tag>
The <version-tag>
will need to be set to either a testnet or the latest mainnet version tag.
The current mainnet version tag will be v0.41.7-1s-block-time
- i.e:
Copy
git checkout v0.41.7-1s-block-time
Next, you should be able to build the binary file using the below command:
Copy
# go to main folder ($ORAI_HOME/orai/orai)
cd orai
go mod tidy
make install
After running the above commands, your oraid
binary can be found in $GOPATH/bin
. To confirm that the installation is succeeded, you can run (please make sure that $GOPATH/bin
is in your $PATH
):
Copy
oraid version
The current binary version for Linux users is v0.41.7-1s-block-time
Libwasmvm version: oraid query wasm libwasmvm-version
, which should give: 1.5.2
Initialize Orai Node
Use oraid to initialize your node (replace the NODE_NAME with a name of your choosing):
Copy
oraid init NODE_NAME --home $ORAI_HOME/.oraid
Download and place the genesis file in the orai config folder:
Copy
wget -O $ORAI_HOME/.oraid/config/genesis.json https://raw.githubusercontent.com/oraichain/oraichain-static-files/master/genesis.json
Finally, your working directory should be like below:
Copy
#tree $ORAI_HOME/.oraid/
$ORAI_HOME/.oraid/
├── config
│ ├── app.toml
│ ├── client.toml
│ ├── config.toml
│ ├── genesis.json
│ ├── node_key.json
│ └── priv_validator_key.json
└── data
└── priv_validator_state.json
2 directories, 7 files
Set Up Cosmovisor
(You may also refer to the Cosmovisor installation instructions.) Set up cosmovisor to ensure any future upgrades happen flawlessly. To install Cosmovisor:
Copy
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latest
Create the required directories, and Copy the current oraid binary into the cosmovisor/genesis folder:
Copy
mkdir -p $ORAI_HOME/.oraid/cosmovisor
mkdir -p $ORAI_HOME/.oraid/cosmovisor/genesis
mkdir -p $ORAI_HOME/.oraid/cosmovisor/genesis/bin
mkdir -p $ORAI_HOME/.oraid/cosmovisor/upgrades
cp $GOPATH/bin/oraid $ORAI_HOME/.oraid/cosmovisor/genesis/bin
Set the environment variables
Copy
echo "# Setup Cosmovisor" >> ${HOME}/.profile
echo "export ORAI_HOME=/root" >> ${HOME}/.profile
echo "export DAEMON_NAME=oraid" >> ${HOME}/.profile
echo "export DAEMON_HOME=$HOME/.oraid" >> ${HOME}/.profile
echo "export DAEMON_ALLOW_DOWNLOAD_BINARIES=false" >> ${HOME}/.profile
echo "export DAEMON_LOG_BUFFER_SIZE=512" >> ${HOME}/.profile
echo "export DAEMON_RESTART_AFTER_UPGRADE=true" >> ${HOME}/.profile
echo "export UNSAFE_SKIP_BACKUP=true" >> ${HOME}/.profile
source ~/.profile
To check your work, ensure the version of cosmovisor and oraid are the same:
Copy
cosmovisor version
oraid version
Finally, your working directory should be like below:
Copy
$ORAI_HOME/.oraid/
├── config
│ ├── app.toml
│ ├── client.toml
│ ├── config.toml
│ ├── genesis.json
│ ├── node_key.json
│ └── priv_validator_key.json
├── cosmovisor
│ ├── current -> /root/.oraid/cosmovisor/genesis
│ ├── genesis
│ │ └── bin
│ │ └── oraid
│ └── upgrades
└── data
└── priv_validator_state.json
7 directories, 8 files
Download Chain Data
Download liblz4-tool to handle the compressed file, then Download & Decompress the snapshot:
Copy
cd $ORAI_HOME/.oraid
sudo apt-get install wget liblz4-tool aria2 -y
wget -O oraichain_latest.tar.lz4 https://orai.s3.us-east-2.amazonaws.com/snapshots/oraichain_latest.tar.lz4
lz4 -c -d oraichain_latest.tar.lz4 | tar -x -C $ORAI_HOME/.oraid
Optional (problem with binnary version v0.41.6)
In the data folder, if the file upgrade-info.json does not exist, you can ignore this section. Otherwise, open the upgrade-info.json file and check the version.
Copy
cat $ORAI_HOME/.oraid/data/upgrade-info.json
If version is not "v0.41.6" then delete this file
Copy
rm $ORAI_HOME/.oraid/data/upgrade-info.json
Edit config
Copy
vim $ORAI_HOME/.oraid/config/config.toml
Update seed address
Copy
seeds = "[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656"
Set Up Orai Service
Set up a service to allow cosmovisor to run in the background as well as restart automatically if it runs into any problems:
Copy
cat > /tmp/orai.service <<EOF
[Unit]
Description=Cosmovisor daemon
After=network-online.target
[Service]
Environment="ORAI_HOME=/root"
Environment="DAEMON_NAME=oraid"
Environment="DAEMON_HOME=${ORAI_HOME}/.oraid"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_LOG_BUFFER_SIZE=512"
Environment="UNSAFE_SKIP_BACKUP=true"
User=$USER
ExecStart=$GOPATH/bin/cosmovisor run start --home ${ORAI_HOME}/.oraid --minimum-gas-prices=0.001orai
Restart=always
RestartSec=3
LimitNOFILE=infinity
LimitNPROC=infinity
[Install]
WantedBy=multi-user.target
EOF
Move this new file to the systemd directory:
Copy
sudo mv /tmp/orai.service /etc/systemd/system/orai.service
Reload and start the service:
Copy
sudo systemctl daemon-reload
sudo systemctl restart systemd-journald
sudo systemctl start orai
sudo systemctl enable orai
Check the status of the service:
Copy
sudo systemctl status orai
To see live logs of the service:
Copy
journalctl -u orai -f
Check your node status
Copy
oraid status
# OR
oraid status 2>&1 | jq .SyncInfo
# OR
curl -s localhost:26657/status | grep "catching_up"
# OR
oraid status 2>&1 | jq .SyncInfo.check_status
If the catching_up status is false, your node finishes syncing process. Finally, you can delete the snapshot file and backup your config folder. The snapshot file may be outdated; you can reach out to our community for it. Please join the Oraichain validators group on Telegram to discuss ideas and problems!
Last updated