Skip to main content

Mainnet

The procedure for joining an existing mainnet is described in this document.

Prerequisite Readings

Mainnet

The genesis file and seeds must be set. Check browse our mainnet repo if you want additional details about previous networks. All Mainnet Chain IDs are listed in the table below. Keep in mind that if there is an active Software Upgrade proposal on chain, the version that is displayed may change.

Chain IDDescriptionSiteVersionStatus
humans_1089-1Humans.ai Mainnet 1Humans.aiv1.0.0Live
danger

IMPORTANT: Please make sure to abide by any security recommandations if you join mainnet as a validator.

Server Timezone Configuration

Make sure UTC is set as your server's timezone configuration. The timedatectl command can be used to find out what time zone you are currently in.

danger

🚨 DANGER: A LastResultsHash mismatch problem could result from a different timezone configuration. Your node will be taken down by this!

Install humansd

To install the humansd binary, refer to the installation guide.

danger

Make sure you have the right version of humansd installed.

Save Chain ID

We advise adding the mainnet chain-id to your humansd client.toml file. As a result, you won't need to manually enter the chain-id flag for each CLI command.

For more information, see to the Official Chain IDs.

humansd config chain-id humans_1089-1

Initialize Node

To produce all the required validator and node configuration files, we must initialize the node:

humansd init <your_custom_moniker> --chain-id humans_1089-1
danger

Only ASCII characters are allowed in monikers. Your node won't be reachable if you use Unicode characters.

The init command by default creates the config/ and data/ subfolders in your /.humansd (i.e. $HOME) directory. app.toml and config.toml are the two configuration-related files of greatest importance in the subfolder config.

Genesis & Seeds

Copy the Genesis File

genesis.json can be downloaded from Github and copied to the config directory at ~/.humansd/config/genesis.json. The chain-id and account balances for the Genesis accounts are included in this file.

wget https://github.com/humansdotai/mainnet/blob/main/mainnet/1/genesis_1089-1.json
mv genesis.json ~/.humansd/config/

Then check the genesis configuration file's accuracy:

humansd validate-genesis

Add Seed Nodes

The ability to locate peers is a requirement for your node. You must add healthy seed nodes to $HOME/.humansd/config/config.toml. Links to various seed nodes can be found in the repository for mainnet.

Change the seeds and the config.toml file under /.humansd/config/config.toml to the following:

#######################################################
### P2P Configuration Options ###
#######################################################
[p2p]

# ...

# Comma separated list of seed nodes to connect to
seeds = "<node-id>@<ip>:<p2p port>"

You can use the following code to get seeds from the repo and add it to your config:

SEEDS=`curl -sL https://raw.githubusercontent.com/humansdotai/mainnet/main/humans_1089-1/seeds.txt | awk '{print $1}' | paste -s -d, -`
sed -i.bak -e "s/^seeds =.*/seeds = \"$SEEDS\"/" ~/.humansd/config/config.toml
tip

For more information on seeds and peers, you can the Tendermint P2P documentation.

Add Persistent Peers

The peers that your node will maintain persistent connections with can be specified by setting the 'persistent_peers' field in /.humansd/config/config.toml.

Run a Mainnet Validator

tip

Follow the validator these instructions for more information on how to run your validator.

humansd tx staking create-validator \
--amount=1000000000000aheart \
--pubkey=$(humansd tendermint show-validator) \
--moniker="HumansValidator" \
--chain-id=<chain_id> \
--commission-rate="0.05" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1000000" \
--gas="auto" \
--gas-prices="0.025aheart" \
--from=<key_name>
danger

🚨 DANGER:NEVER use a test keying backend to generate validator keys. By making your money remotely accessible via the eth_sendTransaction JSON-RPC interface, doing so could lead to a loss of funds.

Reference: Security Advisory: Insecurely configured geth can make funds remotely accessible

Start mainnet

The nodes must be started as the last step. The node will begin generating blocks as soon as the genesis validators have enough voting power (+2/3) to start producing blocks.

humansd start

Share your Peer

You can post about your peer in the #find-peers channel in the Humans.ai Discord.

tip

To get your Node ID use

humansd tendermint show-node-id

State Syncing a Node

Check out our State Sync page if you wish to quickly join the network using State Sync (not suitable for archive nodes, though).