Add steps to configure TMKMS in node deployments (#4)

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>
This commit was merged in pull request #4.
This commit is contained in:
2025-05-20 13:55:15 +00:00
committed by nabarun
parent 3d7ba45796
commit 40ac26bd78
12 changed files with 570 additions and 53 deletions
@@ -9,12 +9,15 @@ services:
CERC_PEERS: ${CERC_PEERS}
MIN_GAS_PRICE: ${MIN_GAS_PRICE:-0.001}
CERC_LOGLEVEL: ${CERC_LOGLEVEL:-info}
TMKMS_ENABLED: ${TMKMS_ENABLED:-false}
volumes:
- laconicd-data:/root/.laconicd
- ../config/mainnet-laconicd/run-laconicd.sh:/opt/run-laconicd.sh
- ../config/mainnet-laconicd/setup-laconicd.sh:/scripts/setup-laconicd.sh
- ../config/mainnet-laconicd/create-validator.sh:/scripts/create-validator.sh
ports:
- "6060"
- "26659"
- "26657"
- "26656"
- "9473"
@@ -4,7 +4,6 @@ set -e
NODE_HOME=/root/.laconicd
genesis_file_path=$NODE_HOME/config/genesis.json
# TODO: Set to OS keyring backend
KEYRING="test"
if [ -f "$genesis_file_path" ]; then
@@ -45,6 +44,9 @@ laconicd config set client chain-id $CHAIN_ID --home $NODE_HOME
laconicd config set client keyring-backend $KEYRING
laconicd init $MONIKER --chain-id=$CHAIN_ID --home $NODE_HOME
# Make config directory accessible without root permissions in docker host
chmod -R 777 $NODE_HOME/config
# Copy over provided genesis config
cp $input_genesis_file $genesis_file_path
@@ -15,23 +15,12 @@ if [ ! -f ${input_genesis_file} ]; then
fi
echo "Env:"
echo "Moniker: $CERC_MONIKER"
echo "Chain Id: $CERC_CHAIN_ID"
echo "Persistent peers: $CERC_PEERS"
echo "Min gas price: $MIN_GAS_PRICE"
echo "Log level: $CERC_LOGLEVEL"
echo "TMKMS enabled: $TMKMS_ENABLED"
# Set chain id in config
laconicd config set client chain-id $CERC_CHAIN_ID --home $NODE_HOME
# Check if node data dir already exists
if [ -z "$(ls -A "$NODE_HOME/data")" ]; then
# Init node
echo "Initializing a new laconicd node with moniker $CERC_MONIKER and chain id $CERC_CHAIN_ID"
laconicd init $CERC_MONIKER --chain-id=$CERC_CHAIN_ID --home $NODE_HOME
else
echo "Node data dir $NODE_HOME/data already exists, skipping initialization..."
fi
/scripts/setup-laconicd.sh
# Use provided config files
cp $input_genesis_file $NODE_HOME/config/genesis.json
@@ -39,6 +28,17 @@ cp $input_genesis_file $NODE_HOME/config/genesis.json
# Enable cors
sed -i 's/cors_allowed_origins.*$/cors_allowed_origins = ["*"]/' $NODE_HOME/config/config.toml
if [[ "${TMKMS_ENABLED,,}" == "true" ]]; then
# Configure private validator for external tmkms
sed -i "s/^priv_validator_laddr *=.*/priv_validator_laddr = \"tcp:\/\/0.0.0.0:26659\"/" $NODE_HOME/config/config.toml
# Comment out validator key files when using external TMKMS
sed -i 's/^priv_validator_key_file =/# priv_validator_key_file =/' $NODE_HOME/config/config.toml
sed -i 's/^priv_validator_state_file =/# priv_validator_state_file =/' $NODE_HOME/config/config.toml
else
echo "Warning: TMKMS disabled, node will run with local validator keys"
fi
# Update config with persistent peers
sed -i "s/^persistent_peers *=.*/persistent_peers = \"$CERC_PEERS\"/g" $NODE_HOME/config/config.toml
@@ -0,0 +1,29 @@
#!/bin/bash
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
set -x
fi
set -e
NODE_HOME=/root/.laconicd
echo "Env:"
echo "Moniker: $CERC_MONIKER"
echo "Chain Id: $CERC_CHAIN_ID"
# Set chain id in config
laconicd config set client chain-id $CERC_CHAIN_ID --home $NODE_HOME
# Check if node data dir already exists
if [ -z "$(ls -A "$NODE_HOME/data")" ]; then
# Init node
echo "Initializing a new laconicd node with moniker $CERC_MONIKER and chain id $CERC_CHAIN_ID"
laconicd init $CERC_MONIKER --chain-id=$CERC_CHAIN_ID --home $NODE_HOME
# Make config directory accessible without root permissions in docker host
chmod -R 777 $NODE_HOME/config
else
echo "Node data dir $NODE_HOME/data already exists, skipping initialization..."
fi