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
This commit is contained in:
@@ -1,66 +1,83 @@
|
||||
#!/usr/bin/env bash
|
||||
# Execute bridge destination configuration
|
||||
# Execute WETH9/WETH10 bridge addDestination both directions: Ethereum mainnet ↔ Chain 138.
|
||||
# Requires .env with bridge addresses and PRIVATE_KEY.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "$SCRIPT_DIR/../lib/init.sh"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||
cd "$PROJECT_ROOT"
|
||||
|
||||
|
||||
log_info "=== Executing Bridge Configuration ==="
|
||||
|
||||
# Load environment
|
||||
if [ -f "$PROJECT_ROOT/.env" ]; then
|
||||
source "$PROJECT_ROOT/.env"
|
||||
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:-$REPO_ROOT}"
|
||||
elif [[ -n "${PROJECT_ROOT:-}" && -f "$PROJECT_ROOT/.env" ]]; then
|
||||
set -a
|
||||
# shellcheck disable=SC1090
|
||||
source "$PROJECT_ROOT/.env"
|
||||
set +a
|
||||
fi
|
||||
|
||||
log_info "=== Executing bridge configuration (Mainnet ↔ Chain 138) ==="
|
||||
|
||||
MAINNET_RPC="${ETHEREUM_MAINNET_RPC:-https://eth.llamarpc.com}"
|
||||
CHAIN138_RPC="${RPC_URL:-https://rpc.d-bis.org}"
|
||||
PRIVATE_KEY="${PRIVATE_KEY}"
|
||||
if [[ ! "$PRIVATE_KEY" =~ ^0x ]]; then
|
||||
PRIVATE_KEY="0x$PRIVATE_KEY"
|
||||
MAINNET_RPC="${MAINNET_RPC%$'\r'}"
|
||||
MAINNET_RPC="${MAINNET_RPC%$'\n'}"
|
||||
CHAIN138_RPC="${RPC_URL_138:-${CHAIN138_RPC:-http://192.168.11.211:8545}}"
|
||||
CHAIN138_RPC="${CHAIN138_RPC%$'\r'}"
|
||||
CHAIN138_RPC="${CHAIN138_RPC%$'\n'}"
|
||||
|
||||
PRIVATE_KEY="${PRIVATE_KEY:-}"
|
||||
[[ -n "$PRIVATE_KEY" && ! "$PRIVATE_KEY" =~ ^0x ]] && PRIVATE_KEY="0x$PRIVATE_KEY"
|
||||
|
||||
WETH9_MAINNET=$(grep "CCIPWETH9_BRIDGE_MAINNET=" "$PROJECT_ROOT/.env" 2>/dev/null | cut -d'=' -f2 | tr -d ' "\r\n' || echo "${CCIPWETH9_BRIDGE_MAINNET:-}")
|
||||
WETH10_MAINNET=$(grep "CCIPWETH10_BRIDGE_MAINNET=" "$PROJECT_ROOT/.env" 2>/dev/null | cut -d'=' -f2 | tr -d ' "\r\n' || echo "${CCIPWETH10_BRIDGE_MAINNET:-}")
|
||||
WETH9_CHAIN138=$(grep "CCIPWETH9_BRIDGE_CHAIN138=" "$PROJECT_ROOT/.env" 2>/dev/null | cut -d'=' -f2 | tr -d ' "\r\n' || echo "${CCIPWETH9_BRIDGE_CHAIN138:-}")
|
||||
WETH10_CHAIN138=$(grep "CCIPWETH10_BRIDGE_CHAIN138=" "$PROJECT_ROOT/.env" 2>/dev/null | cut -d'=' -f2 | tr -d ' "\r\n' || echo "${CCIPWETH10_BRIDGE_CHAIN138:-}")
|
||||
|
||||
CHAIN138_SELECTOR="${CHAIN138_SELECTOR:-138}"
|
||||
ETH_SELECTOR="${ETH_MAINNET_SELECTOR:-5009297550715157269}"
|
||||
|
||||
WETH9_MAINNET="${WETH9_MAINNET,,}"
|
||||
WETH10_MAINNET="${WETH10_MAINNET,,}"
|
||||
WETH9_CHAIN138="${WETH9_CHAIN138,,}"
|
||||
WETH10_CHAIN138="${WETH10_CHAIN138,,}"
|
||||
|
||||
if [[ -z "$WETH9_MAINNET" || -z "$WETH9_CHAIN138" || -z "$WETH10_MAINNET" || -z "$WETH10_CHAIN138" ]]; then
|
||||
log_error "Bridge addresses not found in .env (CCIPWETH9/10_BRIDGE_MAINNET and CCIPWETH9/10_BRIDGE_CHAIN138)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
WETH9_MAINNET=$(grep "CCIPWETH9_BRIDGE_MAINNET=" "$PROJECT_ROOT/.env" 2>/dev/null | cut -d'=' -f2 | tr -d ' "' || echo "")
|
||||
WETH10_MAINNET=$(grep "CCIPWETH10_BRIDGE_MAINNET=" "$PROJECT_ROOT/.env" 2>/dev/null | cut -d'=' -f2 | tr -d ' "' || echo "")
|
||||
WETH9_CHAIN138=$(grep "CCIPWETH9_BRIDGE_CHAIN138=" "$PROJECT_ROOT/.env" 2>/dev/null | cut -d'=' -f2 | tr -d ' "' || echo "")
|
||||
WETH10_CHAIN138=$(grep "CCIPWETH10_BRIDGE_CHAIN138=" "$PROJECT_ROOT/.env" 2>/dev/null | cut -d'=' -f2 | tr -d ' "' || echo "")
|
||||
_gas138=(--legacy --gas-limit 250000 --gas-price 2000000000)
|
||||
_gas_main=(--legacy --gas-limit 400000)
|
||||
|
||||
CHAIN138_SELECTOR="${CHAIN138_SELECTOR:-0x000000000000008a}"
|
||||
ETH_SELECTOR="${ETH_MAINNET_SELECTOR:-0x500147}"
|
||||
|
||||
if [ -z "$WETH9_MAINNET" ] || [ -z "$WETH9_CHAIN138" ] || [ -z "$WETH10_MAINNET" ] || [ -z "$WETH10_CHAIN138" ]; then
|
||||
log_error "Error: Bridge addresses not found in .env"
|
||||
exit 1
|
||||
fi
|
||||
_try() {
|
||||
local _o
|
||||
if _o=$("$@" 2>&1); then
|
||||
log_success "OK"
|
||||
[[ -n "$_o" ]] && echo "$_o"
|
||||
else
|
||||
log_warn "Command failed (non-fatal for batch)"
|
||||
echo "$_o" >&2
|
||||
fi
|
||||
}
|
||||
|
||||
echo "Configuring WETH9 Bridge..."
|
||||
echo " Adding Chain-138 destination to Mainnet bridge..."
|
||||
if cast send "$WETH9_MAINNET" "addDestination(uint64,address)" "$CHAIN138_SELECTOR" "$WETH9_CHAIN138" --rpc-url "$MAINNET_RPC" --private-key "$PRIVATE_KEY" --legacy 2>&1 | grep -q "Success\|success"; then
|
||||
log_success "✅ WETH9 Mainnet → Chain-138 configured"
|
||||
else
|
||||
log_warn "⚠️ Configuration may have failed - check transaction"
|
||||
fi
|
||||
|
||||
echo " Adding Mainnet destination to Chain-138 bridge..."
|
||||
if cast send "$WETH9_CHAIN138" "addDestination(uint64,address)" "$ETH_SELECTOR" "$WETH9_MAINNET" --rpc-url "$CHAIN138_RPC" --private-key "$PRIVATE_KEY" --legacy 2>&1 | grep -q "Success\|success"; then
|
||||
log_success "✅ WETH9 Chain-138 → Mainnet configured"
|
||||
else
|
||||
log_warn "⚠️ Configuration may have failed - check transaction"
|
||||
fi
|
||||
echo " Mainnet → Chain 138..."
|
||||
_try cast send "$WETH9_MAINNET" "addDestination(uint64,address)" "$CHAIN138_SELECTOR" "$WETH9_CHAIN138" \
|
||||
--rpc-url "$MAINNET_RPC" --private-key "$PRIVATE_KEY" "${_gas_main[@]}"
|
||||
echo " Chain 138 → Mainnet..."
|
||||
_try cast send "$WETH9_CHAIN138" "addDestination(uint64,address)" "$ETH_SELECTOR" "$WETH9_MAINNET" \
|
||||
--rpc-url "$CHAIN138_RPC" --private-key "$PRIVATE_KEY" "${_gas138[@]}"
|
||||
|
||||
echo "Configuring WETH10 Bridge..."
|
||||
echo " Adding Chain-138 destination to Mainnet bridge..."
|
||||
if cast send "$WETH10_MAINNET" "addDestination(uint64,address)" "$CHAIN138_SELECTOR" "$WETH10_CHAIN138" --rpc-url "$MAINNET_RPC" --private-key "$PRIVATE_KEY" --legacy 2>&1 | grep -q "Success\|success"; then
|
||||
log_success "✅ WETH10 Mainnet → Chain-138 configured"
|
||||
else
|
||||
log_warn "⚠️ Configuration may have failed - check transaction"
|
||||
fi
|
||||
echo " Mainnet → Chain 138..."
|
||||
_try cast send "$WETH10_MAINNET" "addDestination(uint64,address)" "$CHAIN138_SELECTOR" "$WETH10_CHAIN138" \
|
||||
--rpc-url "$MAINNET_RPC" --private-key "$PRIVATE_KEY" "${_gas_main[@]}"
|
||||
echo " Chain 138 → Mainnet..."
|
||||
_try cast send "$WETH10_CHAIN138" "addDestination(uint64,address)" "$ETH_SELECTOR" "$WETH10_MAINNET" \
|
||||
--rpc-url "$CHAIN138_RPC" --private-key "$PRIVATE_KEY" "${_gas138[@]}"
|
||||
|
||||
echo " Adding Mainnet destination to Chain-138 bridge..."
|
||||
if cast send "$WETH10_CHAIN138" "addDestination(uint64,address)" "$ETH_SELECTOR" "$WETH10_MAINNET" --rpc-url "$CHAIN138_RPC" --private-key "$PRIVATE_KEY" --legacy 2>&1 | grep -q "Success\|success"; then
|
||||
log_success "✅ WETH10 Chain-138 → Mainnet configured"
|
||||
else
|
||||
log_warn "⚠️ Configuration may have failed - check transaction"
|
||||
fi
|
||||
|
||||
log_success "✅ Bridge configuration complete!"
|
||||
log_success "Bridge configuration attempts finished (review output above)."
|
||||
|
||||
Reference in New Issue
Block a user