105 lines
4.4 KiB
Bash
Executable File
105 lines
4.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Deploy CCIP WETH9/WETH10 bridges on Gnosis, Cronos, Celo, Wemix (config-ready chains).
|
|
# Requires: PRIVATE_KEY in .env; per-chain RPC and gas (xDAI, CRO, CELO, WEMIX).
|
|
# Set CCIP_ROUTER_<CHAIN>, LINK_TOKEN_<CHAIN>; set WETH9_<CHAIN> and WETH10_<CHAIN> (native wrapped token on each chain, or deployment will fail).
|
|
# See docs/deployment/ENV_CONFIG_READY_CHAINS.example and docs/07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md.
|
|
#
|
|
# Usage: cd smom-dbis-138 && ./scripts/deployment/deploy-bridges-config-ready-chains.sh [gnosis|cronos|celo|wemix|all]
|
|
# PREFLIGHT=1 ... # run preflight first (default: 1)
|
|
# DRY_RUN=1 ... # print forge commands only, no deploy
|
|
# SIMULATE=1 ... # run forge without --broadcast (test script, no on-chain tx)
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
cd "$PROJECT_ROOT"
|
|
|
|
[[ -f "$PROJECT_ROOT/.env" ]] && set -a && source "$PROJECT_ROOT/.env" && set +a
|
|
|
|
DRY_RUN="${DRY_RUN:-0}"
|
|
SIMULATE="${SIMULATE:-0}"
|
|
PREFLIGHT="${PREFLIGHT:-1}"
|
|
CHAIN="${1:-all}"
|
|
|
|
# Per-chain env for DeployWETHBridges: RPC_URL, CCIP_ROUTER_ADDRESS, LINK_TOKEN_ADDRESS, WETH9_ADDRESS, WETH10_ADDRESS (0x0 to skip)
|
|
run_deploy() {
|
|
local chain_name="$1"
|
|
local rpc_var="$2"
|
|
local router_var="$3"
|
|
local link_var="$4"
|
|
local weth9_var="$5"
|
|
local weth10_var="$6"
|
|
local rpc="${!rpc_var:-}"
|
|
local router="${!router_var:-}"
|
|
local link="${!link_var:-}"
|
|
local weth9="${!weth9_var:-}"
|
|
local weth10="${!weth10_var:-}"
|
|
|
|
if [[ -z "$rpc" || -z "$router" ]]; then
|
|
echo " Skip $chain_name: set ${rpc_var} and ${router_var} in .env"
|
|
return 0
|
|
fi
|
|
if [[ -z "${PRIVATE_KEY:-}" ]]; then
|
|
echo " Skip $chain_name: PRIVATE_KEY not set"
|
|
return 0
|
|
fi
|
|
if [[ -z "$weth9" || -z "$weth10" ]]; then
|
|
echo " Skip $chain_name: set ${weth9_var} and ${weth10_var} in .env (native wrapped token addresses from chain)"
|
|
return 0
|
|
fi
|
|
|
|
export RPC_URL="$rpc"
|
|
export CCIP_ROUTER_ADDRESS="$router"
|
|
export LINK_TOKEN_ADDRESS="${link:-0x0000000000000000000000000000000000000000}"
|
|
export WETH9_ADDRESS="$weth9"
|
|
export WETH10_ADDRESS="$weth10"
|
|
|
|
local broadcast="--broadcast"
|
|
[[ "$SIMULATE" == "1" ]] && broadcast=""
|
|
local cmd="forge script script/deploy/bridge/DeployWETHBridges.s.sol:DeployWETHBridges --rpc-url \"$RPC_URL\" $broadcast --legacy -vvvv"
|
|
if [[ "$DRY_RUN" == "1" ]]; then
|
|
echo " [DRY RUN] $chain_name: $cmd"
|
|
return 0
|
|
fi
|
|
if [[ "$SIMULATE" == "1" ]]; then
|
|
echo " Simulating deploy on $chain_name (no broadcast)..."
|
|
else
|
|
echo " Deploying bridges on $chain_name..."
|
|
fi
|
|
eval "$cmd" || { echo " Failed (non-fatal)"; return 0; }
|
|
echo " Set CCIPWETH9_BRIDGE_${chain_name^^} and CCIPWETH10_BRIDGE_${chain_name^^} in .env from script output."
|
|
}
|
|
|
|
# Preflight (RPC + gas balance check)
|
|
if [[ "$PREFLIGHT" == "1" && "$DRY_RUN" != "1" ]]; then
|
|
if ! "$SCRIPT_DIR/preflight-config-ready-chains.sh" "$CHAIN" 2>/dev/null; then
|
|
echo ""
|
|
echo "Preflight failed. Fix RPCs and gas balances, or run with PREFLIGHT=0 to skip."
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
fi
|
|
|
|
echo "=== Deploy CCIP bridges (Gnosis, Cronos, Celo, Wemix) ==="
|
|
echo " DRY_RUN=$DRY_RUN SIMULATE=$SIMULATE PREFLIGHT=$PREFLIGHT CHAIN=$CHAIN"
|
|
echo " Gas tokens: Gnosis=xDAI, Cronos=CRO, Celo=CELO, Wemix=WEMIX"
|
|
echo ""
|
|
|
|
case "$CHAIN" in
|
|
gnosis) run_deploy "GNOSIS" "GNOSIS_RPC" "CCIP_ROUTER_GNOSIS" "LINK_TOKEN_GNOSIS" "WETH9_GNOSIS" "WETH10_GNOSIS" ;;
|
|
cronos) run_deploy "CRONOS" "CRONOS_RPC" "CCIP_ROUTER_CRONOS" "LINK_TOKEN_CRONOS" "WETH9_CRONOS" "WETH10_CRONOS" ;;
|
|
celo) run_deploy "CELO" "CELO_RPC" "CCIP_ROUTER_CELO" "LINK_TOKEN_CELO" "WETH9_CELO" "WETH10_CELO" ;;
|
|
wemix) run_deploy "WEMIX" "WEMIX_RPC" "CCIP_ROUTER_WEMIX" "LINK_TOKEN_WEMIX" "WETH9_WEMIX" "WETH10_WEMIX" ;;
|
|
all)
|
|
run_deploy "GNOSIS" "GNOSIS_RPC" "CCIP_ROUTER_GNOSIS" "LINK_TOKEN_GNOSIS" "WETH9_GNOSIS" "WETH10_GNOSIS"
|
|
run_deploy "CRONOS" "CRONOS_RPC" "CCIP_ROUTER_CRONOS" "LINK_TOKEN_CRONOS" "WETH9_CRONOS" "WETH10_CRONOS"
|
|
run_deploy "CELO" "CELO_RPC" "CCIP_ROUTER_CELO" "LINK_TOKEN_CELO" "WETH9_CELO" "WETH10_CELO"
|
|
run_deploy "WEMIX" "WEMIX_RPC" "CCIP_ROUTER_WEMIX" "LINK_TOKEN_WEMIX" "WETH9_WEMIX" "WETH10_WEMIX"
|
|
;;
|
|
*) echo "Usage: $0 [gnosis|cronos|celo|wemix|all]"; exit 1 ;;
|
|
esac
|
|
|
|
echo ""
|
|
echo "Next: Add deployed bridge addresses to .env (CCIPWETH9_BRIDGE_*, CCIPWETH10_BRIDGE_*), then run complete-config-ready-chains.sh"
|