Skip to content

Commit

Permalink
Adding setup script for Namada as single node
Browse files Browse the repository at this point in the history
  • Loading branch information
jurevans committed Sep 27, 2023
1 parent 50a124a commit 614f0b8
Showing 1 changed file with 136 additions and 0 deletions.
136 changes: 136 additions & 0 deletions scripts/setup-namada-single-node
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
#!/bin/bash

# This script sets up 1 Namada chain locally
# `make build-release` and `make build-wasm-scripts` on Namada directory in advance
# Run with `setup-namada-single-node ${namada_dir}`

set -e

NAMADA_DIR=$1
if [ -z "${NAMADA_DIR}" ]
then
echo "ERROR: Namada directory should be given"
exit 1
fi
cd $(dirname $0)
HERMES_DIR=${PWD%/scripts*}

# edit for your environment
NAMADAC="${NAMADA_DIR}/target/debug/namadac"
NAMADAN="${NAMADA_DIR}/target/debug/namadan"
NAMADAW="${NAMADA_DIR}/target/debug/namadaw"
BASE_GENESIS_PATH="${NAMADA_DIR}/genesis/e2e-tests-single-node.toml"
CHECKSUM_PATH="${NAMADA_DIR}/wasm/checksums.json"
DATA_DIR="${HERMES_DIR}/data"
GENESIS_PATH="${DATA_DIR}/e2e-tests-single-node.toml"

NET_ADDR="127.0.0.1:27656"
LEDGER_ADDR="127.0.0.1:27657"

HERMES_CONFIG_TEMPLATE="
[global]
log_level = 'info'
[mode]
[mode.clients]
enabled = true
refresh = true
misbehaviour = true
[mode.connections]
enabled = false
[mode.channels]
enabled = false
[mode.packets]
enabled = true
clear_interval = 10
clear_on_start = false
tx_confirmation = true
[telemetry]
enabled = false
host = '127.0.0.1'
port = 3001
[[chains]]
id = '_CHAIN_ID_'
type = 'namada'
rpc_addr = 'http://127.0.0.1:27657'
grpc_addr = 'http://127.0.0.1:9090'
event_source = { mode = 'push', url = 'ws://127.0.0.1:27657/websocket', batch_delay = '500ms' }
account_prefix = ''
key_name = 'relayer'
store_prefix = 'ibc'
gas_price = { price = 0.001, denom = 'nam' }
"

function make_genesis() {
sed "s/epochs_per_year = .*/epochs_per_year = 31536/g" \
${BASE_GENESIS_PATH} > ${GENESIS_PATH}
}

function init_network() {
local genesis_path=$1

mkdir -p ${DATA_DIR}/namada
NAMADA_BASE_DIR=${DATA_DIR}/namada/.namada \
${NAMADAC} utils init-network \
--unsafe-dont-encrypt \
--genesis-path ${genesis_path} \
--chain-prefix namada-test \
--localhost \
--dont-archive \
--wasm-checksums-path ${CHECKSUM_PATH} \
| awk '$1 == "Derived" {print $4}'
}

function copy_wasm() {
local chain_id=$1

local base_dir=${DATA_DIR}/namada/.namada

cp ${NAMADA_DIR}/wasm/checksums.json ${base_dir}/${chain_id}/setup/validator-0/.namada/${chain_id}/wasm/
cp ${NAMADA_DIR}/wasm/*.wasm ${base_dir}/${chain_id}/setup/validator-0/.namada/${chain_id}/wasm/
}

function init_relayer_acc() {
local chain_id=$1
local ledger_addr=$2

local base_dir=${DATA_DIR}/namada/.namada
local wallet_dir=${HERMES_DIR}/namada_wallet/${chain_id}

${NAMADAW} --base-dir ${base_dir} \
key gen --alias relayer --unsafe-dont-encrypt

mkdir -p ${wallet_dir}
ln -s ${base_dir}/${chain_id}/wallet.toml ${wallet_dir}
}

# ==== main ====

mkdir -p ${DATA_DIR}

make_genesis
chain_id=$(init_network ${GENESIS_PATH})

copy_wasm ${chain_id}

${NAMADAN} --base-dir ${DATA_DIR}/namada/.namada/${chain_id}/setup/validator-0/.namada/ \
ledger run > ${DATA_DIR}/namada/namada.log 2>&1 &
echo "Namada chain's PID = $!"
sleep 5

init_relayer_acc ${chain_id} ${LEDGER_ADDR}

# for the relayer
cd ${HERMES_DIR}
echo "${HERMES_CONFIG_TEMPLATE}" \
| sed -e "s/_CHAIN_ID_/${chain_id}/g" \
> ${HERMES_DIR}/config_for_namada.toml

echo "A Namada chain is running"
echo "You can use Hermes with ${HERMES_DIR}/config_for_namada.toml"

0 comments on commit 614f0b8

Please sign in to comment.