A high-throughput JSON-RPC service for submitting, updating, and managing orders on the Twilight Relayer Core.
This API suite handles:
- Market and limit order submissions
- Order cancellation and amendment
- Lend order submission and settlement
- Limit order settlement
Built for scale and operational isolation, this service is optimized to handle large volumes of order activity without impacting the performance or reliability of the query layer. Ideal for trading bots, exchanges, and institutions interacting directly with the relayer engine.
- Order Management: Create, execute, and cancel trader orders
- Kafka Integration: Asynchronous message processing with Kafka
- ZK-SNARK Verification: Built-in zero-knowledge proof verification
- Multi-threading: Configurable RPC server threads for optimal performance
- Docker Support: Ready-to-deploy Docker containers
- Rust 1.87.0 or later
- Kafka broker (for message queuing)
- Git (for dependency resolution)
Create a .env
file in the project root by copying the example:
cp .env.example .env
Configure the following environment variables in your .env
file:
# Kafka broker address for message queue operations (REQUIRED)
BROKER=localhost:9092
# Relayer version identifier (default: 0.1.0)
RelayerVersion=v0.1.0
# Snapshot version for the system (default: 0.1.0)
SnapshotVersion=v0.1.0
# RPC queue mode operation setting (default: DIRECT)
RPC_QUEUE_MODE=DIRECT
# RPC server socket address and port (default: 0.0.0.0:3032)
RPC_SERVER_SOCKETADDR=0.0.0.0:3032
# Number of RPC server threads (default: 5)
RPC_SERVER_THREAD=5
# Build the project
cargo build
# Run the application
cargo run
# Build optimized release version
cargo build --release
# Run the release binary
./target/release/main
# Build development image
docker build -f Dockerfile -t relayer-order-api:dev .
# Run development container
docker run -p 3032:3032 relayer-order-api:dev
# Build production image
docker build -t relayer-order-api:latest .
# Run production container
docker run -p 3032:3032 relayer-order-api:latest
The server exposes the following JSON-RPC methods:
CreateTraderOrder
- Submit a new trader orderExecuteTraderOrder
- Execute an existing trader orderCancelTraderOrder
- Cancel an existing trader orderCreateLendOrder
- Create a lending orderExecuteLendOrder
- Execute a lending order
# Health check - server should respond on configured port
curl -X POST http://localhost:3032 \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "method": "CreateTraderOrder", "params": {...}, "id": 1}'
The application uses the following Kafka topics:
CLIENT-REQUEST
- For incoming client requestsCLIENT-FAILED-REQUEST
- For failed request logging
- Default Port: 3032
- Default Thread Count: 5
src/
├── main.rs # Application entry point
├── config.rs # Environment configuration
├── lib.rs # Library exports
├── kafkalib/ # Kafka integration
│ ├── mod.rs
│ └── kafkacmd.rs
└── relayer/ # Core relayer order API functionality
├── mod.rs
├── commands.rs
└── rpc_server/
├── mod.rs
└── server.rs
Key dependencies include:
kafka
- Kafka client libraryjsonrpc-*
- JSON-RPC server componentsdotenv
- Environment variable managementtwilight-relayer-sdk
- Twilight protocol SDKs
Licensed under the Apache License, Version 2.0. See LICENSE for details.
For issues and questions, please refer to the project repository or contact the development team.