Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m11s
CI/CD Pipeline / Security Scanning (push) Has been cancelled
CI/CD Pipeline / Lint and Format (push) Has been cancelled
CI/CD Pipeline / Terraform Validation (push) Has been cancelled
CI/CD Pipeline / Kubernetes Validation (push) Has been cancelled
Validation / validate-genesis (push) Has been cancelled
Validation / validate-terraform (push) Has been cancelled
Validation / validate-kubernetes (push) Has been cancelled
Validation / validate-smart-contracts (push) Has been cancelled
Validation / validate-security (push) Has been cancelled
Validation / validate-documentation (push) Has been cancelled
Deploy ChainID 138 / Deploy ChainID 138 (push) Failing after 1m4s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Failing after 31s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (push) Failing after 29s
Verify Deployment / Verify Deployment (push) Failing after 57s
Relay router, reserve system, oracle publisher, token-aggregation compliance middleware, and Monad deployment scripts. Co-authored-by: Cursor <cursoragent@cursor.com>
67 lines
2.6 KiB
Bash
Executable File
67 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Redeploy Monad outbound CCIPWETH9Bridge with canonical WMON on existing send router.
|
|
#
|
|
# Usage: ./scripts/deployment/redeploy-monad-send-bridge-wmon.sh --execute
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
cd "$PROJECT_ROOT"
|
|
|
|
# shellcheck disable=SC1090
|
|
source "$SCRIPT_DIR/../lib/deployment/dotenv.sh"
|
|
load_deployment_env --repo-root "$PROJECT_ROOT"
|
|
|
|
EXECUTE=0
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--execute) EXECUTE=1; shift ;;
|
|
--dry-run) echo "[DRY RUN] redeploy Monad send bridge"; exit 0 ;;
|
|
*) echo "Unknown arg: $1" >&2; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
[[ "$EXECUTE" == "1" ]] || { echo "Pass --execute"; exit 0; }
|
|
require_private_key_env || exit 1
|
|
|
|
RPC="${MONAD_MAINNET_RPC_PUBLIC:-https://rpc.monad.xyz}"
|
|
WMON="${WMON_MAINNET:-0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A}"
|
|
ROUTER="${CCIP_ROUTER_MONAD_SEND:-0x937824f2516fa58f25aeAb92E7BFf7D74F463B4c}"
|
|
FEE="${CCIP_FEE_TOKEN:-0x0000000000000000000000000000000000000000}"
|
|
CH138_SEL="${CHAIN138_SELECTOR:-16015286601757825753}"
|
|
CH138_BRIDGE="${CCIP_RELAY_BRIDGE_CHAIN138_WETH:-}"
|
|
|
|
sym=$(cast call "$WMON" "symbol()(string)" --rpc-url "$RPC" 2>/dev/null | tr -d '"' || echo "?")
|
|
[[ "$sym" == "WMON" ]] || { echo "ERROR: $WMON symbol=$sym (expected WMON)" >&2; exit 1; }
|
|
|
|
echo "=== Redeploy Monad outbound CCIPWETH9Bridge ==="
|
|
echo "Router: $ROUTER WMON: $WMON"
|
|
|
|
LOG="/tmp/monad-send-bridge-wmon.log"
|
|
out=$(bash "$PROJECT_ROOT/scripts/forge/scope.sh" create ccip contracts/ccip/CCIPWETH9Bridge.sol:CCIPWETH9Bridge \
|
|
--rpc-url "$RPC" --private-key "$PRIVATE_KEY" --legacy \
|
|
--gas-limit 5000000 --broadcast \
|
|
--constructor-args "$ROUTER" "$WMON" "$FEE" 2>&1) || {
|
|
printf '%s\n' "$out" | tee "$LOG"
|
|
exit 1
|
|
}
|
|
printf '%s\n' "$out" | tee "$LOG"
|
|
|
|
BRIDGE=$(printf '%s\n' "$out" | sed -n 's/.*Deployed to: \(0x[0-9a-fA-F]\{40\}\).*/\1/p' | head -1)
|
|
[[ -n "$BRIDGE" ]] || { echo "ERROR: parse bridge address failed" >&2; exit 1; }
|
|
|
|
if [[ -n "$CH138_BRIDGE" ]]; then
|
|
enabled=$(cast call "$BRIDGE" "destinations(uint64)(uint64,address,bool)" "$CH138_SEL" --rpc-url "$RPC" 2>/dev/null | awk 'NR==3{print $1}')
|
|
if [[ "$enabled" != "true" ]]; then
|
|
cast send "$BRIDGE" "addDestination(uint64,address)" "$CH138_SEL" "$CH138_BRIDGE" \
|
|
--rpc-url "$RPC" --private-key "$PRIVATE_KEY" --legacy --gas-limit 300000
|
|
else
|
|
cast send "$BRIDGE" "updateDestination(uint64,address)" "$CH138_SEL" "$CH138_BRIDGE" \
|
|
--rpc-url "$RPC" --private-key "$PRIVATE_KEY" --legacy --gas-limit 300000
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo "CCIPWETH9_BRIDGE_MONAD_SEND=$BRIDGE"
|