From 4f43422f358963842a3bdfb4e2e71156bd6cde3f Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 4 Dec 2023 18:39:47 +0000 Subject: [PATCH 1/2] Bumping sdk dependency to 2.49.0-beta.2 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 2cd1cd3..ab6338f 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "lib/index.js", "license": "Apache-2.0", "dependencies": { - "@drift-labs/sdk": "2.49.0-beta.1", + "@drift-labs/sdk": "2.49.0-beta.2", "@opentelemetry/api": "^1.1.0", "@opentelemetry/auto-instrumentations-node": "^0.31.1", "@opentelemetry/exporter-prometheus": "^0.31.0", diff --git a/yarn.lock b/yarn.lock index 2e9fe93..e1ec0cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -87,10 +87,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.49.0-beta.1": - version "2.49.0-beta.1" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.49.0-beta.1.tgz#5a6a1eba7a33cc7d0e37899732844afc18ae62fd" - integrity sha512-JdqZEGvTa85pdim2cTRgq0lLcjjgdMhXC62Gq6dAhxYaN3GPtA+2ZkLh8Qcz9MGXkX0w4iq0JVbvZteWtYJP8Q== +"@drift-labs/sdk@2.49.0-beta.2": + version "2.49.0-beta.2" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.49.0-beta.2.tgz#aa5182789699dd70e53890989c4f73be9accb8cc" + integrity sha512-Wszb3Q8DQghKJgcF3t2naR8SFhMldSJ1KkCL/knPo6OJbMS26Qo3VOJTDTPHPm6aBWOJjbPUxywgKP7IOLwneQ== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From 83e28e1cd6f43404989eede919a1c41c161c63f7 Mon Sep 17 00:00:00 2001 From: Nour Alharithi Date: Mon, 4 Dec 2023 10:51:09 -0800 Subject: [PATCH 2/2] adding new spot markets --- src/dlob-subscriber/DLOBSubscriberIO.ts | 18 +++++++-- src/publishers/dlobPublisher.ts | 52 ++++++++++++++++++++++++- 2 files changed, 66 insertions(+), 4 deletions(-) diff --git a/src/dlob-subscriber/DLOBSubscriberIO.ts b/src/dlob-subscriber/DLOBSubscriberIO.ts index 039c738..a7cea28 100644 --- a/src/dlob-subscriber/DLOBSubscriberIO.ts +++ b/src/dlob-subscriber/DLOBSubscriberIO.ts @@ -13,7 +13,11 @@ import { } from '@drift-labs/sdk'; import { driftEnv } from '../publishers/dlobPublisher'; import { RedisClient } from '../utils/redisClient'; -import { addOracletoResponse, l2WithBNToStrings } from '../utils/utils'; +import { + SubscriberLookup, + addOracletoResponse, + l2WithBNToStrings, +} from '../utils/utils'; type wsMarketL2Args = { marketIndex: number; @@ -32,7 +36,12 @@ export class DLOBSubscriberIO extends DLOBSubscriber { public lastSeenL2Formatted: Map>; redisClient: RedisClient; - constructor(config: DLOBSubscriptionConfig & { redisClient: RedisClient }) { + constructor( + config: DLOBSubscriptionConfig & { + redisClient: RedisClient; + spotMarketSubscribers: SubscriberLookup; + } + ) { super(config); this.redisClient = config.redisClient; @@ -67,7 +76,10 @@ export class DLOBSubscriberIO extends DLOBSubscriber { depth: -1, includeVamm: false, updateOnChange: true, - fallbackL2Generators: [], + fallbackL2Generators: [ + config.spotMarketSubscribers[market.marketIndex].phoenix, + config.spotMarketSubscribers[market.marketIndex].serum, + ].filter((a) => !!a), }); } } diff --git a/src/publishers/dlobPublisher.ts b/src/publishers/dlobPublisher.ts index 0550c72..2d2aca8 100644 --- a/src/publishers/dlobPublisher.ts +++ b/src/publishers/dlobPublisher.ts @@ -16,7 +16,12 @@ import { } from '@drift-labs/sdk'; import { logger, setLogLevel } from '../utils/logger'; -import { sleep } from '../utils/utils'; +import { + SubscriberLookup, + getPhoenixSubscriber, + getSerumSubscriber, + sleep, +} from '../utils/utils'; import { DLOBSubscriberIO } from '../dlob-subscriber/DLOBSubscriberIO'; import { RedisClient } from '../utils/redisClient'; import { @@ -53,6 +58,41 @@ logger.info(`WS endpoint: ${wsEndpoint}`); logger.info(`DriftEnv: ${driftEnv}`); logger.info(`Commit: ${commitHash}`); +let MARKET_SUBSCRIBERS: SubscriberLookup = {}; + +const initializeAllMarketSubscribers = async (driftClient: DriftClient) => { + const markets: SubscriberLookup = {}; + + for (const market of sdkConfig.SPOT_MARKETS) { + markets[market.marketIndex] = { + phoenix: undefined, + serum: undefined, + }; + + if (market.phoenixMarket) { + const phoenixSubscriber = getPhoenixSubscriber( + driftClient, + market, + sdkConfig + ); + await phoenixSubscriber.subscribe(); + markets[market.marketIndex].phoenix = phoenixSubscriber; + } + + if (market.serumMarket) { + const serumSubscriber = getSerumSubscriber( + driftClient, + market, + sdkConfig + ); + await serumSubscriber.subscribe(); + markets[market.marketIndex].serum = serumSubscriber; + } + } + + return markets; +}; + const main = async () => { const wallet = new Wallet(new Keypair()); const clearingHousePublicKey = new PublicKey(sdkConfig.DRIFT_PROGRAM_ID); @@ -120,6 +160,15 @@ const main = async () => { logger.error(e); }); + logger.info(`Initializing all market subscribers...`); + const initAllMarketSubscribersStart = Date.now(); + MARKET_SUBSCRIBERS = await initializeAllMarketSubscribers(driftClient); + logger.info( + `All market subscribers initialized in ${ + Date.now() - initAllMarketSubscribersStart + } ms` + ); + let dlobProvider: DLOBProvider; if (useOrderSubscriber) { let subscriptionConfig; @@ -167,6 +216,7 @@ const main = async () => { slotSource, updateFrequency: ORDERBOOK_UPDATE_INTERVAL, redisClient, + spotMarketSubscribers: MARKET_SUBSCRIBERS, }); await dlobSubscriber.subscribe(); if (useWebsocket) {