forked from luxfi/node
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtwo_validators_proper.sh
More file actions
executable file
·117 lines (99 loc) · 3.65 KB
/
two_validators_proper.sh
File metadata and controls
executable file
·117 lines (99 loc) · 3.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/bin/bash
set -e
echo "============================================"
echo " LUX TWO VALIDATOR PROPER SETUP"
echo "============================================"
echo ""
# Kill any existing luxd
pkill -f luxd 2>/dev/null || true
sleep 2
# Start Node A (bootstrapper)
echo "Starting Node A (bootstrapper)..."
/home/z/work/lux/build/luxd \
--network-id=96369 \
--public-ip=127.0.0.1 \
--http-host=0.0.0.0 --http-port=9630 \
--staking-port=9651 \
--consensus-sample-size=1 --consensus-quorum-size=1 \
--chain-data-dir=/home/z/.luxd/chainData \
--db-dir=/home/z/.node/db/lux-mainnet-96369-nodeA \
--log-level=debug > /tmp/nodeA.log 2>&1 &
NODE_A_PID=$!
echo "Node A PID: $NODE_A_PID"
echo "Waiting for Node A to initialize..."
sleep 5
# Get Node A's ID
NODE_A_ID=$(curl -s http://127.0.0.1:9630/ext/info -X POST -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"info.getNodeID","params":{}}' | jq -r '.result.nodeID')
echo "Node A ID: $NODE_A_ID"
echo ""
# Start Node B (helper)
echo "Starting Node B (helper)..."
/home/z/work/lux/build/luxd \
--network-id=96369 \
--public-ip=127.0.0.1 \
--staking-port=9653 --http-port=9632 \
--bootstrap-ips=127.0.0.1:9651 \
--bootstrap-ids=$NODE_A_ID \
--consensus-sample-size=1 --consensus-quorum-size=1 \
--chain-data-dir=/home/z/.luxd/chainData \
--db-dir=/home/z/.node/db/lux-mainnet-96369-nodeB \
--log-level=debug > /tmp/nodeB.log 2>&1 &
NODE_B_PID=$!
echo "Node B PID: $NODE_B_PID"
echo "Waiting for bootstrap to complete..."
sleep 10
# Check bootstrap status
echo ""
echo "Checking bootstrap status..."
for i in {1..30}; do
STATUS_A=$(curl -s -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"info.isBootstrapped","params":{"chain":"C"}}' \
http://127.0.0.1:9630/ext/info | jq -r '.result.isBootstrapped')
STATUS_B=$(curl -s -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"info.isBootstrapped","params":{"chain":"C"}}' \
http://127.0.0.1:9632/ext/info | jq -r '.result.isBootstrapped')
echo "Attempt $i/30: Node A bootstrapped=$STATUS_A, Node B bootstrapped=$STATUS_B"
if [ "$STATUS_A" = "true" ] && [ "$STATUS_B" = "true" ]; then
echo "✓ Both nodes bootstrapped successfully!"
break
fi
sleep 2
done
# Check block number
echo ""
echo "Checking C-Chain block number..."
BLOCK_HEX=$(curl -s -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' \
http://127.0.0.1:9630/ext/bc/C/rpc | jq -r '.result')
if [ "$BLOCK_HEX" != "null" ] && [ "$BLOCK_HEX" != "" ]; then
BLOCK_NUM=$((16#${BLOCK_HEX#0x}))
echo "Current block: $BLOCK_NUM (hex: $BLOCK_HEX)"
if [ $BLOCK_NUM -eq 0 ]; then
echo "⚠️ WARNING: Block number is 0 - database needs repair!"
echo "The canonical chain mappings are incomplete."
echo "Need to run database repair before blocks will be accessible."
elif [ $BLOCK_NUM -eq 1082780 ]; then
echo "✓ Full chain loaded: 1,082,780 blocks"
else
echo "Partial chain loaded: $BLOCK_NUM blocks"
fi
fi
echo ""
echo "================================"
echo " NETWORK STATUS"
echo "================================"
echo "Node A: http://127.0.0.1:9630"
echo "Node B: http://127.0.0.1:9632"
echo ""
echo "You can now stop Node B if desired (it was just for bootstrap):"
echo " kill $NODE_B_PID"
echo ""
echo "Node A will remain bootstrapped and operational."
echo ""
echo "PIDs: NodeA=$NODE_A_PID, NodeB=$NODE_B_PID"
echo "Logs: tail -f /tmp/nodeA.log or /tmp/nodeB.log"
echo ""
echo "Press Ctrl+C to stop both nodes"
trap "echo 'Stopping nodes...'; kill $NODE_A_PID $NODE_B_PID 2>/dev/null; exit" INT
wait $NODE_A_PID