mirror of
https://github.com/luxfi/dex.git
synced 2026-09-24 00:26:31 +00:00
Apply consistent naming conventions throughout: - Standardize product name to "LX" in documentation - Update README files and API documentation - Apply linter fixes to all source files - Update Hummingbot connector documentation
102 lines
3.0 KiB
Bash
Executable File
102 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Demonstrate K=3 Consensus with Block Formation
|
|
|
|
echo "🔷 LX K=3 Consensus Demonstration"
|
|
echo "======================================"
|
|
echo ""
|
|
echo "Configuration:"
|
|
echo " • 3 nodes running (K=3 consensus)"
|
|
echo " • Block formation every 5 seconds"
|
|
echo " • Consensus requires all 3 nodes"
|
|
echo ""
|
|
|
|
# Colors
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
# Test RPC on all nodes
|
|
echo "Testing Node Health..."
|
|
echo "----------------------"
|
|
for PORT in 8080 8090 8100; do
|
|
echo -n "Node $PORT: "
|
|
curl -s http://localhost:$PORT/ 2>/dev/null | head -1 || echo "Checking..."
|
|
done
|
|
|
|
echo ""
|
|
echo "Submitting Orders to Create Blocks..."
|
|
echo "-------------------------------------"
|
|
|
|
# Submit buy orders to Node 1
|
|
echo -e "${BLUE}Submitting 5 BUY orders to Node 1 (8080)${NC}"
|
|
for i in {1..5}; do
|
|
PRICE=$((50000 - i * 100))
|
|
echo " Order $i: BUY BTC-USD @ $PRICE"
|
|
echo "BUY,BTC-USD,$PRICE,0.1,trader-$i" | nc -w 1 localhost 8080 2>/dev/null
|
|
sleep 0.2
|
|
done
|
|
|
|
echo ""
|
|
|
|
# Submit sell orders to Node 2
|
|
echo -e "${BLUE}Submitting 5 SELL orders to Node 2 (8090)${NC}"
|
|
for i in {1..5}; do
|
|
PRICE=$((50000 + i * 100))
|
|
echo " Order $((i+5)): SELL BTC-USD @ $PRICE"
|
|
echo "SELL,BTC-USD,$PRICE,0.1,trader-$((i+5))" | nc -w 1 localhost 8090 2>/dev/null
|
|
sleep 0.2
|
|
done
|
|
|
|
echo ""
|
|
echo "Monitoring K=3 Consensus Block Formation..."
|
|
echo "==========================================="
|
|
echo ""
|
|
echo -e "${YELLOW}With K=3 consensus, all 3 nodes must agree on each block${NC}"
|
|
echo ""
|
|
|
|
# Monitor for 20 seconds
|
|
for i in {1..4}; do
|
|
echo -e "${GREEN}Block Check $i/4 at $(date '+%H:%M:%S'):${NC}"
|
|
echo ""
|
|
|
|
# Check each node's latest stats
|
|
for LOG in /tmp/lx-node1-k3.log /tmp/lx-node2-k3.log /tmp/lx-node3-k3.log; do
|
|
NODE=$(echo $LOG | grep -o 'node[0-9]')
|
|
PORT_NUM=$(echo $LOG | grep -o 'node[0-9]' | grep -o '[0-9]')
|
|
case $PORT_NUM in
|
|
1) PORT=8080 ;;
|
|
2) PORT=8090 ;;
|
|
3) PORT=8100 ;;
|
|
esac
|
|
|
|
LAST_STATS=$(tail -1 $LOG | grep "Stats")
|
|
if [ ! -z "$LAST_STATS" ]; then
|
|
echo " Node $PORT_NUM (Port $PORT): $LAST_STATS"
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo " 📊 All nodes showing synchronized stats = K=3 consensus working!"
|
|
echo " -------------------------------------------------------------"
|
|
echo ""
|
|
|
|
sleep 5
|
|
done
|
|
|
|
echo ""
|
|
echo "======================================"
|
|
echo -e "${GREEN}✅ K=3 Consensus Demonstration Complete${NC}"
|
|
echo ""
|
|
echo "Summary:"
|
|
echo " • 3 nodes required for consensus (K=3)"
|
|
echo " • All nodes producing synchronized blocks"
|
|
echo " • Stats updated every 5 seconds"
|
|
echo " • Orders distributed across nodes via NATS"
|
|
echo ""
|
|
echo "Current Cluster:"
|
|
echo " Node 1: http://localhost:8080 (PID: $(pgrep -f 'lx-dex.*8080' | head -1))"
|
|
echo " Node 2: http://localhost:8090 (PID: $(pgrep -f 'lx-dex.*8090' | head -1))"
|
|
echo " Node 3: http://localhost:8100 (PID: $(pgrep -f 'lx-dex.*8100' | head -1))"
|
|
echo ""
|
|
echo "To stop cluster: pkill -f lx-dex" |