forked from luxfi/node
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvalidator_bootstrapper.sh
More file actions
131 lines (114 loc) · 3.95 KB
/
validator_bootstrapper.sh
File metadata and controls
131 lines (114 loc) · 3.95 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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/bin/bash
set -e
echo "============================================"
echo " LUX VALIDATOR & BOOTSTRAPPER NODE"
echo "============================================"
echo ""
echo "This node will serve as both validator and bootstrapper"
echo "Consensus params: K=1, sample-size=1, quorum-size=1"
echo ""
# Kill any existing luxd
pkill -f luxd 2>/dev/null || true
sleep 1
# Configuration
STAKING_DIR="/home/z/.luxd/staking"
DB_DIR="/home/z/.node/db/validator-bootstrapper"
CHAIN_DATA="/home/z/.luxd/chainData"
# Clean and prepare
rm -rf "$DB_DIR"
mkdir -p "$DB_DIR"
echo "Starting validator/bootstrapper node..."
echo "Using staking certificates from: $STAKING_DIR"
echo ""
# Start the validator/bootstrapper node
# With K=1, this node should bootstrap itself immediately
/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 \
--staking-tls-cert-file="$STAKING_DIR/staker.crt" \
--staking-tls-key-file="$STAKING_DIR/staker.key" \
--staking-signer-key-file="$STAKING_DIR/signer.key" \
--consensus-sample-size=1 \
--consensus-quorum-size=1 \
--chain-data-dir="$CHAIN_DATA" \
--db-dir="$DB_DIR" \
--bootstrap-ips="" \
--bootstrap-ids="" \
--skip-bootstrap \
--log-level=info > /tmp/validator-bootstrapper.log 2>&1 &
NODE_PID=$!
echo "Validator/Bootstrapper PID: $NODE_PID"
echo ""
# Wait a moment for initialization
sleep 3
# Get node info
NODE_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 ID: $NODE_ID"
echo ""
# Check bootstrap status
echo "Bootstrap Status:"
for chain in P C X; do
STATUS=$(curl -s -H 'content-type: application/json' \
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"info.isBootstrapped\",\"params\":{\"chain\":\"$chain\"}}" \
http://127.0.0.1:9630/ext/info | jq -r '.result.isBootstrapped')
echo " $chain-Chain: $STATUS"
done
# Check validator status on P-Chain
echo ""
echo "P-Chain Validator Info:"
echo " Validator Address: 0x9011E888251AB053B7bD1cdB598Db4f9DEd94714"
echo " Expected Stake: 1,000,000,000 LUX (1B LUX)"
echo " Minimum Stake Required: 1,000,000 LUX (1M LUX)"
# Check C-Chain
echo ""
echo "C-Chain Status:"
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"
if [ $BLOCK_NUM -eq 0 ]; then
echo " ⚠️ Block 0 - database needs repair for full chain"
fi
fi
echo ""
echo "================================"
echo " CONNECTION INFO FOR OTHER NODES"
echo "================================"
echo "Other nodes can connect using:"
echo " --bootstrap-ips=127.0.0.1:9651"
echo " --bootstrap-ids=$NODE_ID"
echo " --network-id=96369"
echo ""
echo "Example for second node:"
echo " ./build/luxd \\"
echo " --network-id=96369 \\"
echo " --http-port=9632 --staking-port=9653 \\"
echo " --bootstrap-ips=127.0.0.1:9651 \\"
echo " --bootstrap-ids=$NODE_ID \\"
echo " --consensus-sample-size=1 --consensus-quorum-size=1"
echo ""
echo "================================"
echo " VALIDATOR/BOOTSTRAPPER RUNNING"
echo "================================"
echo "✓ Node is operational as validator and bootstrapper"
echo "✓ With K=1 consensus, this node can validate alone"
echo "✓ Other nodes can bootstrap from this node"
echo ""
echo "Endpoints:"
echo " HTTP RPC: http://127.0.0.1:9630"
echo " C-Chain: http://127.0.0.1:9630/ext/bc/C/rpc"
echo " P-Chain: http://127.0.0.1:9630/ext/bc/P"
echo " Staking: 127.0.0.1:9651"
echo ""
echo "PID: $NODE_PID"
echo "Logs: tail -f /tmp/validator-bootstrapper.log"
echo ""
echo "Press Ctrl+C to stop"
trap "echo 'Stopping validator...'; kill $NODE_PID 2>/dev/null; exit" INT
wait $NODE_PID