Skip to content

drift-labs/dlob-server

Folders and files

NameName
Last commit message
Last commit date
Dec 11, 2024
May 31, 2023
Mar 21, 2025
Dec 3, 2024
Jul 6, 2023
Feb 19, 2025
Dec 18, 2024
Jul 30, 2024
May 23, 2023
Dec 3, 2024
May 16, 2024
May 31, 2023
Jan 8, 2025
Jan 30, 2025
Jan 30, 2025
Dec 18, 2024
Jan 8, 2025
Dec 3, 2024
Oct 24, 2024
Jan 30, 2025

Repository files navigation

DLOB Server for Drift Protocol v2

Docs Discord Chat License

DLOB Server

This is the backend server that provides a REST API for the drift DLOB.

Run the server

Setup

The build dependencies

git submodule update --init
bash build_all.sh

First set the necessary environment variables:

cp .env.example .env

Environment Configuration

To properly configure the DLOB server, set the following environment variables in your .env file:

Variable Description Example Value
ENDPOINT The Solana RPC node http endpoint. https://your-private-rpc-node.com
WS_ENDPOINT The Solana RPC node websocket endpoint. wss://your-private-rpc-node.com
USE_WEBSOCKET Flag to enable WebSocket connection. true
USE_ORDER_SUBSCRIBER Flag to enable order subscriber DLOB source. true
DISABLE_GPA_REFRESH Flag to disable periodic refresh using getProgramAccounts. true
ENV The network environment the server is connecting to. mainnet-beta
PORT The port number the HTTP server listens on. 6969
METRICS_PORT The port number for Prometheus metrics. 9465
PRIVATE_KEY Path to the Solana private key file. /path/to/keypair.json
RATE_LIMIT_CALLS_PER_SECOND Maximum number of API calls per second. 100
PERP_MARKETS_TO_LOAD Number of perpetual markets to load at startup. 0
SPOT_MARKETS_TO_LOAD Number of spot markets to load at startup. 5
ELASTICACHE_HOST (for websocket server) Redis host endpoint. localhost
ELASTICACHE_PORT (for websocket server) Redis port. 6379
REDIS_CLIENT (for websocket server) Redis client type (DLOB/DLOB_HELIUS). DLOB
WS_PORT (for websocket server) The port to run the websocket server on. 3000

Note: multiple Redis hosts can be provided by providing a comma separated string.

HTTP mode

The HTTP server as documented here can be run with, and by default accessible on http://127.0.0.1:6969:

yarn run dev

Websocket mode

The websocket server has 2 components, the dlob-publisher that takes frequent snapshots of the DLOB and publishes them to Redis, and ws-manager listens for new connections and sends the latest DLOB to ws clients, the two components communicate through Redis pub-sub.

To run the websocket server, a Redis cache is required, and the following environment variables must be set:

  • REDIS_HOSTS
  • REDIS_PASSWORDS
  • REDIS_PORTS

In the first terminal, start the redis cluster:

bash redisCluster.sh start
bash redisCluster.sh create

In second terminal, run:

yarn run dlob-publish

In a third terminal, run:

yarn run ws-manager

Then connect to the ws server at ws://127.0.0.1:3000

When you're done, stop the redis cluster:

bash redisCluster.sh stop

Run the example client

Documentation for connecting to the dlob server are available here

TODO: complete client examples.

About

Serves DLOB, fresh off the RPC

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 10

Languages