Part of https://www.notion.so/Create-stacks-for-mainnet-1f2a6b22d4728034be4be2c51decf94e - TMKMS config is for `softsign` backend provider Reviewed-on: #4 Co-authored-by: Nabarun <nabarun@deepstacksoft.com> Co-committed-by: Nabarun <nabarun@deepstacksoft.com>
5.7 KiB
Run Validator Node
Prerequisites
Setup Node
-
Get your private key from testnet deployment:
laconic-so deployment --dir <testnet-deployment-dir> exec laconicd "laconicd keys export <key-name> --unarmored-hex --unsafe"NOTE: Store this key securely as it is needed in later steps
-
Stop the node for SAPO testnet:
laconic-so deployment --dir <testnet-deployment-dir> stop -
Fetch the stack:
laconic-so fetch-stack git.vdb.to/cerc-io/laconicd-stack --git-ssh --pullThis command clones the entire repository into the
~/cercfolder, which includes the genesis file published by the first validator. -
Copy the example variables file:
cp ~/cerc/laconicd-stack/playbooks/validator/validator-vars.example.yml ~/cerc/laconicd-stack/playbooks/validator/validator-vars.yml -
Update
~/cerc/laconicd-stack/playbooks/validator/validator-vars.ymlwith required values:# Set custom moniker for the node cerc_moniker: "<your-moniker>" # Set persistent peers (comma-separated list of node IDs and addresses) # You can find the list of available peers in https://git.vdb.to/cerc-io/laconicd-stack/src/branch/main/node-addresses.yml cerc_peers: "<node-id>@<node-host>:26656,<node-id>@<node-host>:26656" -
Export the data directory and mainnet deployment directory as environment variables:
# Parent directory where the deployment directory will live export DATA_DIRECTORY= # Set mainnet deployment directory # for eg: mainnet-laconicd-deployment export MAINNET_DEPLOYMENT_DIR= -
Run ansible playbook to set up your validator node deployment:
ansible-playbook -i localhost, -c local ~/cerc/laconicd-stack/playbooks/validator/setup-validator.yml
Setup TMKMS (Optional but Recommended)
-
For integrating existing TMKMS with laconicd, follow steps below in the machine where TMKMS is setup
-
Set
$TMKMS_HOMEto the directory path containing TMKMS config files# Contents of tmkms config directory ls -l $TMKMS_HOME drwxrwxr-x 2 ... schema drwx------ 2 ... secrets drwxrwxr-x 2 ... state -rw-rw-r-- 1 ... tmkms.toml -
Update the TMKMS configuration file
$TMKMS_HOME/tmkms.toml:[[chain]] id = "laconic-mainnet" key_format = { type = "cosmos-json", account_key_prefix = "laconicpub", consensus_key_prefix = "laconicvalconspub" } # Replace <TMKMS_HOME> with absolute path to tmkms config directory state_file = "<TMKMS_HOME>/state/priv_validator_state.json" [[validator]] chain_id = "laconic-mainnet" # Replace <NODE_IP> with actual IP address of the laconicd node addr = "tcp://<NODE_IP>:26659" # Replace <TMKMS_HOME> with absolute path to tmkms config directory secret_key = "<TMKMS_HOME>/secrets/kms-identity.key" protocol_version = "v0.34" reconnect = true [[providers.softsign]] key_type = "consensus" # Replace <TMKMS_HOME> with absolute path to tmkms config directory path = "<TMKMS_HOME>/secrets/priv_validator_key" chain_ids = ["laconic-mainnet"] -
Copy your validator key to TMKMS:
-
The validator key in laconicd node deployment is present at
$DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json -
Place the validator key file in TMKMS config directory at
$TMKMS_HOME/secrets/ -
Import the private validator key into tmkms:
tmkms softsign import $TMKMS_HOME/secrets/priv_validator_key.json $TMKMS_HOME/secrets/priv_validator_key -
Remove the JSON key file
rm $TMKMS_HOME/secrets/priv_validator_key.json
-
-
Start TMKMS:
tmkms start --config $TMKMS_HOME/tmkms.toml -
Enable TMKMS in the laconicd node configuration:
# Set TMKMS_ENABLED to true in the node's config.env echo "TMKMS_ENABLED=true" >> $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/config.env
Start Node
-
Start the laconicd node:
laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR start -
Check logs to ensure that node is running:
laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR logs laconicd -f
Create Validator
-
Export required env vars:
# Use the private key of the existing account that was exported in previous steps export PVT_KEY=<private-key-in-hex-format> # desired key name export KEY_NAME=<key-name> export DATA_DIRECTORY=<data-directory> export MAINNET_DEPLOYMENT_DIR=<mainnet-deployment-dir> -
Run ansible playbook to create validator on running chain:
ansible-playbook -i localhost, -c local ~/cerc/laconicd-stack/playbooks/validator/create-validator.yml -
Check the validator list:
laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query staking validators' -
If TMKMS has been configured, remove the validator key from node deployment as it is no longer required:
rm $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.jsonNOTE: Store it safely offline in case of an emergency
Register Your Node
-
Get your node's address:
laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'echo $(laconicd cometbft show-node-id)@YOUR_PUBLIC_IP_ADDRESS:26656' -
Add your node's address to the
~/cerc/laconicd-stack/node-addresses.ymlfile -
Submit a PR to add your node address to the repository