mirror of
https://github.com/luxfi/dex.git
synced 2026-09-24 00:26:31 +00:00
8.1 KiB
8.1 KiB
LX DEX SDK Documentation
Overview
LX DEX provides multiple SDKs and APIs for integration:
- JSON-RPC 2.0 - Standard HTTP API for web and mobile clients
- gRPC - High-performance binary protocol for internal Lux Network IPC
- QZMQ - Quantum-secure ZeroMQ for node-to-node communication
- WebSocket - Real-time market data streaming
Quick Start
1. Start the DEX Node
# Build the node
make build
# Run the node
./bin/luxd
This starts:
- JSON-RPC API on port 8080
- gRPC server on port 50051
- WebSocket server on port 8081
- P2P networking on port 5000
API Protocols
JSON-RPC API (Port 8080)
The JSON-RPC API is the primary interface for trading operations.
Endpoint
POST http://localhost:8080/rpc
Available Methods
| Method | Description | Parameters |
|---|---|---|
lx_ping |
Test connectivity | {} |
lx_getInfo |
Get node information | {} |
lx_placeOrder |
Place a new order | {symbol, type, side, price, size, userID} |
lx_cancelOrder |
Cancel an order | {orderId} |
lx_getOrder |
Get order details | {orderId} |
lx_getOrderBook |
Get order book snapshot | {depth} |
lx_getBestBid |
Get best bid price | {} |
lx_getBestAsk |
Get best ask price | {} |
lx_getTrades |
Get recent trades | {limit} |
Example: Place Order
curl -X POST http://localhost:8080/rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "lx_placeOrder",
"params": {
"symbol": "BTC-USD",
"type": 0, # 0=Limit, 1=Market, 2=Stop
"side": 0, # 0=Buy, 1=Sell
"price": 50000,
"size": 1.0,
"userID": "trader1"
},
"id": 1
}'
gRPC API (Port 50051)
The gRPC API provides high-performance binary protocol for internal services.
Proto Definition
See proto/lxdex.proto for the complete service definition.
Key Services
- Order Management: PlaceOrder, CancelOrder, GetOrder
- Market Data: GetOrderBook, StreamOrderBook, GetTrades, StreamTrades
- Account Management: GetBalance, GetPositions
- Node Management: GetNodeInfo, GetPeers, Ping
Example: gRPC Client (Go)
import (
"context"
"google.golang.org/grpc"
pb "github.com/luxfi/dex/pkg/grpc/pb"
)
// Connect to gRPC server
conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure())
defer conn.Close()
client := pb.NewLXDEXServiceClient(conn)
// Place an order
resp, err := client.PlaceOrder(context.Background(), &pb.PlaceOrderRequest{
Symbol: "BTC-USD",
Type: pb.OrderType_LIMIT,
Side: pb.OrderSide_BUY,
Price: 50000,
Size: 1.0,
UserId: "trader1",
})
WebSocket API (Port 8081)
Real-time market data streaming.
Connection
const ws = new WebSocket('ws://localhost:8081');
Subscribe to Market Data
ws.send(JSON.stringify({
type: 'subscribe',
symbols: ['BTC-USD'],
depth: 10
}));
SDK Libraries
TypeScript/JavaScript SDK
npm install @luxfi/dex-sdk
import { LXDexClient } from '@luxfi/dex-sdk';
const client = new LXDexClient({
jsonRpcUrl: 'http://localhost:8080/rpc',
wsUrl: 'ws://localhost:8081'
});
// Place an order
const order = await client.placeOrder({
symbol: 'BTC-USD',
type: 'limit',
side: 'buy',
price: 50000,
size: 1.0
});
// Subscribe to order book
client.subscribeOrderBook('BTC-USD', (book) => {
console.log('Best bid:', book.bids[0]);
console.log('Best ask:', book.asks[0]);
});
Python SDK
pip install luxfi-dex
from luxfi_dex import LXDexClient
client = LXDexClient(
json_rpc_url='http://localhost:8080/rpc',
ws_url='ws://localhost:8081'
)
# Place an order
order = client.place_order(
symbol='BTC-USD',
order_type='limit',
side='buy',
price=50000,
size=1.0
)
# Get order book
book = client.get_order_book('BTC-USD', depth=10)
print(f"Best bid: {book['bids'][0]}")
print(f"Best ask: {book['asks'][0]}")
Go SDK
go get github.com/luxfi/dex/sdk/go
import (
"github.com/luxfi/dex/sdk/go/lxdex"
)
client := lxdex.NewClient(
lxdex.WithJSONRPC("http://localhost:8080/rpc"),
lxdex.WithGRPC("localhost:50051"),
)
// Place an order
order, err := client.PlaceOrder(ctx, &lxdex.Order{
Symbol: "BTC-USD",
Type: lxdex.OrderTypeLimit,
Side: lxdex.Buy,
Price: 50000,
Size: 1.0,
})
// Stream order book
stream, err := client.StreamOrderBook(ctx, "BTC-USD")
for {
update, err := stream.Recv()
if err != nil {
break
}
fmt.Printf("Order book update: %+v\n", update)
}
Order Types
| Type | Value | Description |
|---|---|---|
| LIMIT | 0 | Order with specific price |
| MARKET | 1 | Immediate execution at best price |
| STOP | 2 | Trigger at stop price |
| STOP_LIMIT | 3 | Stop that becomes limit |
| ICEBERG | 4 | Hidden quantity order |
| PEG | 5 | Pegged to best bid/ask |
Order Sides
| Side | Value | Description |
|---|---|---|
| BUY | 0 | Buy order |
| SELL | 1 | Sell order |
Time in Force
| TIF | Description |
|---|---|
| GTC | Good Till Cancelled |
| IOC | Immediate Or Cancel |
| FOK | Fill Or Kill |
| DAY | Day Order |
Error Codes
JSON-RPC Error Codes
-32700Parse Error-32600Invalid Request-32601Method Not Found-32602Invalid Params-32603Internal Error
gRPC Status Codes
OKSuccessCANCELLEDOperation cancelledINVALID_ARGUMENTInvalid parametersNOT_FOUNDResource not foundALREADY_EXISTSResource already existsPERMISSION_DENIEDPermission deniedRESOURCE_EXHAUSTEDRate limit exceededINTERNALInternal server error
Rate Limits
- Orders: 100 per second per user
- Cancellations: 100 per second per user
- Market Data: 1000 requests per minute
- WebSocket Connections: 10 per IP
Authentication
Currently, the DEX uses userID for identification. In production:
- JWT tokens for API authentication
- API keys for programmatic access
- Signature verification for orders
Testing
Test Network
# Start test node
./bin/luxd --testnet
# Use test endpoints
JSON-RPC: http://localhost:18080/rpc
gRPC: localhost:15051
WebSocket: ws://localhost:18081
Example Test Script
# Run comprehensive tests
./curl-examples.sh
# Run SDK tests
npm test # TypeScript
python -m pytest # Python
go test ./... # Go
Performance
- Order Matching: 597ns latency (C++ engine)
- Throughput: 100M+ orders/second (with MLX GPU)
- Block Time: 1ms finality
- Network: Quantum-secure with BLS signatures
Architecture
┌─────────────────────────────────────────────┐
│ Client Applications │
├─────────────────────────────────────────────┤
│ JSON-RPC │ gRPC │ WebSocket │ QZMQ │
├─────────────────────────────────────────────┤
│ LX DEX Core Engine │
│ • Order Matching (Go/C++/GPU) │
│ • Risk Management │
│ • State Management (BadgerDB) │
├─────────────────────────────────────────────┤
│ Lux Consensus Layer │
│ • K=3 Validators │
│ • 1ms Block Finality │
│ • Quantum-Resistant Signatures │
└─────────────────────────────────────────────┘
Support
- GitHub: https://github.com/luxfi/dex
- Documentation: https://docs.luxfi.com/dex
- Discord: https://discord.gg/luxfi
License
MIT License - See LICENSE file for details