fix: finalize setup wizard

This commit is contained in:
darshankabariya 2025-07-18 01:11:24 +05:30
parent 1c583fbfc6
commit df38d9d0c9
No known key found for this signature in database
GPG Key ID: 9A92CCD9899F0D22

View File

@ -1,7 +1,59 @@
#!/bin/sh
echocol()
{
COL='\033[0;32m'
NC='\033[0m'
printf "$COL${1}${NC}\n"
}
RLN_CONTRACT_ADDRESS=0xB9cd878C90E49F797B4431fBF4fb333108CB90e6
TOKEN_CONTRACT_ADDRESS=0x185A0015aC462a0aECb81beCc0497b649a64B9ea
REQUIRED_AMOUNT=5
TTT_AMOUNT_WEI=5000000000000000000
mint_tokens() {
echocol ""
echocol "Minting TTT tokens ..."
cast send $TOKEN_CONTRACT_ADDRESS "mint(address,uint256)" \
$ETH_TESTNET_ACCOUNT $TTT_AMOUNT_WEI \
--private-key $ETH_TESTNET_KEY \
--rpc-url $RLN_RELAY_ETH_CLIENT_ADDRESS || {
echocol "❌ Mint transaction failed."
exit 1
}
echocol "✅ Mint complete!"
echocol ""
}
approve_tokens() {
echocol ""
echocol "Approving RLN contract to spend your TTT tokens ..."
cast send $TOKEN_CONTRACT_ADDRESS "approve(address,uint256)" \
$RLN_CONTRACT_ADDRESS $TTT_AMOUNT_WEI \
--private-key $ETH_TESTNET_KEY \
--rpc-url $RLN_RELAY_ETH_CLIENT_ADDRESS || {
echocol "❌ Approve transaction failed."
exit 1
}
echocol "✅ Approval complete!"
echocol ""
}
check_eth_balance() {
# 0.01 ETH in wei
local MIN=10000000000000000
local BAL
BAL=$(cast balance "$ETH_TESTNET_ACCOUNT" --rpc-url "$RLN_RELAY_ETH_CLIENT_ADDRESS" 2>/dev/null | tr -d '[:space:]')
[ -z "$BAL" ] && { echocol "Couldnt fetch ETH balance."; exit 1; }
[ "$BAL" -lt "$MIN" ] && { echocol "Need ≥ 0.01 Sepolia ETH. Top up at https://www.infura.io/faucet/sepolia"; exit 1; }
echocol "✅ You have enough Linea Sepolia ETH to register."
}
if [ -f ./.env ]; then
echocol "'.env' already exists."
echocol ".env file already exists."
read -p "Do you want to delete and regenerate it? (y/N): " RECREATE_ENV
if [ "$RECREATE_ENV" = "y" ] || [ "$RECREATE_ENV" = "Y" ]; then
rm -f ./.env
@ -20,7 +72,7 @@ if [ -f keystore/keystore.json ]; then
echocol "Old keystore/keystore.json removed. Generating a new one..."
else
echocol "Keeping existing keystore/keystore.json. Exiting wizard."
exit 1
fi
fi
if [ -z "$(which docker 2>/dev/null)" ]; then
@ -33,55 +85,15 @@ if [ -z "$(which docker-compose 2>/dev/null)" ]; then
exit 1
fi
echocol()
{
COL='\033[0;32m'
NC='\033[0m'
printf "$COL${1}${NC}\n"
}
mint_tokens() {
echocol "Minting TTT tokens to $ETH_TESTNET_ACCOUNT"
cast send $TOKEN_CONTRACT_ADDRESS "mint(address,uint256)" \
$ETH_TESTNET_ACCOUNT $TTT_AMOUNT_WEI \
--private-key $ETH_TESTNET_KEY \
--rpc-url $RLN_RELAY_ETH_CLIENT_ADDRESS || {
echocol "❌ Mint transaction failed."
exit 1
}
echocol "✅ Mint complete!"
}
approve_tokens() {
echocol "Approving RLN contract to spend your TTT tokens …"
cast send $TOKEN_CONTRACT_ADDRESS "approve(address,uint256)" \
$RLN_CONTRACT_ADDRESS $TTT_AMOUNT_WEI \
--private-key $ETH_TESTNET_KEY \
--rpc-url $RLN_RELAY_ETH_CLIENT_ADDRESS || {
echocol "❌ Approve transaction failed."
exit 1
}
echocol "✅ Approval complete!"
}
check_eth_balance() {
# 0.01 ETH in wei
local MIN=10000000000000000
local BAL
BAL=$(cast balance "$ETH_TESTNET_ACCOUNT" --rpc-url "$RLN_RELAY_ETH_CLIENT_ADDRESS" 2>/dev/null | tr -d '[:space:]')
[ -z "$BAL" ] && { echocol "Couldnt fetch ETH balance."; exit 1; }
[ "$BAL" -lt "$MIN" ] && { echocol "Need ≥ 0.01 Sepolia ETH. Top up at https://www.infura.io/faucet/sepolia"; exit 1; }
echocol "You have enough Linea Sepolia ETH to register."
}
echocol "+----------------------------------------------------------------------------------+"
echocol "| |"
echocol "| nwaku-compose wizard |"
echocol "| |"
echocol "+----------------------------------------------------------------------------------+"
echocol "First, you need a RPC HTTP endpoint for Ethereum Sepolia"
echocol ""
echocol "╔══════════════════════════════════════════════════════════════════════════════╗"
echocol "║ ║"
echocol "║ Welcome to nwaku-compose wizard ║"
echocol "║ ║"
echocol "╚══════════════════════════════════════════════════════════════════════════════╝"
echocol ""
echocol "First, you need a RPC HTTP endpoint for Linea Sepolia"
echocol "If you don't have one, try out https://www.infura.io/ (Expected format is https://linea-sepolia.infura.io/v3/<api key>)"
read -p "RLN_RELAY_ETH_CLIENT_ADDRESS: " RLN_RELAY_ETH_CLIENT_ADDRESS
@ -91,8 +103,8 @@ if [ -z "$RLN_RELAY_ETH_CLIENT_ADDRESS" ] \
exit 1
fi
echocol "...."
echocol "Now enter your SEPOLIA TESTNET account address (should start with 0x and be 42 characters)"
echocol ""
echocol "Now enter your Linea Sepolia Testnet account address (should start with 0x and be 42 characters)"
read -p "ETH_TESTNET_ACCOUNT: " ETH_TESTNET_ACCOUNT
if ! [[ "$ETH_TESTNET_ACCOUNT" =~ ^0x[0-9a-fA-F]{40}$ ]]; then
@ -100,9 +112,12 @@ if ! [[ "$ETH_TESTNET_ACCOUNT" =~ ^0x[0-9a-fA-F]{40}$ ]]; then
exit 1
fi
echocol "...."
echocol ""
echocol "Checking your Linea Sepolia Testnet balance..."
check_eth_balance
echocol "Now enter your SEPOLIA TESTNET private key in hex format 0a...1f without 0x prefix"
echocol ""
echocol "Now enter your Linea Sepolia Testnet private key in hex format 0a...1f without 0x prefix"
read -p "ETH_TESTNET_KEY: " ETH_TESTNET_KEY
if ! [[ "$ETH_TESTNET_KEY" =~ ^[0-9a-fA-F]{64}$ ]]; then
@ -110,12 +125,12 @@ if ! [[ "$ETH_TESTNET_KEY" =~ ^[0-9a-fA-F]{64}$ ]]; then
exit 1
fi
echocol "...."
echocol ""
echocol "Generating a password for the RLN membership keystore file..."
read -p "Press ENTER to continue..." foo
RLN_RELAY_CRED_PASSWORD=$(LC_ALL=C < /dev/urandom tr -dc ',/.;:<>?!@#$%^&*()+\-_A-Z-a-z-0-9' | head -c${1:-16}; echo)
echocol "...."
echocol ""
echocol "Estimating storage size for DB..."
read -p "Press ENTER to continue..." foo
STORAGE_SIZE=$(./set_storage_retention.sh echo-value)
@ -125,7 +140,7 @@ if [ -z "$STORAGE_SIZE" ]; then
exit 1
fi
echocol "...."
echocol ""
echocol "Estimating SHM for Postgres..."
read -p "Press ENTER to continue..." foo
POSTGRES_SHM=$(./set_postgres_shm.sh echo-value)
@ -135,14 +150,18 @@ if [ -z "$POSTGRES_SHM" ]; then
exit 1
fi
echocol "...."
echocol "The following parameters will be saved to your .env file. Press ENTER to confirm or quit with CONTROL-C to abort:"
echo "RLN_RELAY_ETH_CLIENT_ADDRESS='$RLN_RELAY_ETH_CLIENT_ADDRESS'
ETH_TESTNET_KEY=$ETH_TESTNET_KEY
ETH_TESTNET_ACCOUNT=$ETH_TESTNET_ACCOUNT
RLN_RELAY_CRED_PASSWORD='$RLN_RELAY_CRED_PASSWORD'
STORAGE_SIZE=$STORAGE_SIZE
POSTGRES_SHM=$POSTGRES_SHM"
echocol ""
echocol "🔐 Review your credentials and environment configuration below."
echocol "They will be saved to '.env'. Press ENTER to confirm or CONTROL-C to cancel:"
echocol ""
echocol "RLN_RELAY_ETH_CLIENT_ADDRESS: $RLN_RELAY_ETH_CLIENT_ADDRESS"
echocol "ETH_TESTNET_KEY: $ETH_TESTNET_KEY"
echocol "ETH_TESTNET_ACCOUNT: $ETH_TESTNET_ACCOUNT"
echocol "RLN_RELAY_CRED_PASSWORD: $RLN_RELAY_CRED_PASSWORD"
echocol "STORAGE_SIZE: $STORAGE_SIZE"
echocol "POSTGRES_SHM: $POSTGRES_SHM"
read -p "Press ENTER to continue..." foo
echo "RLN_RELAY_ETH_CLIENT_ADDRESS='$RLN_RELAY_ETH_CLIENT_ADDRESS'
@ -152,7 +171,7 @@ RLN_RELAY_CRED_PASSWORD='$RLN_RELAY_CRED_PASSWORD'
STORAGE_SIZE=$STORAGE_SIZE
POSTGRES_SHM=$POSTGRES_SHM" > ./.env
echocol "...."
echocol ""
echocol "Checking your TTT token balance..."
USER_BALANCE_RAW=$(cast call $TOKEN_CONTRACT_ADDRESS "balanceOf(address)(uint256)" $ETH_TESTNET_ACCOUNT --rpc-url $RLN_RELAY_ETH_CLIENT_ADDRESS 2>/dev/null)
USER_BALANCE=$(echo "$USER_BALANCE_RAW" | awk '{print $1}')
@ -164,6 +183,8 @@ if [ -z "$USER_BALANCE" ]; then
fi
echocol "Your current TTT token balance is: $USER_BALANCE"
echocol "Required amount: $REQUIRED_AMOUNT"
echocol ""
if [ "$USER_BALANCE" -ge "$REQUIRED_AMOUNT" ]; then
echocol "You already have enough TTT tokens to register."
@ -189,17 +210,25 @@ fi
echocol "...."
echocol "Registering an RLN membership..."
echocol ""
echocol "🔐 Registering RLN membership..."
read -p "Press ENTER to continue..." foo
if ! $SUDO ./register_rln.sh; then
echocol "###"
echocol "Failed to register RLN membership, usually due to high gas fee"
echocol "Double check you have enough Sepolia eth and run the following command:"
echocol "$SUDO ./register_rln.sh"
echocol "###"
echocol ""
echocol "❌ RLN registration failed. This may be due to high gas fees."
echocol "💡 Make sure you have enough Sepolia ETH and try again with:"
echocol " $SUDO ./register_rln.sh"
echocol ""
exit 1
fi
echocol "...."
echocol ""
echocol "✅ RLN membership registered successfully!"
echocol ""
echocol "Your node is ready! enter the following command to start it:"
echo "> $SUDO docker-compose up -d"
read -p "Press ENTER to continue..." foo
echo "> $SUDO docker-compose up -d"
echocol "✅ Node started successfully!"
echocol ""