Add initial stack to run mainnet nodes

This commit is contained in:
Shreerang Kale
2025-05-13 15:14:56 +05:30
parent ad22b6350b
commit 44219c801c
8 changed files with 118 additions and 81 deletions
+2
View File
@@ -0,0 +1,2 @@
*-deployment
*-spec.yml
+1 -1
View File
@@ -1 +1 @@
# mainnet-laconicd-stack
# laconicd-stack
@@ -1,25 +0,0 @@
services:
laconicd:
restart: unless-stopped
image: cerc/laconicd:local
command: ["bash", "-c", "/opt/create-gentx.sh"]
environment:
CERC_MONIKER: ${CERC_MONIKER:-TestnetNode}
CERC_CHAIN_ID: ${CERC_CHAIN_ID:-laconic_9000-1}
DENOM: ${DENOM}
KEY_NAME: ${KEY_NAME:-mykey}
PVT_KEY: ${PVT_KEY}
volumes:
- laconicd-data:/root/.laconicd
- ../config/laconicd/create-gentx.sh:/opt/create-gentx.sh
healthcheck:
test: ["CMD", "nc", "-vz", "127.0.0.1", "26657"]
interval: 30s
timeout: 10s
retries: 10
start_period: 10s
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
laconicd-data:
@@ -0,0 +1,35 @@
services:
laconicd:
restart: unless-stopped
image: cerc/laconicd:local
command: ["bash", "-c", "/opt/run-laconicd.sh"]
environment:
CERC_MONIKER: ${CERC_MONIKER:-TestnetNode}
CERC_CHAIN_ID: ${CERC_CHAIN_ID:-laconic_9000-1}
CERC_PEERS: ${CERC_PEERS}
MIN_GAS_PRICE: ${MIN_GAS_PRICE:-0.001}
CERC_LOGLEVEL: ${CERC_LOGLEVEL:-info}
INPUT_GENESIS_FILE: ${INPUT_GENESIS_FILE}
INPUT_NODE_KEY_FILE: ${INPUT_NODE_KEY_FILE}
INPUT_PRIV_VALIDATOR_KEY_FILE: ${INPUT_PRIV_VALIDATOR_KEY_FILE}
volumes:
- laconicd-data:/root/.laconicd
- ../config/laconicd/run-laconicd.sh:/opt/run-laconicd.sh
ports:
- "6060"
- "26657"
- "26656"
- "9473"
- "9090"
- "1317"
healthcheck:
test: ["CMD", "nc", "-vz", "127.0.0.1", "26657"]
interval: 30s
timeout: 10s
retries: 10
start_period: 10s
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
laconicd-data:
@@ -1,55 +0,0 @@
#!/bin/bash
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
set -x
fi
if [ -z "$DENOM" ]; then
echo "DENOM environment variable not set, exiting..."
exit 1
fi
set -e
echo "Env:"
echo "Moniker: $CERC_MONIKER"
echo "Chain Id: $CERC_CHAIN_ID"
echo "Denom: $DENOM"
echo "Key name: $KEY_NAME"
echo "PVT Key: $PVT_KEY"
NODE_HOME=/root/.laconicd
KEYRING=test
# Set chain id in config
laconicd config set client chain-id $CERC_CHAIN_ID --home $NODE_HOME
export CERC_MONIKER=$(echo "$CERC_MONIKER" | sed -e 's/^["'\'']//g' -e 's/["'\'']$//g')
export CERC_CHAIN_ID=$(echo "$CERC_CHAIN_ID" | sed -e 's/^["'\'']//g' -e 's/["'\'']$//g')
export DENOM=$(echo "$DENOM" | sed -e 's/^["'\'']//g' -e 's/["'\'']$//g')
# TODO: Update amounts
BALANCE=100000000000000000000000$DENOM
STAKE_AMOUNT=100000000000000000000$DENOM
# 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
# Support both importing key and generating account
if [ -n "$PVT_KEY" ]; then
# If PVT_KEY is provided, import the key
laconicd keys import-hex "$KEY_NAME" "$PVT_KEY"
else
# If PVT_KEY is not provided, create a new key
laconicd keys add "$KEY_NAME"
fi
laconicd genesis add-genesis-account $KEY_NAME $BALANCE --keyring-backend $KEYRING --home $NODE_HOME
laconicd genesis gentx $KEY_NAME $STAKE_AMOUNT --keyring-backend $KEYRING --home $NODE_HOME
echo "Genesis transaction created successfully..."
# Keep the script running indefinitely
tail -f /dev/null
+71
View File
@@ -0,0 +1,71 @@
#!/bin/bash
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
set -x
fi
set -e
input_genesis_file=$INPUT_GENESIS_FILE
if [ ! -f ${input_genesis_file} ]; then
echo "Genesis file not provided, exiting..."
exit 1
fi
input_node_key_file=$INPUT_NODE_KEY_FILE
if [ ! -f ${input_node_key_file} ]; then
echo "Node key file not provided, exiting..."
exit 1
fi
input_priv_validator_key_file=$INPUT_PRIV_VALIDATOR_KEY_FILE
if [ ! -f ${input_priv_validator_key_file} ]; then
echo "Priv validator key file not provided, exiting..."
exit 1
fi
if [ -z "$CERC_PEERS" ]; then
echo "Persistent peers not provided, exiting..."
exit 1
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"
NODE_HOME=/root/.laconicd
# 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
# Use provided config files
cp $input_genesis_file $NODE_HOME/config/genesis.json
cp $input_node_key_file $NODE_HOME/config/node_key.json
cp $input_priv_validator_key_file $NODE_HOME/config/priv_validator_key.json
else
echo "Node data dir $NODE_HOME/data already exists, skipping initialization..."
fi
# Enable cors
sed -i 's/cors_allowed_origins.*$/cors_allowed_origins = ["*"]/' $NODE_HOME/.laconicd/config/config.toml
# Update config with persistent peers
sed -i "s/^persistent_peers *=.*/persistent_peers = \"$CERC_PEERS\"/g" $NODE_HOME/config/config.toml
echo "Starting laconicd node..."
laconicd start \
--api.enable \
--minimum-gas-prices=${MIN_GAS_PRICE}alnt \
--rpc.laddr="tcp://0.0.0.0:26657" \
--gql-playground --gql-server \
--log_level $CERC_LOGLEVEL \
--home $NODE_HOME
@@ -0,0 +1,9 @@
version: "1.0"
name: mainnet-laconicd
description: "Laconicd full node"
repos:
- git.vdb.to/cerc-io/laconicd@v0.1.11
containers:
- cerc/laconicd
pods:
- mainnet-laconicd