104 lines
3.3 KiB
Bash
104 lines
3.3 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# Setup script for StablecoinReserveVault
|
||
|
|
# Configures and funds the reserve vault with official tokens
|
||
|
|
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||
|
|
|
||
|
|
# Colors
|
||
|
|
RED='\033[0;31m'
|
||
|
|
GREEN='\033[0;32m'
|
||
|
|
YELLOW='\033[1;33m'
|
||
|
|
BLUE='\033[0;34m'
|
||
|
|
NC='\033[0m'
|
||
|
|
|
||
|
|
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
||
|
|
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
|
||
|
|
log_warn() { echo -e "${YELLOW}[⚠]${NC} $1"; }
|
||
|
|
log_error() { echo -e "${RED}[✗]${NC} $1"; }
|
||
|
|
|
||
|
|
# Load environment variables
|
||
|
|
if [ -f "$PROJECT_ROOT/.env" ]; then
|
||
|
|
source "$PROJECT_ROOT/.env"
|
||
|
|
elif [ -f "$PROJECT_ROOT/smom-dbis-138/.env" ]; then
|
||
|
|
source "$PROJECT_ROOT/smom-dbis-138/.env"
|
||
|
|
fi
|
||
|
|
|
||
|
|
RPC_URL="${RPC_URL:-${ETH_MAINNET_RPC_URL:-}}"
|
||
|
|
VAULT_ADDRESS="${STABLECOIN_RESERVE_VAULT_ADDRESS:-}"
|
||
|
|
OFFICIAL_USDT="${OFFICIAL_USDT_ADDRESS:-0xdAC17F958D2ee523a2206206994597C13D831ec7}"
|
||
|
|
OFFICIAL_USDC="${OFFICIAL_USDC_ADDRESS:-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48}"
|
||
|
|
|
||
|
|
if [ -z "$RPC_URL" ]; then
|
||
|
|
log_error "RPC_URL not set. Please set ETH_MAINNET_RPC_URL or RPC_URL"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ -z "$VAULT_ADDRESS" ]; then
|
||
|
|
log_error "STABLECOIN_RESERVE_VAULT_ADDRESS not set"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ -z "$PRIVATE_KEY" ]; then
|
||
|
|
log_error "PRIVATE_KEY not set"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
log_info "========================================="
|
||
|
|
log_info "StablecoinReserveVault Setup"
|
||
|
|
log_info "========================================="
|
||
|
|
log_info ""
|
||
|
|
log_info "Vault Address: $VAULT_ADDRESS"
|
||
|
|
log_info "Official USDT: $OFFICIAL_USDT"
|
||
|
|
log_info "Official USDC: $OFFICIAL_USDC"
|
||
|
|
log_info "RPC URL: $RPC_URL"
|
||
|
|
log_info ""
|
||
|
|
|
||
|
|
# Check vault status
|
||
|
|
log_info "Checking vault status..."
|
||
|
|
USDT_RESERVE=$(cast call "$VAULT_ADDRESS" "usdtReserveBalance()" --rpc-url "$RPC_URL" 2>/dev/null | cast --to-dec 2>/dev/null || echo "0")
|
||
|
|
USDC_RESERVE=$(cast call "$VAULT_ADDRESS" "usdcReserveBalance()" --rpc-url "$RPC_URL" 2>/dev/null | cast --to-dec 2>/dev/null || echo "0")
|
||
|
|
PAUSED=$(cast call "$VAULT_ADDRESS" "paused()" --rpc-url "$RPC_URL" 2>/dev/null | cast --to-dec 2>/dev/null || echo "false")
|
||
|
|
|
||
|
|
log_info "Current USDT Reserve: $USDT_RESERVE"
|
||
|
|
log_info "Current USDC Reserve: $USDC_RESERVE"
|
||
|
|
log_info "Paused Status: $PAUSED"
|
||
|
|
|
||
|
|
if [ "$PAUSED" = "1" ] || [ "$PAUSED" = "true" ]; then
|
||
|
|
log_warn "Vault is paused. Operations are disabled."
|
||
|
|
read -p "Do you want to unpause? (y/n) " -n 1 -r
|
||
|
|
echo
|
||
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||
|
|
log_info "Unpausing vault..."
|
||
|
|
cast send "$VAULT_ADDRESS" \
|
||
|
|
"unpause()" \
|
||
|
|
--rpc-url "$RPC_URL" \
|
||
|
|
--private-key "$PRIVATE_KEY" \
|
||
|
|
--gas-price 30000000000 \
|
||
|
|
--legacy
|
||
|
|
log_success "Vault unpaused"
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
log_info ""
|
||
|
|
log_info "To fund the vault:"
|
||
|
|
log_info "1. Approve tokens to vault:"
|
||
|
|
log_info " cast send $OFFICIAL_USDT \\"
|
||
|
|
log_info " \"approve(address,uint256)\" \\"
|
||
|
|
log_info " $VAULT_ADDRESS \\"
|
||
|
|
log_info " <amount> \\"
|
||
|
|
log_info " --rpc-url $RPC_URL \\"
|
||
|
|
log_info " --private-key \$PRIVATE_KEY"
|
||
|
|
log_info ""
|
||
|
|
log_info "2. Deposit USDT:"
|
||
|
|
log_info " cast send $VAULT_ADDRESS \\"
|
||
|
|
log_info " \"depositUSDT(uint256)\" \\"
|
||
|
|
log_info " <amount> \\"
|
||
|
|
log_info " --rpc-url $RPC_URL \\"
|
||
|
|
log_info " --private-key \$PRIVATE_KEY"
|
||
|
|
log_info ""
|
||
|
|
log_info "3. Deposit USDC (similar for USDC)"
|
||
|
|
|