Files
smom-dbis-138/scripts/setup-reserve-vault.sh
defiQUG 2a4753eb2d feat: restore operator WIP — PMM JSON sync entrypoint, dotenv RPC trim + secrets, pool env alignment
- Resolve stash: merge load_deployment_env path with secure-secrets and CR/LF RPC strip
- create-pmm-full-mesh-chain138.sh delegates to sync-chain138-pmm-pools-from-json.sh
- env.additions.example: canonical PMM pool defaults (cUSDT/USDT per crosscheck)
- Include Chain138 scripts, official mirror deploy scaffolding, and prior staged changes

Made-with: Cursor
2026-03-27 19:02:30 -07:00

107 lines
3.4 KiB
Bash
Executable File

#!/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"; }
if [[ -f "$SCRIPT_DIR/lib/deployment/dotenv.sh" ]]; then
# shellcheck disable=SC1090
source "$SCRIPT_DIR/lib/deployment/dotenv.sh"
load_deployment_env --repo-root "$PROJECT_ROOT"
elif [ -f "$PROJECT_ROOT/.env" ]; then
set -a && source "$PROJECT_ROOT/.env" && set +a
fi
RPC_URL="${RPC_URL:-${ETHEREUM_MAINNET_RPC:-${ETH_MAINNET_RPC_URL:-}}}"
RPC_URL="${RPC_URL%$'\r'}"
RPC_URL="${RPC_URL%$'\n'}"
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)"