Rpc Node Guide

Humans

Installing Required Packages and Go

sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu -y

Download and install Go:

cd $HOME
ver="1.21.3"
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"
rm "go$ver.linux-amd64.tar.gz"
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
go version

Setup Humans Node

git clone https://github.com/humansdotai/humans.git
cd humans
git checkout v1.0.0
make install

Initialize the node with your moniker:

humansd init $MONIKER --chain-id humans_1089-1

Configure seeds, gas prices, and further settings for optimal performance:

sed -i -e "s|^seeds *=.*|seeds = \"f8006da7d742777eeca0194b94586c8f147be4f6@humans-mainnet-seed.itrocket.net:17656,babc3f3f7804933265ec9c40ad94f4da8e9e0017@seed.rhinostake.com:18456,0e959a22dfdd34ac16f9af82d76ec6ae5f0e8e73@135.181.75.235:10256,400f3d9e30b69e78a7fb891f60d76fa3c73f0ecc@humans.rpc.kjnodes.com:12259\"|" $HOME/.humansd/config/config.toml

sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"100000000000aheart\"|" $HOME/.humansd/config/app.toml

sed -i \
  -e 's|^create_empty_blocks *=.*|create_empty_blocks = false|' \
  -e 's|^prometheus *=.*|prometheus = true|' \
  -e 's|^create_empty_blocks_interval *=.*|create_empty_blocks_interval = "30s"|' \
  -e 's|^timeout_propose *=.*|timeout_propose = "30s"|' \
  -e 's|^timeout_propose_delta *=.*|timeout_propose_delta = "5s"|' \
  -e 's|^timeout_prevote *=.*|timeout_prevote = "10s"|' \
  -e 's|^timeout_prevote_delta *=.*|timeout_prevote_delta = "5s"|' \
  -e 's|^cors_allowed_origins *=.*|cors_allowed_origins = ["*.humans.ai","*.humans.zone"]|' \
  -e 's|^timeout_prevote_delta *=.*|timeout_prevote_delta = "5s"|' \
  $HOME/.humansd/config/config.toml


sed -i \
  -e 's|^prometheus-retention-time *=.*|prometheus-retention-time = 1000000000000|' \
  -e 's|^enabled *=.*|enabled = true|' \
  -e '/^\[api\]$/,/^\[/ s/enable = false/enable = true/' \
  -e 's|^swagger *=.*|swagger = true|' \
  -e 's|^max-open-connections *=.*|max-open-connections = 100|' \
  -e 's|^rpc-read-timeout *=.*|rpc-read-timeout = 5|' \
  -e 's|^rpc-write-timeout *=.*|rpc-write-timeout = 3|' \
  -e 's|^rpc-max-body-bytes *=.*|rpc-max-body-bytes = 1000000|' \
  -e 's|^enabled-unsafe-cors *=.*|enabled-unsafe-cors = false|' \
  $HOME/.humansd/config/app.toml

Load the latest snapshot to sync your node quickly from the websites below:

https://docs.huginn.tech/mainnet-guides/snapshot/humans

https://services.kjnodes.com/mainnet/humans/snapshot/

Install and Configure Systemd

echo "[Unit]
Description=Humans
After=network.target

[Service]
User=$USER
Type=simple
ExecStart=$(which humansd) start --home /path/.humansd/ --chain-id humans_1089-1 --metrics --evm.tracer=json --minimum-gas-prices=1800000000aheart json-rpc.api eth,txpool,personal,net,debug,web3,miner --api.enable
Restart=on-failure
LimitNOFILE=4096

[Install]
WantedBy=multi-user.target" > $HOME/humansd.service

sudo mv $HOME/humansd.service /etc/systemd/system

sudo systemctl enable humansd
sudo systemctl restart humansd 

Monitor your node

sudo journalctl -u humansd -f --no-hostname -o cat

Check and Configure Ports

  • nano $HOME/.humansd/config/app.toml
    [json-rpc]
    address = "127.0.0.1:8545"
    ws-address = "127.0.0.1:8546"
    
    [api]
    enable = true
    swagger = false
    address = "tcp://0.0.0.0:1317"
    
    nano $HOME/.humansd/config/config.toml
    [rpc]
    laddr = "tcp://127.0.0.1:26657"

Use Caddy for Domain Binding

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

Configure Caddyfile for domain routing:

nano /etc/caddy/Caddyfile

:80 {
    root * /usr/share/caddy
    file_server
}

rpc-humans.huginn.tech {
    reverse_proxy http://127.0.0.1:26657 {
        header_down Access-Control-Allow-Origin *
    }
}

api.humans.huginn.tech {
    reverse_proxy http://127.0.0.1:1317 {
        header_down Access-Control-Allow-Origin *
    }
}

evm-rpc.humans.huginn.tech {
    reverse_proxy http://127.0.0.1:8545 {
        header_down Access-Control-Allow-Origin *
    }
}

Register domains with a hosting service: Use a service like Cloudflare to manage your domains.

Contribute to Chain Registry and Chainlist

  1. Contribute to Cosmos chain registry: Submit a pull request to the Cosmos Chain Registry to make your endpoints accessible to everyone.

  2. List your EVM-RPC on Chainlist: Contribute to the Chain List to include your EVM-RPC.

Last updated