1- #! /bin/sh
1+ #! /bin/bash
22
33# =============================================================================
44# Cross-Chain DEX Full Deployment Script
2828# Configuration
2929# ---------------------------------------------------------------
3030
31- DEPLOY_DIR =" /deployment"
32- L1_DEPLOY_JSON=" $DEPLOY_DIR /cross-chain-dex-l1.json"
33- L2_DEPLOY_JSON=" $DEPLOY_DIR /cross-chain-dex-l2.json"
31+ DEPLOYMENT_DIR =" /deployment"
32+ L1_DEPLOY_JSON=" $DEPLOYMENT_DIR /cross-chain-dex-l1.json"
33+ L2_DEPLOY_JSON=" $DEPLOYMENT_DIR /cross-chain-dex-l2.json"
3434
3535# ---------------------------------------------------------------
3636# Derived values
@@ -74,26 +74,28 @@ echo ""
7474# Step 1: Deploy L1 contracts
7575# ---------------------------------------------------------------
7676
77- echo " ============================================="
78- echo " Step 1/4: Deploying L1 contracts"
79- echo " ============================================="
80- echo " "
77+ if [[ ! -f " $L1_DEPLOY_JSON " ]]; then
78+ echo " ============================================="
79+ echo " Step 1/4: Deploying L1 contracts"
80+ echo " ============================================="
81+ echo " "
8182
82- export FOUNDRY_PROFILE=" layer1"
83+ export FOUNDRY_PROFILE=" layer1"
8384
84- forge script ./script/layer1/surge/cross-chain-dex/DeployCrossChainDexL1.s.sol:DeployCrossChainDexL1 \
85- --fork-url " $L1_RPC " \
86- $BROADCAST_ARG \
87- $LOG_LEVEL \
88- --private-key " $PRIVATE_KEY "
85+ forge script ./script/layer1/surge/cross-chain-dex/DeployCrossChainDexL1.s.sol:DeployCrossChainDexL1 \
86+ --fork-url " $L1_RPC " \
87+ $BROADCAST_ARG \
88+ $LOG_LEVEL \
89+ --private-key " $PRIVATE_KEY "
8990
90- if [ " $DRY_RUN " = " true" ]; then
91- echo " "
92- echo " DRY RUN: Skipping remaining steps (L2 deploy, linking, verification)"
93- exit 0
94- fi
91+ if [ " $DRY_RUN " = " true" ]; then
92+ echo " "
93+ echo " DRY RUN: Skipping remaining steps (L2 deploy, linking, verification)"
94+ exit 0
95+ fi
9596
96- cp deployments/cross-chain-dex-l1.json " $L1_DEPLOY_JSON "
97+ cp deployments/cross-chain-dex-l1.json " $L1_DEPLOY_JSON "
98+ fi
9799
98100# Parse L1 deployment output
99101L1_VAULT=$( jq -r ' .CrossChainSwapVaultL1' " $L1_DEPLOY_JSON " )
@@ -108,20 +110,23 @@ echo ""
108110# Step 2: Deploy L2 contracts
109111# ---------------------------------------------------------------
110112
111- echo " ============================================="
112- echo " Step 2/4: Deploying L2 contracts"
113- echo " ============================================="
114- echo " "
113+ if [[ ! -f " $L2_DEPLOY_JSON " ]]; then
115114
116- export FOUNDRY_PROFILE=" layer2"
115+ echo " ============================================="
116+ echo " Step 2/4: Deploying L2 contracts"
117+ echo " ============================================="
118+ echo " "
117119
118- forge script ./script/layer2/surge/cross-chain-dex/DeployCrossChainDexL2.s.sol:DeployCrossChainDexL2 \
119- --fork-url " $L2_RPC " \
120- $BROADCAST_ARG \
121- $LOG_LEVEL \
122- --private-key " $PRIVATE_KEY "
120+ export FOUNDRY_PROFILE=" layer2"
123121
124- cp deployments/cross-chain-dex-l2.json " $L2_DEPLOY_JSON "
122+ forge script ./script/layer2/surge/cross-chain-dex/DeployCrossChainDexL2.s.sol:DeployCrossChainDexL2 \
123+ --fork-url " $L2_RPC " \
124+ $BROADCAST_ARG \
125+ $LOG_LEVEL \
126+ --private-key " $PRIVATE_KEY "
127+
128+ cp deployments/cross-chain-dex-l2.json " $L2_DEPLOY_JSON "
129+ fi
125130
126131# Parse L2 deployment output
127132L2_VAULT=$( jq -r ' .CrossChainSwapVaultL2' " $L2_DEPLOY_JSON " )
@@ -143,18 +148,23 @@ echo " Step 3/4: Linking vaults"
143148echo " ============================================="
144149echo " "
145150
146- echo " Setting L2 vault on L1 vault..."
147- cast send " $L1_VAULT " " setL2Vault(address)" " $L2_VAULT " \
148- --private-key " $PRIVATE_KEY " \
149- --rpc-url " $L1_RPC " > /dev/null
151+ if [[ ! -f " $DEPLOYMENT_DIR /link_vaults_l1.lock" ]]; then
152+ echo " Setting L2 vault on L1 vault..."
153+ cast send " $L1_VAULT " " setL2Vault(address)" " $L2_VAULT " \
154+ --private-key " $PRIVATE_KEY " \
155+ --rpc-url " $L1_RPC " > /dev/null
156+
157+ touch " $DEPLOYMENT_DIR /link_vaults_l1.lock"
158+ fi
150159
151- echo " Setting L1 vault on L2 vault..."
152- cast send " $L2_VAULT " " setL1Vault(address)" " $L1_VAULT " \
153- --private-key " $PRIVATE_KEY " \
154- --rpc-url " $L2_RPC " > /dev/null
160+ if [[ ! -f " $DEPLOYMENT_DIR /link_vaults_l2.lock" ]]; then
161+ echo " Setting L1 vault on L2 vault..."
162+ cast send " $L2_VAULT " " setL1Vault(address)" " $L1_VAULT " \
163+ --private-key " $PRIVATE_KEY " \
164+ --rpc-url " $L2_RPC " > /dev/null
155165
156- echo " Done. "
157- echo " "
166+ touch " $DEPLOYMENT_DIR /link_vaults_l2.lock "
167+ fi
158168
159169# ---------------------------------------------------------------
160170# Step 4: Verify
213223
214224touch " $DEPLOYMENT_DIR /cross_chain_dex.lock"
215225
226+ # ---------------------------------------------------------------
227+ # Step 5: Setup L2
228+ # ---------------------------------------------------------------
229+
230+ if [[ ! -f " $DEPLOYMENT_DIR /setup_l2.lock" ]]; then
231+ # Register L1 Bridge on L2 Shared Resolver
232+ cast send $SHASTA_SHARED_RESOLVER \
233+ " registerAddress(uint256,bytes32,address)" \
234+ $L1_CHAIN_ID \
235+ $( cast format-bytes32-string " bridge" ) \
236+ $SHASTA_BRIDGE \
237+ --private-key $PRIVATE_KEY \
238+ --rpc-url $L2_RPC
239+
240+ # Register L1 Signal Service on L2 Shared Resolver
241+ cast send $SHASTA_SHARED_RESOLVER \
242+ " registerAddress(uint256,bytes32,address)" \
243+ $L1_CHAIN_ID \
244+ $( cast format-bytes32-string " signal_service" ) \
245+ $SHASTA_SIGNAL_SERVICE \
246+ --private-key $PRIVATE_KEY \
247+ --rpc-url $L2_RPC
248+
249+ touch " $DEPLOYMENT_DIR /setup_l2.lock"
250+ fi
251+
216252# ---------------------------------------------------------------
217253# Summary
218254# ---------------------------------------------------------------
0 commit comments