# Installing a full node
After you've setup your hardware following the hardware requirements you are now ready to become a Commercio.network full node.
WARNING
Make sure you have read the hardware requirements before starting
# 1. Installing the software requirements
In order to update the OS so that you can work properly, execute the following commands:
apt update && apt upgrade -y
apt install -y git gcc make unzip
snap install --classic go
export NODENAME="<your-moniker>"
echo 'export GOPATH="$HOME/go"' >> ~/.profile
echo 'export PATH="$GOPATH/bin:$PATH"' >> ~/.profile
echo 'export PATH="$PATH:/snap/bin"' >> ~/.profile
echo "export NODENAME=\"$NODENAME\"" >> ~/.profile
source ~/.profile
# 2. Chain selection
Before installing the node, please select which chain you would like to connect to (for example testent7000)
rm -rf commercio-chains
mkdir commercio-chains && cd commercio-chains
git clone https://github.com/commercionetwork/chains.git .
cd commercio-<chain-version>
TIP
Always remember to pick the latest chain version listed inside chains repo (opens new window)
# 3. Install binaries, genesis file and setup configuration
Compile binaries
pkill cnd
pkill cncli
git init .
git remote add origin https://github.com/commercionetwork/commercionetwork.git
git pull
git checkout tags/$(cat .data | grep -oP 'Release\s+\K\S+')
go mod verify
make install
Test if you have the correct binaries version:
cnd version
# Should output the same version written inside the .data file.
# cat .data | grep -oP 'Release\s+\K\S+'
Setup the validator node name. We will use the same name for node as well as the wallet key:
export CHAINID=commercio-$(cat .data | grep -oP 'Name\s+\K\S+')
cat <<EOF >> ~/.profile
export CHAINID="$CHAINID"
EOF
Init the .cnd
folder with the basic configuration
WARNING
At this point there may be some differences if you are using KMS
with HSM
. Specifications will be published shortly.
cnd unsafe-reset-all
# If you get a error because .cnd folder is not present don't worry
cnd init $NODENAME
# If you get a error because .cnd folder is present don't worry
Install genesis.json
file
pkill cnd
rm -rf ~/.cnd/config/genesis.json
cp genesis.json ~/.cnd/config
Change the persistent peers inside config.toml
file
sed -e "s|persistent_peers = \".*\"|persistent_peers = \"$(cat .data | grep -oP 'Persistent peers\s+\K\S+')\"|g" ~/.cnd/config/config.toml > ~/.cnd/config/config.toml.tmp
mv ~/.cnd/config/config.toml.tmp ~/.cnd/config/config.toml
Change the seeds inside the config.toml
file
sed -e "s|seeds = \".*\"|seeds = \"$(cat .data | grep -oP 'Seeds\s+\K\S+')\"|g" ~/.cnd/config/config.toml > ~/.cnd/config/config.toml.tmp
mv ~/.cnd/config/config.toml.tmp ~/.cnd/config/config.toml
# 4. Configure the service
tee /etc/systemd/system/cnd.service > /dev/null <<EOF
[Unit]
Description=Commercio Node
After=network-online.target
[Service]
User=root
ExecStart=/root/go/bin/cnd start
Restart=always
RestartSec=3
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target
EOF
Optional. You can quick sync with the follow procedure:
wget "https://quicksync.commercio.network/$CHAINID.latest.tgz" -P ~/.cnd/
# Check if the checksum matches the one present inside https://quicksync.commercio.network
cd ~/.cnd/
tar -zxf $(echo $CHAINID).latest.tgz
Now you can start you full node. Enable the newly created server and try starting it using:
# Start the node
systemctl enable cnd
systemctl start cnd
Control if the sync was started. Use Ctrl + C
to interrupt the journalctl
command
journalctl -u cnd -f
# OUTPUT SHOULD BE LIKE BELOW
#
# Aug 13 16:30:20 commerciotestnet-node4 cnd[351]: I[2019-08-13|16:30:20.722] Executed block module=state height=1 validTxs=0 invalidTxs=0
# Aug 13 16:30:20 commerciotestnet-node4 cnd[351]: I[2019-08-13|16:30:20.728] Committed state module=state height=1 txs=0 appHash=9815044185EB222CE9084AA467A156DFE6B4A0B1BAAC6751DE86BB31C83C4B08
# Aug 13 16:30:20 commerciotestnet-node4 cnd[351]: I[2019-08-13|16:30:20.745] Executed block module=state height=2 validTxs=0 invalidTxs=0
# Aug 13 16:30:20 commerciotestnet-node4 cnd[351]: I[2019-08-13|16:30:20.751] Committed state module=state height=2 txs=0 appHash=96BFD9C8714A79193A7913E5F091470691B195E1E6F028BC46D6B1423F7508A5
# Aug 13 16:30:20 commerciotestnet-node4 cnd[351]: I[2019-08-13|16:30:20.771] Executed block module=state height=3 validTxs=0 invalidTxs=0
# 6. Start the REST API
Each full node can start up its own REST API service. This will allow it to expose some endpoints that can be used in order to query the chain state at any moment.
If you want to start such a service, you need to run the following command
cncli config chain-id $CHAINID
cncli rest-server
This will start up the REST server and make it reachable using the port 1317
.
From here, if you want you can use services such as Nginx (opens new window) in order to make it available to other devices.
# Next step
Now that you are a Commercio.network full node, if you want you can become a validator. If you wish to do so, please read the Becoming a validator guide.