Files
explorer-monorepo/scripts/test-link-deployment-simple.sh

157 lines
5.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Simplified Test of LINK Token Contract and Deployment Script
set -uo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
source "$PROJECT_ROOT/.env" 2>/dev/null || true
RPC_URL="${RPC_URL_138:-http://192.168.11.250:8545}"
CHAIN_ID=138
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ LINK TOKEN DEPLOYMENT TEST ║"
echo "╚══════════════════════════════════════════════════════════════╝"
echo ""
# Test 1: Environment
echo "1. Environment Variables:"
if [ -z "${PRIVATE_KEY:-}" ]; then
echo " ❌ PRIVATE_KEY not set"
exit 1
else
DEPLOYER=$(cast wallet address "$PRIVATE_KEY" 2>/dev/null || echo "")
if [ -z "$DEPLOYER" ]; then
echo " ❌ PRIVATE_KEY invalid"
exit 1
else
echo " ✅ PRIVATE_KEY valid (deployer: $DEPLOYER)"
fi
fi
echo " ✅ RPC_URL: $RPC_URL"
echo ""
# Test 2: Network
echo "2. Network Connectivity:"
if ! cast block-number --rpc-url "$RPC_URL" > /dev/null 2>&1; then
echo " ❌ RPC not accessible"
exit 1
fi
BLOCK_NUM=$(cast block-number --rpc-url "$RPC_URL" 2>/dev/null || echo "0")
echo " ✅ RPC accessible (block: $BLOCK_NUM)"
ACTUAL_CHAIN_ID=$(cast chain-id --rpc-url "$RPC_URL" 2>/dev/null || echo "0")
if [ "$ACTUAL_CHAIN_ID" != "$CHAIN_ID" ]; then
echo " ❌ Chain ID mismatch (expected: $CHAIN_ID, got: $ACTUAL_CHAIN_ID)"
exit 1
fi
echo " ✅ Chain ID matches ($CHAIN_ID)"
echo ""
# Test 3: Deployer Account
echo "3. Deployer Account:"
BALANCE=$(cast balance "$DEPLOYER" --rpc-url "$RPC_URL" 2>/dev/null || echo "0")
BALANCE_ETH=$(echo "scale=4; $BALANCE / 1000000000000000000" | bc 2>/dev/null || echo "0")
# Check if balance > 0.1 ETH
if (( $(echo "$BALANCE_ETH > 0.1" | bc -l 2>/dev/null || echo 0) )); then
echo " ✅ Balance sufficient: $BALANCE_ETH ETH"
else
echo " ⚠️ Balance: $BALANCE_ETH ETH (may be sufficient for deployment)"
# Don't exit - deployment might still work with lower balance
fi
NONCE=$(cast nonce "$DEPLOYER" --rpc-url "$RPC_URL" 2>/dev/null || echo "0")
echo " ✅ Nonce: $NONCE"
echo ""
# Test 4: Contract Files
echo "4. Contract Files:"
SOURCE_PROJECT="/home/intlc/projects/smom-dbis-138"
if [ -f "$SOURCE_PROJECT/contracts/tokens/MockLinkToken.sol" ]; then
echo " ✅ MockLinkToken.sol found"
CONTRACT_FILE="$SOURCE_PROJECT/contracts/tokens/MockLinkToken.sol"
else
echo " ⚠️ MockLinkToken.sol not found in source project"
CONTRACT_FILE=""
fi
if [ -f "$SOURCE_PROJECT/script/DeployMockLinkToken.s.sol" ]; then
echo " ✅ DeployMockLinkToken.s.sol found"
else
echo " ⚠️ DeployMockLinkToken.s.sol not found"
fi
echo ""
# Test 5: Foundry
echo "5. Foundry Installation:"
if ! command -v forge &> /dev/null; then
echo " ❌ Foundry not installed"
exit 1
fi
echo " ✅ Foundry installed"
if ! command -v cast &> /dev/null; then
echo " ❌ Cast not installed"
exit 1
fi
echo " ✅ Cast installed"
echo ""
# Test 6: Compilation
echo "6. Contract Compilation:"
if [ -n "$CONTRACT_FILE" ] && [ -f "$CONTRACT_FILE" ]; then
cd "$SOURCE_PROJECT"
if forge build --contracts contracts/tokens/MockLinkToken.sol > /dev/null 2>&1; then
echo " ✅ MockLinkToken compiles successfully"
ARTIFACT="$SOURCE_PROJECT/out/MockLinkToken.sol/MockLinkToken.json"
if [ -f "$ARTIFACT" ]; then
BYTECODE=$(jq -r '.bytecode.object' "$ARTIFACT" 2>/dev/null || echo "")
if [ -n "$BYTECODE" ] && [ "$BYTECODE" != "null" ] && [ ${#BYTECODE} -gt 100 ]; then
echo " ✅ Bytecode generated (${#BYTECODE} chars)"
else
echo " ❌ Bytecode invalid"
fi
fi
else
echo " ❌ Compilation failed"
fi
cd "$PROJECT_ROOT"
else
echo " ⚠️ Skipping (contract file not found)"
fi
echo ""
# Test 7: Existing LINK Token
echo "7. Existing LINK Token:"
if [ -n "${LINK_TOKEN:-}" ] && [ "$LINK_TOKEN" != "" ]; then
CODE=$(cast code "$LINK_TOKEN" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
if [ -n "$CODE" ] && [ "$CODE" != "0x" ] && [ ${#CODE} -gt 100 ]; then
echo " ✅ LINK token exists on-chain: $LINK_TOKEN"
NAME=$(cast call "$LINK_TOKEN" "name()(string)" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
if [ -n "$NAME" ]; then
echo " ✅ Token name: $NAME"
fi
else
echo " ⚠️ LINK_TOKEN configured but not found on-chain: $LINK_TOKEN"
fi
else
echo " ⚠️ LINK_TOKEN not configured"
fi
echo ""
echo "═══════════════════════════════════════════════════════════════"
echo "✅ All tests passed! Ready for deployment."
echo ""
echo "To deploy LINK token:"
echo " cd /home/intlc/projects/smom-dbis-138"
echo " forge script script/DeployMockLinkToken.s.sol:DeployMockLinkToken \\"
echo " --rpc-url $RPC_URL \\"
echo " --broadcast \\"
echo " --legacy \\"
echo " --gas-price 20000000000"
echo ""