Files
smom-dbis-138/scripts/mint-100-tokens.sh
2026-03-02 12:14:09 -08:00

139 lines
4.8 KiB
Bash
Executable File

#!/bin/bash
# Mint 100 cUSDT and 100 cUSDC to a wallet address
# Usage: ./mint-100-tokens.sh
set -e
# Colors
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
# Change to script directory
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR/.." || exit 1
# Load .env
if [ -f .env ]; then
set -a
source .env
set +a
fi
# Try to use RPC_URL_138 first (if available), then RPC_URL, then fallback to public endpoint
if [ -n "$RPC_URL_138" ]; then
RPC_URL="$RPC_URL_138"
elif [ -n "$RPC_URL" ]; then
# Keep RPC_URL as is
:
else
RPC_URL="https://rpc-http-pub.d-bis.org"
fi
# Test RPC connectivity and fallback if needed
if ! curl -s -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
--max-time 3 "$RPC_URL" > /dev/null 2>&1; then
echo -e "${YELLOW}RPC endpoint not accessible, trying alternative...${NC}"
if [ "$RPC_URL" != "http://192.168.11.211:8545" ]; then
RPC_URL="http://192.168.11.211:8545"
else
RPC_URL="https://rpc-http-pub.d-bis.org"
fi
fi
# Token addresses (from .env or defaults)
COMPLIANT_USDT_ADDRESS=${COMPLIANT_USDT_ADDRESS:-"0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"}
COMPLIANT_USDC_ADDRESS=${COMPLIANT_USDC_ADDRESS:-"0xf22258f57794CC8E06237084b353Ab30fFfa640b"}
# Recipient address
RECIPIENT="0xc2D6E6981D1A415967A683D615cf97bA9bC26F0f"
# Amount: 100 tokens with 6 decimals = 100000000
AMOUNT="100000000"
echo -e "${BLUE}╔══════════════════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ Mint 100 cUSDT and 100 cUSDC ║${NC}"
echo -e "${BLUE}╚══════════════════════════════════════════════════════════════╝${NC}"
echo ""
if [ -z "$PRIVATE_KEY" ]; then
echo -e "${RED}Error: PRIVATE_KEY not set${NC}"
exit 1
fi
DEPLOYER=$(cast wallet address --private-key "$PRIVATE_KEY" 2>/dev/null)
echo -e "${BLUE}Deployer Address:${NC} $DEPLOYER"
echo -e "${BLUE}Recipient Address:${NC} $RECIPIENT"
echo -e "${BLUE}Amount:${NC} 100 tokens (each)"
echo ""
# Mint cUSDT directly to recipient
echo -e "${YELLOW}Minting 100 cUSDT to recipient...${NC}"
TX_OUTPUT=$(cast send "$COMPLIANT_USDT_ADDRESS" \
"mint(address,uint256)" \
"$RECIPIENT" \
"$AMOUNT" \
--rpc-url "$RPC_URL" \
--private-key "$PRIVATE_KEY" \
--legacy \
--gas-price 20000000000 \
2>&1)
if echo "$TX_OUTPUT" | grep -qE "transactionHash"; then
TX_HASH=$(echo "$TX_OUTPUT" | grep -oE "transactionHash[[:space:]]+0x[0-9a-fA-F]{64}" | awk '{print $2}')
echo -e "${GREEN}✓ cUSDT mint successful${NC}"
echo " Transaction Hash: $TX_HASH"
else
echo -e "${RED}✗ cUSDT mint failed${NC}"
echo "$TX_OUTPUT"
exit 1
fi
echo ""
# Mint cUSDC directly to recipient
echo -e "${YELLOW}Minting 100 cUSDC to recipient...${NC}"
TX_OUTPUT=$(cast send "$COMPLIANT_USDC_ADDRESS" \
"mint(address,uint256)" \
"$RECIPIENT" \
"$AMOUNT" \
--rpc-url "$RPC_URL" \
--private-key "$PRIVATE_KEY" \
--legacy \
--gas-price 20000000000 \
2>&1)
if echo "$TX_OUTPUT" | grep -qE "transactionHash"; then
TX_HASH=$(echo "$TX_OUTPUT" | grep -oE "transactionHash[[:space:]]+0x[0-9a-fA-F]{64}" | awk '{print $2}')
echo -e "${GREEN}✓ cUSDC mint successful${NC}"
echo " Transaction Hash: $TX_HASH"
else
echo -e "${RED}✗ cUSDC mint failed${NC}"
echo "$TX_OUTPUT"
exit 1
fi
echo ""
# Verify mints
echo -e "${YELLOW}Verifying mints...${NC}"
sleep 3
RECIPIENT_CUSDT=$(cast call "$COMPLIANT_USDT_ADDRESS" "balanceOf(address)" "$RECIPIENT" --rpc-url "$RPC_URL" 2>/dev/null || echo "0")
RECIPIENT_CUSDC=$(cast call "$COMPLIANT_USDC_ADDRESS" "balanceOf(address)" "$RECIPIENT" --rpc-url "$RPC_URL" 2>/dev/null || echo "0")
RECIPIENT_CUSDT_DISPLAY=$(echo "scale=2; $RECIPIENT_CUSDT / 1000000" | bc 2>/dev/null || echo "0")
RECIPIENT_CUSDC_DISPLAY=$(echo "scale=2; $RECIPIENT_CUSDC / 1000000" | bc 2>/dev/null || echo "0")
echo " Recipient cUSDT Balance: $RECIPIENT_CUSDT_DISPLAY tokens"
echo " Recipient cUSDC Balance: $RECIPIENT_CUSDC_DISPLAY tokens"
echo ""
echo -e "${GREEN}╔══════════════════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ Minting Complete! ║${NC}"
echo -e "${GREEN}╚══════════════════════════════════════════════════════════════╝${NC}"