Start Validating
Instructions for Running a Node
See the install & onboard guide for steps on how to prepare the node binary.
1. Adding Verifiable Presentation before starting the network
Your organisation's VP is sent to you by Gayadeed in the previous step.
If you do not have the VP, you will not be able to propose / vote on blocks and be jailed.
You need to add the verifiable presentation to the config before staring the node.
Add this to the config by running:
dchain vp add <verifiable-presentation>
# Example
dchain vp add eyJ0eXAiOiJ2YytzZC1qd3QiLCJhbGciOiJFZERTQSIsImtpZCI6IiN6Nk1rbU5HRWNRWHZSZmo3WDhFNk55eE0yalI4VGpuMnVyMmc0VnZYNFdIN0tVQzUifQ.eyJpZHgiOjEyNCwidmFsaWRhdG9yIjoiZGNoYWludmFsY29uczFjcjByYWxkN2VlajRqcHczcXp2NWZmN3BrdXk3ZzM2eTh0aGdsYSIsInZjdCI6Imh0dHBzOi8vbWV0YWRhdGEucGFyYWR5bS5pZC90eXBlcy9SbW95bEJOUGlCLVZhbGlkYXRvckRvY3VtZW50IiwiaXNzIjoiZGlkOmNoZXFkOnRlc3RuZXQ6YjUwNGM5NjktNDIyMS00ZjRlLThjZDItYjY2ZjY3OGZkYWY4IiwiaWF0IjoxNzQwNTg1MDIxLCJfc2RfYWxnIjoic2hhLTI1NiJ9.4X1g6_iqC5Ku04JSF1HZBImaV_3nSsP_EakUtgOafLw9ebEXe8Y2n3Zr5P7X9O4g88pF-ZwJKAjBj1-D5IDlDA~
NOTE: The VP is added to the default home "~/.dchain/config". We will fix to take into account of the --home flag in the next version
You can also see what is in the presentation by going to Paradym Debug tool and paste in the presentation.
2. Configure the Node
Set chain id for the node.
dchain config set client chain-id test-theodoric-2
Add the peers to the $DCHAIN_HOME/config/config.toml.
Please see Networks repo under testnets/test-theodoric-2.
3. Setting up Cosmovisor
Cosmovisor is a process manager for Cosmos SDK based blockchains that automates the upgrade process of the node software.
# download cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.6.0
This will download cosmovisor to your $GOPATH/bin directory. If the $GOPATH var is not set, it will be downloaded to
~/go/bin.
# move cosmovisor to /usr/local/bin
sudo mv ~/go/bin/cosmovisor /usr/local/bin
Then we have to create the expected directory structure for cosmovisor to work. Details are provided by the cosmos docs
# create the cosmovisor directory
mkdir -p ~/.dchain/cosmovisor/genesis/bin
cp /usr/local/bin/dchain ~/.dchain/cosmovisor/genesis/bin
4. Getting the genesis file
The genesis file with all the gentx and correct config is provided at the
Networks repo under testnets/test-theodoric-2.
Replace the existing default genesis file at the node's home: default in ~/.dchain/config.
5. Starting the Node
# create the systemd service file
sudo vim /etc/systemd/system/dchain.service
Here is a simple example of the service file, for more details please look at details of Environment variables.
[Unit]
Description=DChain Validator Node
After=network-online.target
[Service]
User=debian
ExecStart=/usr/local/bin/cosmovisor run start
Restart=always
RestartSec=3
LimitNOFILE=65535
Environment="DAEMON_NAME=dchain"
Environment="DAEMON_HOME=/home/debian/.dchain"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
[Install]
WantedBy=multi-user.target
After we have the systemd file
# reload the systemd daemon
sudo systemctl daemon-reload
# enable the service
sudo systemctl enable dchain
# start the service
sudo systemctl start dchain
# check the status
sudo systemctl status dchain
# check the logs
journalctl -u dchain -f
# stop the service
sudo systemctl stop dchain
6. Promote the node to validate
In order to join and become a validator, you need to
- Have DTs in a validator controller account, create one with
dchain keys add <name> - Sign a
MsgCreateValidatortransaction with the operator account that has the VP added in the attestation.
dchain tx staking create-validator path/to/validator.json --from keyname
where validator.json contains your pubkey, and other info:
{
"pubkey": { "@type": "/cosmos.crypto.ed25519.PubKey", "key": "oWg2ISpLF405Jcm2vXV+2v4fnjodh6aafuIdeoW+rUw=" },
"amount": "10000000000000udt",
"moniker": "<your validator name>",
"identity": "Please use keybase for logo",
"website": "validator's (optional) website",
"security": "validator's (optional) security contact email",
"details": "validator's (optional) details",
"commission-rate": "0.05",
"commission-max-rate": "0.1",
"commission-max-change-rate": "0.01",
"min-self-delegation": "1000000000000"
}
The pubkey is the represetation of the Validator Address, obtained by running:
dchain comet show-validator
7. Monitoring the Node
You can monitor the node now with
# check the logs
journalctl -u dchain -f
you should also be seeing your validator is bonded by searching for your moniker in the output of
dchain query staking validators --node <your node rpc>