115 lines
3.4 KiB
Bash
115 lines
3.4 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# Phase 1: Environment Setup
|
||
|
|
# This script helps set up the deployment environment
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
echo "=== Phase 1: Environment Setup ==="
|
||
|
|
|
||
|
|
# Check if .env exists
|
||
|
|
if [ ! -f .env ]; then
|
||
|
|
echo "Creating .env file from template..."
|
||
|
|
if [ -f .env.template ]; then
|
||
|
|
cp .env.template .env
|
||
|
|
echo "✓ .env file created from template"
|
||
|
|
echo "⚠️ Please edit .env and fill in all required values"
|
||
|
|
else
|
||
|
|
echo "Error: .env.template not found"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo "✓ .env file already exists"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Load environment variables
|
||
|
|
if [ -f .env ]; then
|
||
|
|
export $(cat .env | grep -v '^#' | grep -v '^$' | xargs)
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Verify required variables
|
||
|
|
REQUIRED_VARS=(
|
||
|
|
"PRIVATE_KEY"
|
||
|
|
"ETHEREUM_MAINNET_RPC"
|
||
|
|
"RPC_URL_138"
|
||
|
|
"ETHERSCAN_API_KEY"
|
||
|
|
)
|
||
|
|
|
||
|
|
MISSING_VARS=()
|
||
|
|
for var in "${REQUIRED_VARS[@]}"; do
|
||
|
|
if [ -z "${!var}" ] || [ "${!var}" == "0x..." ] || [ "${!var}" == "your_etherscan_api_key" ]; then
|
||
|
|
MISSING_VARS+=("$var")
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
|
||
|
|
if [ ${#MISSING_VARS[@]} -gt 0 ]; then
|
||
|
|
echo ""
|
||
|
|
echo "⚠️ Missing or incomplete required variables:"
|
||
|
|
for var in "${MISSING_VARS[@]}"; do
|
||
|
|
echo " - $var"
|
||
|
|
done
|
||
|
|
echo ""
|
||
|
|
echo "Please edit .env and fill in all required values"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "--- Verifying RPC Endpoints ---"
|
||
|
|
|
||
|
|
# Verify Ethereum Mainnet RPC
|
||
|
|
if command -v cast &> /dev/null; then
|
||
|
|
echo "Checking Ethereum Mainnet RPC..."
|
||
|
|
BLOCK_NUMBER=$(cast block-number --rpc-url "$ETHEREUM_MAINNET_RPC" 2>/dev/null || echo "0")
|
||
|
|
if [ "$BLOCK_NUMBER" != "0" ]; then
|
||
|
|
echo "✓ Ethereum Mainnet RPC accessible (block: $BLOCK_NUMBER)"
|
||
|
|
else
|
||
|
|
echo "✗ Ethereum Mainnet RPC not accessible"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Verify ChainID 138 RPC
|
||
|
|
echo "Checking ChainID 138 RPC..."
|
||
|
|
if [ ! -z "$RPC_URL_138" ] && [ "$RPC_URL_138" != "http://chain138.example.com:8545" ]; then
|
||
|
|
BLOCK_NUMBER_138=$(cast block-number --rpc-url "$RPC_URL_138" 2>/dev/null || echo "0")
|
||
|
|
if [ "$BLOCK_NUMBER_138" != "0" ]; then
|
||
|
|
echo "✓ ChainID 138 RPC accessible (block: $BLOCK_NUMBER_138)"
|
||
|
|
else
|
||
|
|
echo "⚠️ ChainID 138 RPC not accessible (may not be deployed yet)"
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo "⚠️ ChainID 138 RPC not configured"
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo "⚠️ cast command not found. Install foundry to verify RPC endpoints."
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "--- Checking ETH Balance ---"
|
||
|
|
|
||
|
|
if command -v cast &> /dev/null; then
|
||
|
|
DEPLOYER_ADDRESS=$(cast wallet address $PRIVATE_KEY 2>/dev/null || echo "")
|
||
|
|
if [ ! -z "$DEPLOYER_ADDRESS" ]; then
|
||
|
|
BALANCE=$(cast balance "$DEPLOYER_ADDRESS" --rpc-url "$ETHEREUM_MAINNET_RPC" 2>/dev/null || echo "0")
|
||
|
|
BALANCE_ETH=$(cast --to-unit "$BALANCE" ether 2>/dev/null || echo "0")
|
||
|
|
echo "Deployer address: $DEPLOYER_ADDRESS"
|
||
|
|
echo "Balance: $BALANCE_ETH ETH"
|
||
|
|
|
||
|
|
MIN_BALANCE=5
|
||
|
|
if (( $(echo "$BALANCE_ETH < $MIN_BALANCE" | bc -l) )); then
|
||
|
|
echo "⚠️ Balance is less than recommended minimum ($MIN_BALANCE ETH)"
|
||
|
|
echo " Recommended: 5-10 ETH for deployment"
|
||
|
|
else
|
||
|
|
echo "✓ Sufficient ETH balance for deployment"
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo "⚠️ Could not derive address from PRIVATE_KEY"
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo "⚠️ cast command not found. Install foundry to check balance."
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "=== Phase 1 Complete ==="
|
||
|
|
echo "Environment is ready for deployment"
|
||
|
|
|