diff --git a/playbooks/validator/create-validator.yml b/playbooks/validator/create-validator.yml new file mode 100644 index 0000000..6afc24d --- /dev/null +++ b/playbooks/validator/create-validator.yml @@ -0,0 +1,30 @@ +--- +- name: Create validator on running chain + hosts: localhost + vars: + data_directory: "{{ lookup('env', 'DATA_DIRECTORY') }}" + deployment_dir: "{{ lookup('env', 'MAINNET_DEPLOYMENT_DIR') }}" + key_name: "{{ lookup('env', 'KEY_NAME') }}" + pvt_key: "{{ lookup('env', 'PVT_KEY') }}" + tasks: + - name: Fail if DATA_DIRECTORY or MAINNET_DEPLOYMENT_DIR env vars are not set + fail: + msg: >- + Required environment variables are not set. + Please export both DATA_DIRECTORY and MAINNET_DEPLOYMENT_DIR before running the playbook. + when: lookup('env', 'DATA_DIRECTORY') == '' or lookup('env', 'MAINNET_DEPLOYMENT_DIR') == '' + + - name: Fail if pvt_key is not set + fail: + msg: >- + Neither private key (pvt_key) is set. + Please export PVT_KEY. + when: not pvt_key + + - name: Import private key in laconicd + shell: | + laconic-so deployment --dir {{ data_directory }}/{{ deployment_dir }} exec laconicd "laconicd keys import-hex {{ key_name }} {{ pvt_key }}" + + - name: Run create-validator script + shell: | + laconic-so deployment --dir {{ data_directory }}/{{ deployment_dir }} exec laconicd "export KEY_NAME={{ key_name }} /scripts/create-validator.sh" diff --git a/run-validator.md b/run-validator.md index 5126284..997b566 100644 --- a/run-validator.md +++ b/run-validator.md @@ -75,6 +75,42 @@ laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR logs laconicd -f ``` +## Create Validator + +- Get your private key from testnet deployment: + + ```bash + # Replace with the absolute path to the testnet deployment directory and with the name of your key + docker run -it \ + -v /data/laconicd-data:/root/.laconicd \ + cerc/laconicd:local bash -c "laconicd keys export --unarmored-hex --unsafe" + ``` + +- Export required env vars: + + ```bash + # private key of the existing account + export PVT_KEY= + + # desired key name + export KEY_NAME= + + export DATA_DIRECTORY= + export MAINNET_DEPLOYMENT_DIR= + ``` + +- Run ansible playbook to create validator on running chain: + + ```bash + ansible-playbook -i localhost, -c local playbooks/validator/create-validator.yml + ``` + +- Check the validator list: + + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query staking validators' + ``` + ## Register Your Node - Get your node's address: diff --git a/scripts/create-validator.sh b/scripts/create-validator.sh new file mode 100755 index 0000000..f714877 --- /dev/null +++ b/scripts/create-validator.sh @@ -0,0 +1,20 @@ +#!/bin/bash +set -e + +DENOM=alnt + +# Create validator with fixed parameters +laconicd tx staking create-validator \ + --amount 900000000$DENOM \ + --pubkey $(laconicd tendermint show-validator) \ + --moniker "$CERC_MONIKER" \ + --chain-id "$CERC_CHAIN_ID" \ + --commission-rate 0.0 \ + --commission-max-rate 0.0 \ + --commission-max-change-rate 0.0 \ + --min-self-delegation 1 \ + --gas auto \ + --gas-adjustment 1.5 \ + --gas-prices $MIN_GAS_PRICE$DENOM \ + --from $KEY_NAME \ + --yes diff --git a/stack-orchestrator/compose/docker-compose-mainnet-laconicd.yml b/stack-orchestrator/compose/docker-compose-mainnet-laconicd.yml index 6822d82..f0b18c0 100644 --- a/stack-orchestrator/compose/docker-compose-mainnet-laconicd.yml +++ b/stack-orchestrator/compose/docker-compose-mainnet-laconicd.yml @@ -12,6 +12,7 @@ services: volumes: - laconicd-data:/root/.laconicd - ../config/mainnet-laconicd/run-laconicd.sh:/opt/run-laconicd.sh + - ../config/mainnet-laconicd/create-validator.sh:/scripts/create-validator.sh ports: - "6060" - "26657"