LogoLogo
Block ExplorerDiscordTwitterMirror
  • What Is Canto?
  • Free Public Infrastructure
    • NOTE
    • Canto Lending Market
    • Canto DEX
  • Canto Neofinance
    • Overview
    • Application Specific Dollar
  • User Guides
    • Connecting to Canto
    • Bridging Assets
      • Bridging to Canto
      • Bridging from Canto
      • Synapse Bridge
      • Celer cBridge
    • Providing Liquidity
    • Lending & Borrowing
    • Staking
    • Governance
  • EVM Development
    • Overview
    • Quickstart Guide
    • NOTE, DEX, and Lending Market
    • Contract Secured Revenue (CSR)
    • Verifying Contracts
    • Contract Addresses
    • Testnet
  • Running a Node
    • Validators
      • Quickstart Guide
      • Useful Commands
      • Snapshots
      • FAQ
      • Troubleshooting
      • Uptime
      • Slashing
    • Archive Node
    • Graph Node (Subgraphs)
  • Technical Reference
    • Application Specific Dollar
      • asdOFT
      • asdRouter
      • asdUSDC
    • Liquidity Coordinator
      • VotingEscrow
      • GaugeController
      • LendingLedger
      • LiquidityGauge
    • Architecture & Design
      • Onboarding Module
      • Gravity Bridge
      • NOTE Design
      • Canto Lending Protocol
      • IBC Token Recovery
    • Governance
      • Governance Module
      • GovShuttle Module
      • Lending Market Governance
    • Tokenomics
    • Audits
Powered by GitBook
On this page
  • 1. Install Dependencies
  • 2. Install cantod
  • 3. Initialize Validator
  • 4. Edit Config
  • 5. Create systemd Service
  • 6. Start Node
  • 7. Sync Node
  • 8. Create Validator Transaction
  • 9. Update Binary
  1. Running a Node
  2. Validators

Quickstart Guide

PreviousValidatorsNextUseful Commands

Last updated 1 year ago

This page contains step-by-step instructions for launching a Canto validator node.

Once you've set up your node, join the on Telegram to stay up-to-date with chain upgrades and other governance proposals.

Hardware Requirements

Minimum: 16GB RAM, 100GB NVME SSD, 3.2 GHz x 4 CPU

Recommended: 32GB RAM, 500GB NVME SSD, 4.2 GHz x 6 CPU

Operating System: Linux (x86_64 or amd64) e.g. Ubuntu or Arch Linux

1. Install Dependencies

Install dependencies (Ubuntu):

# Synchronize package index
sudo apt-get update

# Install packages
sudo snap install go --classic
sudo apt-get install git
sudo apt-get install gcc
sudo apt-get install make

2. Install cantod

Clone the official repo and install the current binary:

git clone https://github.com/Canto-Network/Canto.git
cd Canto
git checkout v7.0.0
make install
sudo mv $HOME/go/bin/cantod /usr/bin/

Generate and store keys:

cantod keys add <key_name>

To recover keys from an existing mnemonic, use the --recover flag.

3. Initialize Validator

Initialize the node and download the genesis file:

cantod init <MONIKER> --chain-id canto_7700-1
cd ~/.cantod/config
rm genesis.json
wget https://github.com/Canto-Network/Canto/raw/genesis/Networks/Mainnet/genesis.json

Replace <moniker> with whatever you'd like to name your validator.

4. Edit Config

# Add seed peer to config.toml
sed -i 's/seeds = ""/seeds = "[email protected]:15556"/g' $HOME/.cantod/config/config.toml

# Set minimum gas price in app.toml
sed -i 's/minimum-gas-prices = "0acanto"/minimum-gas-prices = "0.0001acanto"/g' $HOME/.cantod/config/app.toml

5. Create systemd Service

Create the systemd service file:

sudo nano /etc/systemd/system/cantod.service

Copy and paste the following configuration and save:

[Unit]
Description=Canto Node
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/
ExecStart=/usr/bin/cantod start --trace --log_level info --json-rpc.api eth,txpool,personal,net,debug,web3 --api.enable
Restart=on-failure
StartLimitInterval=0
RestartSec=3
LimitNOFILE=65535
LimitMEMLOCK=209715200

[Install]
WantedBy=multi-user.target

If using a non-root user, set the User and WorkingDirectory parameters accordingly, e.g.:

User=alice
WorkingDirectory=/home/alice/

6. Start Node

# Reload service files
sudo systemctl daemon-reload

# Create the symlink
sudo systemctl enable cantod.service

# Start the node
sudo systemctl start cantod

# Show logs
journalctl -u cantod -f

You should then get several lines of log files, which may include an INVALIDARGUMENT error causing the service to exit. This is expected; Ctrl + C out and follow the next steps.

7. Sync Node

To use state-sync:

# Set vars
SNAP_RPC="https://canto-rpc.polkachu.com:443"
LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height)
BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000))
TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)
echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

# Stop node
sudo systemctl stop cantod

# Reset cantod
cantod tendermint unsafe-reset-all --home $CANTO_HOME --keep-addr-book

# Add state-sync settings
sed -i -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.cantod/config/config.toml

# Restart
sudo systemctl start cantod

8. Create Validator Transaction

Modify the following items below, removing the <>

  • <KEY_NAME> should be the same as <key_name> when you followed the steps above in creating or restoring your key.

  • <VALIDATOR_NAME> is whatever you'd like to name your node

  • <DESCRIPTION> is whatever you'd like in the description field for your node

  • <SECURITY_CONTACT_EMAIL> is the email you want to use in the event of a security incident

  • <YOUR_WEBSITE> the website you want associated with your node

  • <TOKEN_DELEGATION> is the amount of tokens staked by your node (minimum 1acanto)

cantod tx staking create-validator \
--from <KEY_NAME> \
--chain-id canto_7700-1 \
--moniker="<VALIDATOR_NAME>" \
--commission-max-change-rate=0.01 \
--commission-max-rate=1.0 \
--commission-rate=0.05 \
--details="<DESCRIPTION>" \
--security-contact="<SECURITY_CONTACT_EMAIL>" \
--website="<YOUR_WEBSITE>" \
--pubkey $(cantod tendermint show-validator) \
--min-self-delegation="1" \
--amount <TOKEN_DELEGATION>acanto \
--fees 30000000000000000acanto \
--gas 300000

Your validator wallet must contain a non-zero amount of native CANTO in order to send the validator transaction. To get some, follow these steps:

  1. Run cantod debug addr $(cantod keys show <key_name> -a) to see your validator's Bech32 and 0x addresses.

  2. Send funds from a Canto EVM wallet to the 0x address shown

  3. Alternatively, ask a validator who already has native CANTO to send funds to the Bech32 Acc address.

9. Update Binary

In case of a binary upgrade, you will need to re-fetch the Canto repository and install the new binary before restarting your node:

git pull

git checkout v7.0.0
make install

# Don't forget to move the installed binary to your path
sudo mv $HOME/go/bin/cantod /usr/bin/

# Restart
sudo systemctl stop cantod.service
sudo systemctl start cantod.service

Unless you wish to run an , you should sync your node to the current block using or state-sync snapshots.

Once your validating node is up-and-running, join the on Telegram to stay up-to-date with chain upgrades and other governance proposals.

Canto Network Validator Announcements channel
archive node
manual snapshots
Canto Network Validator Announcements channel