Running a Node
In this section, the application we are running is called mantrachaind. We will walk through how to set up and configure the app - along with integrating the application as a system service.
Recommended Readings
Download latest release
Latest chain release binaries can be found here.
You can download the mantrachaind
executable and place it in a standard binary folder, such as /usr/local/bin/
or similar. Remember to make it executable by completing sudo chmod +x
.
Binary Check
Each mantrachaind
binary is deployed with a corresponding .sha256 file that you can download, to verify the integrity of the build. Download the sha256sum.txt
and verify the hash.
Build From Source
If you would like to build from source instead of using the release binary, you can compile and install the binary.
go will be needed for this install
Initialize the Chain
Before actually running the node, we need to initialize the chain, and most importantly its genesis file. This is done with the init
subcommand:
Public Testnet/Mainnet Chains
We will have regularly updating public testnet chains along with our mainnet chain: mantra-1
. Available networks to integrate with along with their requisite genesis files can be found here.
Arguments:
moniker
: the custom username of your node, it should be human-readable.chain-id
: The id of an existing chain that you want to join. Examples:Testnet:
mantra-dukong-1
Mainnet:
mantra-1
The command above creates all the configuration files needed for your node to run, as well as a default genesis file, which defines the initial state of the network. Reminder to overwrite the default genesis if you're planning to exist to an existing chain!!
TIP
All these configuration files are in ~/.mantrachain
by default, but you can overwrite the location of this folder by passing the --home
flag to each commands, or set an $APPD_HOME
environment variable (where APPD
is the name of the binary).
The ~/.mantrachain
folder has the following structure:
config.toml
: used to configure the CometBFT, learn more on CometBFT's documentation,app.toml
: generated by the Cosmos SDK, and used to configure your app, such as state pruning strategies, telemetry, gRPC and REST servers configuration, state sync...
Both files are heavily commented, please refer to them directly to tweak your node.
Connect to existing chains
I) Download the genesis.json
genesis.json
In order to connect to an existing public chain, we need to reuse an existing genesis.json
Go to (Github)[https://github.com/MANTRA-Chain/mantrachain/tree/main/networks]
Download the
genesis.json
of the chain you want to connect to, and put it into~/.mantrachain/config
II) Update configuration file
Create a bash script with the following content:
Update the
SEEDS
environment variable
Testnet (mantra-dukong-1):
SEEDS="7e061edecef73a700b699c785f61a44ca981ff7f@34.150.103.79:26656"
Mainnet (mantra-1):
SEEDS="32276da966637722914411e16ca91bd37dcd1c28@35.220.157.87:26656,9f5235b418c87af4302619705d0bf4748249ca6b@34.18.33.96:26656"
Note: more seeds can be found at (Github)[https://github.com/cosmos/chain-registry/blob/master/mantrachain/chain.json]
The seeds format is node-id@ip:port,node-id@ip:port,...
Run the script:
bash <script-name>.sh
Optional: start from an existing snapshot
When the node starts, it needs to sync all the data from other nodes, which could be time-consuming.
In order to quicken the process, we are providing some existing data snapshots at
Warning: If you are starting the node, please follow the procedure here in order to stop the current service and backup the important data: https://www.polkachu.com/tendermint_snapshots/mantra
Download the snapshot from:
Install l4z
Macos (homebrew) :
brew install l4z
Linux: [more info here](https://www.tecmint.com/install-lz4-linux/)
Decompress the snapshot
Update the file
~/.mantrachain/config/config.toml
Replace the value of
db_backend
bypebbledb
, so it will looks likedb_backend = "pebbledb"
Testing the setup
This command will start the node, which will sync its local data from the existing nodes
Wait for a few couple of seconds, and if you see the height growing: success! 🎉
Client Interaction
When instantiating a node, GRPC and REST are defaulted to localhost to avoid unknown exposure of your node to the public. It is recommended to not expose these endpoints without a proxy that can handle load balancing or authentication is setup between your node and the public.
Last updated