Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
171 lines
5.9 KiB
Bash
Executable File
171 lines
5.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Mint LINK, cUSDT, cUSDC to deployment wallet; optionally wrap ETH to WETH9/WETH10.
|
|
# Usage: ./scripts/mint-tokens-for-deployer.sh [--amount-link N] [--amount-stable N] [--wrap-eth N] [--dry-run]
|
|
#
|
|
# Defaults: 1000000 LINK (18 decimals), 100000 cUSDT + 100000 cUSDC (6 decimals each), 1 ETH wrap.
|
|
# Requires: PRIVATE_KEY, RPC_URL_138 in smom-dbis-138/.env
|
|
# Chain 138: use --gas-price 1000000000 (1 gwei) for all txs.
|
|
#
|
|
# If you get "Replacement transaction underpriced": a stuck tx is blocking the deployer nonce.
|
|
# Workarounds: (1) Wait for the stuck tx to be mined, (2) Use MetaMask to send a 0-ETH tx to clear,
|
|
# (3) Restart Besu RPC and flush mempool from Proxmox host.
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
cd "$PROJECT_ROOT"
|
|
|
|
# Load smom-dbis-138 .env
|
|
if [[ -f smom-dbis-138/.env ]]; then
|
|
set -a
|
|
source smom-dbis-138/.env
|
|
set +a
|
|
fi
|
|
|
|
RPC="${RPC_URL_138:-${CHAIN138_RPC_URL:-http://192.168.11.211:8545}}"
|
|
GAS_PRICE="${GAS_PRICE:-1000000000}"
|
|
GAS_LIMIT="${GAS_LIMIT:-100000}"
|
|
|
|
# Token addresses (Chain 138)
|
|
LINK="0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03"
|
|
CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
|
CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
|
WETH9="0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
|
|
WETH10="0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f"
|
|
|
|
# Default amounts
|
|
AMOUNT_LINK="${AMOUNT_LINK:-1000000}"
|
|
AMOUNT_STABLE="${AMOUNT_STABLE:-100000}"
|
|
WRAP_ETH="${WRAP_ETH:-1}"
|
|
DRY_RUN=false
|
|
|
|
for a in "$@"; do
|
|
case "$a" in
|
|
--amount-link=*) AMOUNT_LINK="${a#*=}";;
|
|
--amount-stable=*) AMOUNT_STABLE="${a#*=}";;
|
|
--wrap-eth=*) WRAP_ETH="${a#*=}";;
|
|
--dry-run) DRY_RUN=true;;
|
|
esac
|
|
done
|
|
|
|
DEPLOYER=""
|
|
if [[ -n "${PRIVATE_KEY:-}" ]]; then
|
|
DEPLOYER=$(cast wallet address --private-key "$PRIVATE_KEY" 2>/dev/null || true)
|
|
fi
|
|
if [[ -z "$DEPLOYER" ]]; then
|
|
DEPLOYER="${DEPLOYER_ADDRESS:-0x4A666F96fC8764181194447A7dFdb7d471b301C8}"
|
|
fi
|
|
|
|
LINK_RAW="${AMOUNT_LINK}000000000000000000" # 18 decimals
|
|
STABLE_RAW="${AMOUNT_STABLE}000000" # 6 decimals
|
|
# 1 ETH = 10^18 wei
|
|
WRAP_WEI=$(awk "BEGIN {printf \"%.0f\", ${WRAP_ETH} * 1000000000000000000}" 2>/dev/null || echo "1000000000000000000")
|
|
|
|
echo "=== Mint tokens for deployer ==="
|
|
echo "Deployer: $DEPLOYER"
|
|
echo "RPC: $RPC"
|
|
echo "Amounts: LINK=$AMOUNT_LINK, cUSDT/cUSDC=$AMOUNT_STABLE each, wrap ETH=$WRAP_ETH"
|
|
echo ""
|
|
|
|
run_tx() {
|
|
local desc="$1"
|
|
shift
|
|
if $DRY_RUN; then
|
|
echo "[dry-run] Would run: $*"
|
|
return 0
|
|
fi
|
|
echo "Running: $desc ..."
|
|
if "$@" 2>&1; then
|
|
echo " OK"
|
|
return 0
|
|
else
|
|
echo " FAILED"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
if [[ -z "${PRIVATE_KEY:-}" ]] && ! $DRY_RUN; then
|
|
echo "Error: PRIVATE_KEY not set in smom-dbis-138/.env"
|
|
exit 1
|
|
fi
|
|
|
|
# 1. Mint LINK (MockLinkToken has unrestricted mint)
|
|
echo "1. Mint LINK to deployer..."
|
|
if $DRY_RUN; then
|
|
echo " [dry-run] cast send $LINK \"mint(address,uint256)\" $DEPLOYER $LINK_RAW --rpc-url \$RPC --private-key \$PRIVATE_KEY --legacy --gas-price $GAS_PRICE"
|
|
else
|
|
if cast send "$LINK" "mint(address,uint256)" "$DEPLOYER" "$LINK_RAW" \
|
|
--rpc-url "$RPC" --private-key "$PRIVATE_KEY" --legacy --gas-limit "$GAS_LIMIT" --gas-price "$GAS_PRICE" 2>&1; then
|
|
echo " OK"
|
|
else
|
|
echo " (LINK may not have mint or different interface)"
|
|
fi
|
|
fi
|
|
echo ""
|
|
|
|
# 2. Mint cUSDT (onlyOwner - deployer must be owner)
|
|
echo "2. Mint cUSDT to deployer..."
|
|
if $DRY_RUN; then
|
|
echo " [dry-run] cast send $CUSDT \"mint(address,uint256)\" $DEPLOYER $STABLE_RAW --rpc-url \$RPC --private-key \$PRIVATE_KEY --legacy --gas-price $GAS_PRICE"
|
|
else
|
|
if cast send "$CUSDT" "mint(address,uint256)" "$DEPLOYER" "$STABLE_RAW" \
|
|
--rpc-url "$RPC" --private-key "$PRIVATE_KEY" --legacy --gas-limit "$GAS_LIMIT" --gas-price "$GAS_PRICE" 2>&1; then
|
|
echo " OK"
|
|
else
|
|
echo " (Deployer may not be owner of cUSDT)"
|
|
fi
|
|
fi
|
|
echo ""
|
|
|
|
# 3. Mint cUSDC (onlyOwner)
|
|
echo "3. Mint cUSDC to deployer..."
|
|
if $DRY_RUN; then
|
|
echo " [dry-run] cast send $CUSDC \"mint(address,uint256)\" $DEPLOYER $STABLE_RAW --rpc-url \$RPC --private-key \$PRIVATE_KEY --legacy --gas-price $GAS_PRICE"
|
|
else
|
|
if cast send "$CUSDC" "mint(address,uint256)" "$DEPLOYER" "$STABLE_RAW" \
|
|
--rpc-url "$RPC" --private-key "$PRIVATE_KEY" --legacy --gas-limit "$GAS_LIMIT" --gas-price "$GAS_PRICE" 2>&1; then
|
|
echo " OK"
|
|
else
|
|
echo " (Deployer may not be owner of cUSDC)"
|
|
fi
|
|
fi
|
|
echo ""
|
|
|
|
# 4. Wrap ETH to WETH9 (if WRAP_ETH > 0)
|
|
if [[ "${WRAP_ETH:-0}" != "0" ]] && [[ -n "${WRAP_WEI:-}" ]]; then
|
|
echo "4. Wrap $WRAP_ETH ETH to WETH9..."
|
|
if $DRY_RUN; then
|
|
echo " [dry-run] cast send $WETH9 \"deposit()\" --value $WRAP_WEI --rpc-url \$RPC --private-key \$PRIVATE_KEY --legacy --gas-price $GAS_PRICE"
|
|
else
|
|
if cast send "$WETH9" "deposit()" --value "$WRAP_WEI" \
|
|
--rpc-url "$RPC" --private-key "$PRIVATE_KEY" --legacy --gas-limit "$GAS_LIMIT" --gas-price "$GAS_PRICE" 2>&1; then
|
|
echo " OK"
|
|
else
|
|
echo " (Insufficient ETH balance?)"
|
|
fi
|
|
fi
|
|
echo ""
|
|
fi
|
|
|
|
# 5. Wrap ETH to WETH10 (optional, same amount)
|
|
if [[ "${WRAP_ETH:-0}" != "0" ]] && [[ -n "${WRAP_WEI:-}" ]]; then
|
|
echo "5. Wrap $WRAP_ETH ETH to WETH10..."
|
|
if $DRY_RUN; then
|
|
echo " [dry-run] cast send $WETH10 \"deposit()\" --value $WRAP_WEI --rpc-url \$RPC --private-key \$PRIVATE_KEY --legacy --gas-price $GAS_PRICE"
|
|
else
|
|
if cast send "$WETH10" "deposit()" --value "$WRAP_WEI" \
|
|
--rpc-url "$RPC" --private-key "$PRIVATE_KEY" --legacy --gas-limit "$GAS_LIMIT" --gas-price "$GAS_PRICE" 2>&1; then
|
|
echo " OK"
|
|
else
|
|
echo " (Insufficient ETH balance?)"
|
|
fi
|
|
fi
|
|
echo ""
|
|
fi
|
|
|
|
echo "=== Done ==="
|
|
if ! $DRY_RUN; then
|
|
echo "Verify balances: cd smom-dbis-138 && ./scripts/deployment/list-deployer-tokens-all-networks.sh"
|
|
fi
|