Skip to content

Commit 2e0410a

Browse files
committed
add l2geth revert script
1 parent c49c142 commit 2e0410a

File tree

3 files changed

+419
-178
lines changed

3 files changed

+419
-178
lines changed
Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
#!/bin/bash
2+
3+
# Common Functions for Sequencer Migration Scripts
4+
# This file contains shared functionality used by multiple scripts
5+
6+
# Colors for output
7+
RED='\033[0;31m'
8+
GREEN='\033[0;32m'
9+
YELLOW='\033[1;33m'
10+
BLUE='\033[0;34m'
11+
NC='\033[0m' # No Color
12+
13+
# Configuration
14+
SYNC_TIMEOUT=5 # 5 seconds timeout for sync operations
15+
POLL_INTERVAL=0.1 # Poll every 0.1 seconds
16+
17+
# Helper function to print colored output
18+
log() {
19+
echo -e "${2:-$NC}[$(date '+%H:%M:%S')] $1${NC}"
20+
}
21+
22+
log_info() { log "$1" "$BLUE"; }
23+
log_success() { log "$1" "$GREEN"; }
24+
log_warning() { log "$1" "$YELLOW"; }
25+
log_error() { log "$1" "$RED"; }
26+
27+
# Check if required environment variables are set
28+
check_env_vars() {
29+
log_info "Checking environment variables..."
30+
31+
if [[ -z "${L2GETH_RPC_URL:-}" ]]; then
32+
log_error "L2GETH_RPC_URL environment variable is required"
33+
exit 1
34+
fi
35+
36+
if [[ -z "${L2RETH_RPC_URL:-}" ]]; then
37+
log_error "L2RETH_RPC_URL environment variable is required"
38+
exit 1
39+
fi
40+
41+
log_success "Environment variables configured"
42+
log_info "L2GETH_RPC_URL: $L2GETH_RPC_URL"
43+
log_info "L2RETH_RPC_URL: $L2RETH_RPC_URL"
44+
}
45+
46+
# Get block number and hash for a given RPC URL
47+
get_latest_block_info() {
48+
local rpc_url="$1"
49+
local temp_file=$(mktemp)
50+
51+
if ! cast block latest --rpc-url "$rpc_url" > "$temp_file" 2>/dev/null; then
52+
rm -f "$temp_file"
53+
return 1
54+
fi
55+
56+
local block_number=$(grep "^number" "$temp_file" | awk '{print $2}')
57+
local block_hash=$(grep "^hash" "$temp_file" | awk '{print $2}')
58+
59+
rm -f "$temp_file"
60+
echo "$block_number $block_hash"
61+
}
62+
63+
# Get block info for a specific block number
64+
get_block_info() {
65+
local rpc_url="$1"
66+
local block_number="$2"
67+
local temp_file=$(mktemp)
68+
69+
if ! cast block "$block_number" --rpc-url "$rpc_url" > "$temp_file" 2>/dev/null; then
70+
rm -f "$temp_file"
71+
return 1
72+
fi
73+
74+
local block_num=$(grep "^number" "$temp_file" | awk '{print $2}')
75+
local block_hash=$(grep "^hash" "$temp_file" | awk '{print $2}')
76+
77+
rm -f "$temp_file"
78+
echo "$block_num $block_hash"
79+
}
80+
81+
# Get only block number for a given RPC URL
82+
get_block_number() {
83+
local rpc_url="$1"
84+
cast block latest --rpc-url "$rpc_url" 2>/dev/null | grep "^number" | awk '{print $2}'
85+
}
86+
87+
# Check if l2geth is mining
88+
is_l2geth_mining() {
89+
local result=$(cast rpc eth_mining --rpc-url "$L2GETH_RPC_URL" 2>/dev/null | tr -d '"')
90+
[[ "$result" == "true" ]]
91+
}
92+
93+
# Start l2geth mining
94+
start_l2geth_mining() {
95+
log_info "Starting l2geth mining..."
96+
if cast rpc miner_start --rpc-url "$L2GETH_RPC_URL" >/dev/null 2>&1; then
97+
log_success "L2GETH mining started"
98+
return 0
99+
else
100+
log_error "Failed to start l2geth mining"
101+
return 1
102+
fi
103+
}
104+
105+
# Stop l2geth mining
106+
stop_l2geth_mining() {
107+
log_info "Stopping l2geth mining..."
108+
if cast rpc miner_stop --rpc-url "$L2GETH_RPC_URL" >/dev/null 2>&1; then
109+
log_success "L2GETH mining stopped"
110+
return 0
111+
else
112+
log_error "Failed to stop l2geth mining"
113+
return 1
114+
fi
115+
}
116+
117+
# Enable l2reth automatic sequencing
118+
enable_l2reth_sequencing() {
119+
log_info "Enabling L2RETH automatic sequencing..."
120+
if cast rpc rollupNode_enableAutomaticSequencing --rpc-url "$L2RETH_RPC_URL" >/dev/null 2>&1; then
121+
log_success "L2RETH automatic sequencing enabled"
122+
return 0
123+
else
124+
log_error "Failed to enable L2RETH automatic sequencing"
125+
return 1
126+
fi
127+
}
128+
129+
# Disable l2reth automatic sequencing
130+
disable_l2reth_sequencing() {
131+
log_info "Disabling L2RETH automatic sequencing..."
132+
if cast rpc rollupNode_disableAutomaticSequencing --rpc-url "$L2RETH_RPC_URL" >/dev/null 2>&1; then
133+
log_success "L2RETH automatic sequencing disabled"
134+
return 0
135+
else
136+
log_error "Failed to disable L2RETH automatic sequencing"
137+
return 1
138+
fi
139+
}
140+
141+
# Wait for a specific block to be reached
142+
wait_for_block() {
143+
local node_name="$1"
144+
local rpc_url="$2"
145+
local target_block="$3"
146+
local target_hash="$4"
147+
148+
log_info "Waiting for $node_name to reach block #$target_block (hash: $target_hash)..."
149+
150+
local start_time=$(date +%s)
151+
while true; do
152+
local current_time=$(date +%s)
153+
local elapsed=$((current_time - start_time))
154+
local block_info
155+
156+
if [[ $elapsed -gt $SYNC_TIMEOUT ]]; then
157+
log_error "Timeout waiting for $node_name to reach block #$target_block"
158+
159+
local current_block=$(echo "$block_info" | awk '{print $1}')
160+
local current_hash=$(echo "$block_info" | awk '{print $2}')
161+
log_error "$node_name is at block $current_block (hash: $current_hash)"
162+
163+
return 1
164+
fi
165+
166+
167+
if block_info=$(get_latest_block_info "$rpc_url"); then
168+
local current_block=$(echo "$block_info" | awk '{print $1}')
169+
local current_hash=$(echo "$block_info" | awk '{print $2}')
170+
171+
if [[ "$current_block" -ge "$target_block" ]]; then
172+
if [[ "$current_block" -eq "$target_block" && "$current_hash" == "$target_hash" ]]; then
173+
log_success "$node_name reached target block #$target_block (hash: $target_hash)"
174+
return 0
175+
elif [[ "$current_block" -gt "$target_block" ]]; then
176+
log_success "$node_name surpassed target, now at block #$current_block (hash: $current_hash)"
177+
return 0
178+
else
179+
log_warning "$node_name at block #$current_block but hash mismatch: expected $target_hash, got $current_hash"
180+
fi
181+
fi
182+
fi
183+
184+
sleep $POLL_INTERVAL
185+
done
186+
}
187+
188+
# Check RPC connectivity for both nodes
189+
check_rpc_connectivity() {
190+
log_info "Checking RPC connectivity..."
191+
192+
if ! get_latest_block_info "$L2GETH_RPC_URL" >/dev/null; then
193+
log_error "Cannot connect to L2GETH at $L2GETH_RPC_URL"
194+
exit 1
195+
fi
196+
197+
if ! get_latest_block_info "$L2RETH_RPC_URL" >/dev/null; then
198+
log_error "Cannot connect to L2RETH at $L2RETH_RPC_URL"
199+
exit 1
200+
fi
201+
202+
log_success "Both nodes are accessible"
203+
}

0 commit comments

Comments
 (0)