Prathamesh Musale
324b38cbd4
Part of [laconicd testnet validator enrollment](https://www.notion.so/laconicd-testnet-validator-enrollment-6fc1d3cafcc64fef8c5ed3affa27c675) Co-authored-by: Isha Venikar <145848618+IshaVenikar@users.noreply.github.com> Reviewed-on: cerc-io/testnet-laconicd-stack#9 Co-authored-by: Prathamesh Musale <prathamesh@noreply.git.vdb.to> Co-committed-by: Prathamesh Musale <prathamesh@noreply.git.vdb.to> |
||
---|---|---|
.. | ||
README.md | ||
stack.yml |
testnet-laconicd
Instructions for running a laconicd testnet full node and joining as a validator
Prerequisites
-
Minimum hardware requirements:
RAM: 8-16GB Disk space: 200GB CPU: 2 cores
-
Testnet genesis file (file or an URL) and peer node addresses
Setup
-
Clone the stack repo:
laconic-so fetch-stack git.vdb.to/cerc-io/testnet-laconicd-stack
-
Clone required repositories:
# laconicd laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/testnet-laconicd setup-repositories --pull # laconic cli and console laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-console setup-repositories --pull # If this throws an error as a result of being already checked out to a branch/tag in a repo, remove the repositories and re-run the command
-
Build the container images:
# laconicd laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/testnet-laconicd build-containers # laconic cli and console laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-console build-containers
This should create the following docker images locally:
cerc/laconic2d
cerc/laconic2-registry-cli
cerc/webapp-base
cerc/laconic2-console-host
Create a deployment
-
Create a spec file for the deployment:
laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/testnet-laconicd deploy init --output testnet-laconicd-spec.yml laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-console deploy init --output laconic-console-spec.yml
-
Edit
network
in both the spec files to map container ports to host ports as required:# testnet-laconicd-spec.yml ... network: ports: laconicd: - '6060:6060' - '26657:26657' - '26656:26656' - '9473:9473' - '9090:9090' - '1317:1317' # laconic-console-spec.yml ... network: ports: console: - '8080:80'
-
Create deployments from the spec files:
laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/testnet-laconicd deploy create --spec-file testnet-laconicd-spec.yml --deployment-dir testnet-laconicd-deployment laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-console deploy create --spec-file laconic-console-spec.yml --deployment-dir laconic-console-deployment # Place them both in the same namespace (cluster) cp testnet-laconicd-deployment/deployment.yml laconic-console-deployment/deployment.yml
-
Copy over the published testnet genesis file (
.json
) to data directory in deployment (testnet-laconicd-deployment/data/laconicd-data/tmp
):# Example mkdir -p testnet-laconicd-deployment/data/laconicd-data/tmp cp genesis.json testnet-laconicd-deployment/data/laconicd-data/tmp/genesis.json
Configuration
-
Inside the
testnet-laconicd-deployment
deployment directory, openconfig.env
file and set following env variables:# Comma separated list of nodes to keep persistent connections to # Example: "node-1-id@node-1-host:26656,node-2-id@node-2-host:26656" CERC_PEERS="" # Optional # A custom human readable name for this node (default: TestnetNode) CERC_MONIKER= # Network chain ID (default: laconic_9000-1) CERC_CHAIN_ID= # Output log level (default: info) CERC_LOGLEVEL=
-
Inside the
laconic-console-deployment
deployment directory, openconfig.env
file and set following env variables:# All optional # CLI configuration # laconicd chain id (default: laconic_9000-1) CERC_LACONICD_CHAIN_ID= # laconicd user private key for txs CERC_LACONICD_USER_KEY= # laconicd bond id for txs CERC_LACONICD_BOND_ID= # Gas limit for txs (default: 200000) CERC_LACONICD_GAS= # Max fees for txs (default: 200000photon) CERC_LACONICD_FEES= # Console configuration # Laconicd (hosted) GQL endpoint (default: http://localhost:9473) LACONIC_HOSTED_ENDPOINT=
Note: Use
host.docker.internal
as host to access ports on the host machine
Start the deployments
laconic-so deployment --dir testnet-laconicd-deployment start
laconic-so deployment --dir laconic-console-deployment start
Check status
-
To list down and monitor the running containers:
# With status docker ps -a # Follow logs for laconicd container laconic-so deployment --dir testnet-laconicd-deployment logs laconicd -f
-
Check the sync status of your node:
laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd status | jq .sync_info" # `catching_up: false` indicates that node is completely synced
-
View the laconic console at http://localhost:8080
-
Use the cli service for registry CLI operations:
# Example laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry status"
Join as testnet validator
-
Create / import a new key pair:
# Create new keypair laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd keys add <key-name>" # OR # Restore existing key with mnemonic seed phrase # You will be prompted to enter mnemonic seed laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd keys add <key-name> --recover" # Query the keystore for your account's address laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd keys show <key-name> -a"
-
Request tokens from the testnet faucet for your account if required
-
Check balance for your account:
laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd query bank balances <key-name>"
-
Create required validator configuration:
# Note: # Edit the staking amount and other fields as required # Replace <your-node-moniker> with your node's moniker in command below laconic-so deployment --dir testnet-laconicd-deployment exec laconicd 'cat <<EOF > <your-node-moniker>-validator.json { "pubkey": $(laconicd cometbft show-validator), "amount": "900000000photon", "moniker": "<your-node-moniker>", "commission-rate": "0.1", "commission-max-rate": "0.2", "commission-max-change-rate": "0.01", "min-self-delegation": "1" } EOF'
-
Create a validator:
laconic-so deployment --dir testnet-laconicd-deployment exec laconicd 'laconicd tx staking create-validator <your-node-moniker>-validator.json \ --fees 50photon \ --chain-id=laconic_9000-1 \ --from <key-name>'
-
View your staking validator details:
laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd query staking validator <key-name>"
Perform operations
-
To perform txs against the chain using registry CLI, set your private key in config in the CLI container:
# (Optional) Get the PK from your node laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd keys export <key-name> --unarmored-hex --unsafe" # Set your PK as 'userKey' in the config file laconic-so deployment --dir laconic-console-deployment exec cli "nano config.yml" # services: # registry: # ... # userKey: <your-private-key> # ... # Note: any changes made to the config will be lost when the cli Docker container is brought down # So set / update the values in 'laconic-console-deployment/config.env' accordingly before restarting
-
Adjust / set other config values (
bondId
,gas
,fees
) as required and perform txs:# Example laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry bond create --type photon --quantity 100000000000"
Clean up
-
Stop all
testnet-laconicd
services running in the background:# Stop the docker containers laconic-so deployment --dir testnet-laconicd-deployment stop
-
To stop all services and also delete data:
# Stop the docker containers laconic-so deployment --dir testnet-laconicd-deployment stop --delete-volumes # Remove deployment directory (deployment will have to be recreated for a re-run) rm -r testnet-laconicd-deployment
-
For
laconic-console
, see laconic-console clean up