Quick Start - Join Mainnet
Bootstrap a cosmoshub-4
mainnet node
Prerequisites
Note: Make sure the Gaia CLI is installed.
Sync Options
To quickly get started, node operators can choose to sync via State Sync or by downloading a snapshot from Quicksync. State Sync works by replaying larger chunks of application state directly rather than replaying individual blocks or consensus rounds. Quicksync is a service provided courtesy of ChainLayer, and offers historical state of the chain available for download every 24 hours. For more advanced information on setting up a node, see the Sync Options section of the full Joining Mainnet Tutorial
State Sync
To enable state sync, visit an explorer to get a recent block height and corresponding hash. A node operator can choose any height/hash in the current bonding period, but as the recommended snapshot period is 1000 blocks, it is advised to choose something close to current height - 1000. Set these parameters in the code snippet below <BLOCK_HEIGHT>
and <BLOCK_HASH>
For reference, the list of rpc_servers
and persistent
peers can be found in the cosmos hub chain-registry repo.
# Build gaiad binary and initialize chain
cd $HOME
git clone -b v18.0.0 https://github.com/cosmos/gaia --depth=1
cd gaiad
make install
gaiad init CUSTOM_MONIKER --chain-id cosmoshub-4
#Set minimum gas price & peers
sed -i'' 's/minimum-gas-prices = ""/minimum-gas-prices = "0.0025uatom"/' $HOME/.gaia/config/app.toml
sed -i'' 's/persistent_peers = ""/persistent_peers = '"\"$(curl -s https://raw.githubusercontent.com/cosmos/chain-registry/master/cosmoshub/chain.json | jq -r '[foreach .peers.seeds[] as $item (""; "\($item.id)@\($item.address)")] | join(",")')\""'/' $HOME/.gaia/config/config.toml
# Configure State sync
sed -i'' 's/enable = false/enable = true/' $HOME/.gaia/config/config.toml
sed -i'' 's/trust_height = 0/trust_height = <BLOCK_HEIGHT>/' $HOME/.gaia/config/config.toml
sed -i'' 's/trust_hash = ""/trust_hash = "<BLOCK_HASH>"/' $HOME/.gaia/config/config.toml
sed -i'' 's/rpc_servers = ""/rpc_servers = "https:\/\/cosmos-rpc.polkachu.com:443,https:\/\/rpc-cosmoshub-ia.cosmosia.notional.ventures:443,https:\/\/rpc.cosmos.network:443"/' $HOME/.gaia/config/config.toml
#Start Gaia
gaiad start --x-crisis-skip-assert-invariants
Quick Sync
Note: Make sure to set the --home
flag when initializing and starting gaiad
if mounting quicksync data externally.
Create Gaia Home & Config
mkdir $HOME/.gaia/config -p
Start Quicksync Download
Node Operators can decide how much of historical state they want to preserve by choosing between Pruned
, Default
, and Archive
. See the Quicksync.io downloads for up-to-date snapshot sizes.
Default
sudo apt-get install wget liblz4-tool aria2 jq -y
export URL=`curl -L https://quicksync.io/cosmos.json|jq -r '.[] |select(.file=="cosmoshub-4-default")|.url'`
echo $URL
cd $HOME/.gaia
aria2c -x5 $URL
Pruned
sudo apt-get install wget liblz4-tool aria2 jq -y
export URL=`curl -L https://quicksync.io/cosmos.json|jq -r '.[] |select(.file=="cosmoshub-4-pruned")|.url'`
echo $URL
cd $HOME/.gaia
aria2c -x5 $URL
Archive
sudo apt-get install wget liblz4-tool aria2 jq -y
export URL=`curl -L https://quicksync.io/cosmos.json|jq -r '.[] |select(.file=="cosmoshub-4-archive")|.url'`
echo $URL
cd $HOME/.gaia
aria2c -x5 $URL
The download logs should look like the following
01/11 07:48:17 [NOTICE] Downloading 1 item(s)
[#7cca5a 484MiB/271GiB(0%) CN:5 DL:108MiB ETA:42m41s]
Completed Download Process:
[#7cca5a 271GiB/271GiB(99%) CN:1 DL:77MiB]
01/11 08:32:19 [NOTICE] Download complete: /mnt/quicksync_01/cosmoshub-4-pruned.20220111.0310.tar.lz4
Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
7cca5a|OK | 105MiB/s|/mnt/quicksync_01/cosmoshub-4-pruned.20220111.0310.tar.lz4
Status Legend:
(OK):download completed.
Unzip
lz4 -c -d `basename $URL` | tar xf -
Copy Address Book Quicksync
curl https://quicksync.io/addrbook.cosmos.json > $HOME/.gaia/config/addrbook.json
Start Gaia
gaiad start --x-crisis-skip-assert-invariants