From df38d9d0c9aa79d8a08dd02d56c264abfc354406 Mon Sep 17 00:00:00 2001 From: darshankabariya Date: Fri, 18 Jul 2025 01:11:24 +0530 Subject: [PATCH] fix: finalize setup wizard --- setup_wizard.sh | 179 ++++++++++++++++++++++++++++-------------------- 1 file changed, 104 insertions(+), 75 deletions(-) diff --git a/setup_wizard.sh b/setup_wizard.sh index 5963a55..548fa1c 100755 --- a/setup_wizard.sh +++ b/setup_wizard.sh @@ -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 "Couldn’t 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 "Couldn’t 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/)" 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" \ No newline at end of file +read -p "Press ENTER to continue..." foo +echo "> $SUDO docker-compose up -d" +echocol "✅ Node started successfully!" +echocol ""