From 9baff8226228b6e7909ca64f1ae68c4ba8ced4fa Mon Sep 17 00:00:00 2001 From: Chris Heaney Date: Tue, 28 Nov 2023 19:53:36 -0500 Subject: [PATCH 1/5] init order subscriber flag --- src/dlobProvider.ts | 65 ++++++++++++++++++++++++++++++++++ src/index.ts | 85 +++++++++++++++++++++++++++++---------------- 2 files changed, 120 insertions(+), 30 deletions(-) create mode 100644 src/dlobProvider.ts diff --git a/src/dlobProvider.ts b/src/dlobProvider.ts new file mode 100644 index 0000000..bfa58f2 --- /dev/null +++ b/src/dlobProvider.ts @@ -0,0 +1,65 @@ +import {DLOB, OrderSubscriber, UserAccount, UserMap} from "@drift-labs/sdk"; +import {PublicKey} from "@solana/web3.js"; + +export type DLOBProvider = { + subscribe() : Promise; + getDLOB(slot: number): Promise; + getUniqueAuthorities(): PublicKey[]; + getUserAccounts(): Generator<{userAccount: UserAccount, publicKey: PublicKey}>; + getUserAccount(publicKey: PublicKey): UserAccount | undefined; + size(): number; +} + +export function getDLOBProviderFromUserMap(userMap:UserMap) : DLOBProvider { + return { + subscribe: async () => { + await userMap.subscribe(); + }, + getDLOB: async (slot: number) => { + return await userMap.getDLOB(slot); + }, + getUniqueAuthorities: () => { + return userMap.getUniqueAuthorities(); + }, + getUserAccounts: function*() { + for (const user of userMap.values()) { + yield {userAccount: user.getUserAccount(), publicKey: user.getUserAccountPublicKey()}; + } + }, + getUserAccount: (publicKey) => { + return userMap.get(publicKey.toString())?.getUserAccount(); + }, + size: () => { + return userMap.size(); + } + }; +} + +export function getDLOBProviderFromOrderSubscriber(orderSubscriber: OrderSubscriber) : DLOBProvider { + return { + subscribe: async () => { + await orderSubscriber.subscribe(); + }, + getDLOB: async (slot: number) => { + return await orderSubscriber.getDLOB(slot); + }, + getUniqueAuthorities: () => { + const authorities = new Set(); + for (const { userAccount } of orderSubscriber.usersAccounts.values()) { + authorities.add(userAccount.authority); + } + return Array.from(authorities.values()); + }, + getUserAccounts: function*() { + for (const [key, {userAccount}] of orderSubscriber.usersAccounts.entries()) { + yield {userAccount: userAccount, publicKey: new PublicKey(key)}; + } + }, + getUserAccount: (publicKey) => { + return orderSubscriber.usersAccounts.get(publicKey.toString())?.userAccount; + }, + size(): number { + return orderSubscriber.usersAccounts.size; + } + }; +} diff --git a/src/index.ts b/src/index.ts index 8caed26..f96be35 100644 --- a/src/index.ts +++ b/src/index.ts @@ -27,6 +27,7 @@ import { groupL2, initialize, isVariant, + OrderSubscriber, } from '@drift-labs/sdk'; import { logger, setLogLevel } from './utils/logger'; @@ -46,6 +47,7 @@ import { sleep, validateDlobQuery, } from './utils/utils'; +import {DLOBProvider, getDLOBProviderFromOrderSubscriber, getDLOBProviderFromUserMap} from "./dlobProvider"; require('dotenv').config(); const driftEnv = (process.env.ENV || 'devnet') as DriftEnv; @@ -57,6 +59,7 @@ const stateCommitment: Commitment = 'processed'; const serverPort = process.env.PORT || 6969; export const ORDERBOOK_UPDATE_INTERVAL = 1000; const useWebsocket = process.env.USE_WEBSOCKET?.toLowerCase() === 'true'; +const useOrderSubscriber = process.env.USE_ORDER_SUBSCRIBER?.toLowerCase() === 'true'; const rateLimitCallsPerSecond = process.env.RATE_LIMIT_CALLS_PER_SECOND ? parseInt(process.env.RATE_LIMIT_CALLS_PER_SECOND) @@ -196,6 +199,7 @@ const main = async () => { type: 'polling', accountLoader: bulkAccountLoader, }; + slotSource = { getSlot: () => bulkAccountLoader!.getSlot(), }; @@ -206,6 +210,7 @@ const main = async () => { }; slotSubscriber = new SlotSubscriber(connection); await slotSubscriber.subscribe(); + slotSource = { getSlot: () => slotSubscriber!.getSlot(), }; @@ -219,6 +224,40 @@ const main = async () => { env: driftEnv, }); + let dlobProvider : DLOBProvider; + if (useOrderSubscriber) { + let subscriptionConfig; + if (useWebsocket) { + subscriptionConfig = { + type: "websocket", + }; + } else { + subscriptionConfig = { + type: "polling", + frequency: ORDERBOOK_UPDATE_INTERVAL + }; + } + + const orderSubscriber = new OrderSubscriber({ + driftClient, + subscriptionConfig, + }); + + dlobProvider = getDLOBProviderFromOrderSubscriber(orderSubscriber); + + slotSource = { + getSlot: () => orderSubscriber.getSlot(), + }; + } else { + const userMap = new UserMap( + driftClient, + driftClient.userAccountSubscriptionConfig, + false + ); + + dlobProvider = getDLOBProviderFromUserMap(userMap); + } + const dlobCoder = DLOBOrdersCoder.create(); await driftClient.subscribe(); @@ -233,18 +272,13 @@ const main = async () => { const userStatsMap = new UserStatsMap(driftClient); - logger.info(`Initializing userMap...`); + logger.info(`Initializing DLOB Provider...`); const initUserMapStart = Date.now(); - const userMap = new UserMap( - driftClient, - driftClient.userAccountSubscriptionConfig, - false - ); - await userMap.subscribe(); - logger.info(`userMap initialized in ${Date.now() - initUserMapStart} ms`); + await dlobProvider.subscribe(); + logger.info(`dlob provider initialized in ${Date.now() - initUserMapStart} ms`); const initUserStatsMapStarts = Date.now(); - await userStatsMap.sync(userMap.getUniqueAuthorities()); + await userStatsMap.sync(dlobProvider.getUniqueAuthorities()); logger.info( `userStatsMap initialized in ${Date.now() - initUserStatsMapStarts} ms` ); @@ -253,7 +287,7 @@ const main = async () => { const initDlobSubscriberStart = Date.now(); const dlobSubscriber = new DLOBSubscriber({ driftClient, - dlobSource: userMap, + dlobSource: dlobProvider, slotSource, updateFrequency: ORDERBOOK_UPDATE_INTERVAL, }); @@ -267,7 +301,7 @@ const main = async () => { const handleStartup = async (_req, res, _next) => { if ( driftClient.isSubscribed && - userMap.size() > 0 && + dlobProvider.size() > 0 && userStatsMap.size() > 0 ) { res.writeHead(200); @@ -299,16 +333,14 @@ const main = async () => { }); } - for (const user of userMap.values()) { - const userAccount = user.getUserAccount(); - + for (const {userAccount, publicKey} of dlobProvider.getUserAccounts()) { for (const order of userAccount.orders) { if (isVariant(order.status, 'init')) { continue; } orders.push({ - user: user.getUserAccountPublicKey().toBase58(), + user: publicKey.toBase58(), order: order, }); } @@ -354,9 +386,7 @@ const main = async () => { } oracles.push(oracleHuman); } - for (const user of userMap.values()) { - const userAccount = user.getUserAccount(); - + for (const {userAccount, publicKey} of dlobProvider.getUserAccounts()) { for (const order of userAccount.orders) { if (isVariant(order.status, 'init')) { continue; @@ -394,7 +424,7 @@ const main = async () => { } orders.push({ - user: user.getUserAccountPublicKey().toBase58(), + user: publicKey.toBase58(), order: orderHuman, }); } @@ -418,16 +448,14 @@ const main = async () => { try { const dlobOrders: DLOBOrders = []; - for (const user of userMap.values()) { - const userAccount = user.getUserAccount(); - + for (const {userAccount, publicKey} of dlobProvider.getUserAccounts()) { for (const order of userAccount.orders) { if (isVariant(order.status, 'init')) { continue; } dlobOrders.push({ - user: user.getUserAccountPublicKey(), + user: publicKey, order, } as DLOBOrder); } @@ -468,9 +496,7 @@ const main = async () => { const dlobOrders: DLOBOrders = []; - for (const user of userMap.values()) { - const userAccount = user.getUserAccount(); - + for (const {userAccount, publicKey} of dlobProvider.getUserAccounts()) { for (const order of userAccount.orders) { if (isVariant(order.status, 'init')) { continue; @@ -486,7 +512,7 @@ const main = async () => { } dlobOrders.push({ - user: user.getUserAccountPublicKey(), + user: publicKey, order, } as DLOBOrder); } @@ -557,10 +583,9 @@ const main = async () => { continue; } else { if (`${includeUserStats}`.toLowerCase() === 'true') { - const userAccount = side.userAccount.toBase58(); - await userMap.mustGet(userAccount); + const userAccount = dlobProvider.getUserAccount(side.userAccount); const userStats = await userStatsMap.mustGet( - userMap.getUserAuthority(userAccount)!.toBase58() + userAccount.authority.toBase58() ); topMakers.add([ userAccount, From db4a6685425a34a2e8217514282d76a0580fe7ac Mon Sep 17 00:00:00 2001 From: Chris Heaney Date: Tue, 28 Nov 2023 21:14:45 -0500 Subject: [PATCH 2/5] updates to package.json and publisher --- package.json | 2 +- src/index.ts | 1 + src/publishers/dlobPublisher.ts | 48 ++++++++++++++++++++++++--------- yarn.lock | 8 +++--- 4 files changed, 42 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 9b8a8f8..729e823 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "lib/index.js", "license": "Apache-2.0", "dependencies": { - "@drift-labs/sdk": "2.48.0-beta.11", + "@drift-labs/sdk": "2.48.0-beta.13", "@opentelemetry/api": "^1.1.0", "@opentelemetry/auto-instrumentations-node": "^0.31.1", "@opentelemetry/exporter-prometheus": "^0.31.0", diff --git a/src/index.ts b/src/index.ts index f96be35..ad00bb5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -276,6 +276,7 @@ const main = async () => { const initUserMapStart = Date.now(); await dlobProvider.subscribe(); logger.info(`dlob provider initialized in ${Date.now() - initUserMapStart} ms`); + logger.info(`dlob provider size ${dlobProvider.size()}`); const initUserStatsMapStarts = Date.now(); await userStatsMap.sync(dlobProvider.getUniqueAuthorities()); diff --git a/src/publishers/dlobPublisher.ts b/src/publishers/dlobPublisher.ts index a598f30..a9d2a3e 100644 --- a/src/publishers/dlobPublisher.ts +++ b/src/publishers/dlobPublisher.ts @@ -9,13 +9,14 @@ import { SlotSubscriber, UserMap, Wallet, - BulkAccountLoader, + BulkAccountLoader, OrderSubscriber, SlotSource, } from '@drift-labs/sdk'; import { logger, setLogLevel } from '../utils/logger'; import { sleep } from '../utils/utils'; import { DLOBSubscriberIO } from '../dlob-subscriber/DLOBSubscriberIO'; import { RedisClient } from '../utils/redisClient'; +import {DLOBProvider, getDLOBProviderFromOrderSubscriber, getDLOBProviderFromUserMap} from "../dlobProvider"; require('dotenv').config(); const driftEnv = (process.env.ENV || 'devnet') as DriftEnv; @@ -37,6 +38,8 @@ setLogLevel(opts.debug ? 'debug' : 'info'); const endpoint = process.env.ENDPOINT; const wsEndpoint = process.env.WS_ENDPOINT; +const useOrderSubscriber = process.env.USE_ORDER_SUBSCRIBER?.toLowerCase() === 'true'; + logger.info(`RPC endpoint: ${endpoint}`); logger.info(`WS endpoint: ${wsEndpoint}`); logger.info(`DriftEnv: ${driftEnv}`); @@ -68,8 +71,6 @@ const main = async () => { env: driftEnv, }); - const slotSubscriber = new SlotSubscriber(connection, {}); - const lamportsBalance = await connection.getBalance(wallet.publicKey); logger.info( `DriftClient ProgramId: ${driftClient.program.programId.toBase58()}` @@ -83,22 +84,45 @@ const main = async () => { logger.error(e); }); - await slotSubscriber.subscribe(); + let slotSource: SlotSource; + let dlobProvider : DLOBProvider; + if (useOrderSubscriber) { + const orderSubscriber = new OrderSubscriber({ + driftClient, + subscriptionConfig: { + type: "polling", + frequency: ORDERBOOK_UPDATE_INTERVAL + }, + }); - const userMap = new UserMap( - driftClient, - driftClient.userAccountSubscriptionConfig, - false - ); - await userMap.subscribe(); + dlobProvider = getDLOBProviderFromOrderSubscriber(orderSubscriber); + + slotSource = { + getSlot: () => orderSubscriber.getSlot(), + }; + } else { + const userMap = new UserMap( + driftClient, + driftClient.userAccountSubscriptionConfig, + false + ); + + dlobProvider = getDLOBProviderFromUserMap(userMap); + + slotSource = { + getSlot: () => bulkAccountLoader.getSlot(), + }; + } + + await dlobProvider.subscribe(); const redisClient = new RedisClient(REDIS_HOST, REDIS_PORT, REDIS_PASSWORD); await redisClient.connect(); const dlobSubscriber = new DLOBSubscriberIO({ driftClient, - dlobSource: userMap, - slotSource: slotSubscriber, + dlobSource: dlobProvider, + slotSource, updateFrequency: ORDERBOOK_UPDATE_INTERVAL, redisClient, }); diff --git a/yarn.lock b/yarn.lock index 09455f5..8f7a265 100644 --- a/yarn.lock +++ b/yarn.lock @@ -80,10 +80,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.48.0-beta.11": - version "2.48.0-beta.11" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.48.0-beta.11.tgz#cd2f7b908754d49f62964ab894d3ab6c248dee3f" - integrity sha512-lhBlBUmKT3w9EMTDIBcEUdRgqZ6OHLfqPukxW4gVoa6eFqIpcaTk/DGTj3HCli6C684YwVHJfCQx4kXfffv6Sw== +"@drift-labs/sdk@2.48.0-beta.13": + version "2.48.0-beta.13" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.48.0-beta.13.tgz#0ad1cfd4daac97e1859fe617a749a2676e462b63" + integrity sha512-ogtY38Db44PVZOr8WwNHijnwVMBLFvIYNxmlE9BPehdEgIQ9PYT9QXalanhQ1Ruc/Cs5DbMIT3XvjtLyfFzEUg== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From d66eb874df71685800584f2522dc89ed29a673b5 Mon Sep 17 00:00:00 2001 From: Chris Heaney Date: Tue, 28 Nov 2023 21:15:08 -0500 Subject: [PATCH 3/5] prettify:fix --- src/dlobProvider.ts | 42 +++++++++++++++++++++------------ src/index.ts | 33 ++++++++++++++++---------- src/publishers/dlobPublisher.ts | 19 ++++++++++----- 3 files changed, 61 insertions(+), 33 deletions(-) diff --git a/src/dlobProvider.ts b/src/dlobProvider.ts index bfa58f2..1470543 100644 --- a/src/dlobProvider.ts +++ b/src/dlobProvider.ts @@ -1,16 +1,19 @@ -import {DLOB, OrderSubscriber, UserAccount, UserMap} from "@drift-labs/sdk"; -import {PublicKey} from "@solana/web3.js"; +import { DLOB, OrderSubscriber, UserAccount, UserMap } from '@drift-labs/sdk'; +import { PublicKey } from '@solana/web3.js'; export type DLOBProvider = { - subscribe() : Promise; + subscribe(): Promise; getDLOB(slot: number): Promise; getUniqueAuthorities(): PublicKey[]; - getUserAccounts(): Generator<{userAccount: UserAccount, publicKey: PublicKey}>; + getUserAccounts(): Generator<{ + userAccount: UserAccount; + publicKey: PublicKey; + }>; getUserAccount(publicKey: PublicKey): UserAccount | undefined; size(): number; -} +}; -export function getDLOBProviderFromUserMap(userMap:UserMap) : DLOBProvider { +export function getDLOBProviderFromUserMap(userMap: UserMap): DLOBProvider { return { subscribe: async () => { await userMap.subscribe(); @@ -21,9 +24,12 @@ export function getDLOBProviderFromUserMap(userMap:UserMap) : DLOBProvider { getUniqueAuthorities: () => { return userMap.getUniqueAuthorities(); }, - getUserAccounts: function*() { + getUserAccounts: function* () { for (const user of userMap.values()) { - yield {userAccount: user.getUserAccount(), publicKey: user.getUserAccountPublicKey()}; + yield { + userAccount: user.getUserAccount(), + publicKey: user.getUserAccountPublicKey(), + }; } }, getUserAccount: (publicKey) => { @@ -31,11 +37,13 @@ export function getDLOBProviderFromUserMap(userMap:UserMap) : DLOBProvider { }, size: () => { return userMap.size(); - } + }, }; } -export function getDLOBProviderFromOrderSubscriber(orderSubscriber: OrderSubscriber) : DLOBProvider { +export function getDLOBProviderFromOrderSubscriber( + orderSubscriber: OrderSubscriber +): DLOBProvider { return { subscribe: async () => { await orderSubscriber.subscribe(); @@ -50,16 +58,20 @@ export function getDLOBProviderFromOrderSubscriber(orderSubscriber: OrderSubscri } return Array.from(authorities.values()); }, - getUserAccounts: function*() { - for (const [key, {userAccount}] of orderSubscriber.usersAccounts.entries()) { - yield {userAccount: userAccount, publicKey: new PublicKey(key)}; + getUserAccounts: function* () { + for (const [ + key, + { userAccount }, + ] of orderSubscriber.usersAccounts.entries()) { + yield { userAccount: userAccount, publicKey: new PublicKey(key) }; } }, getUserAccount: (publicKey) => { - return orderSubscriber.usersAccounts.get(publicKey.toString())?.userAccount; + return orderSubscriber.usersAccounts.get(publicKey.toString()) + ?.userAccount; }, size(): number { return orderSubscriber.usersAccounts.size; - } + }, }; } diff --git a/src/index.ts b/src/index.ts index ad00bb5..c960e32 100644 --- a/src/index.ts +++ b/src/index.ts @@ -47,7 +47,11 @@ import { sleep, validateDlobQuery, } from './utils/utils'; -import {DLOBProvider, getDLOBProviderFromOrderSubscriber, getDLOBProviderFromUserMap} from "./dlobProvider"; +import { + DLOBProvider, + getDLOBProviderFromOrderSubscriber, + getDLOBProviderFromUserMap, +} from './dlobProvider'; require('dotenv').config(); const driftEnv = (process.env.ENV || 'devnet') as DriftEnv; @@ -59,7 +63,8 @@ const stateCommitment: Commitment = 'processed'; const serverPort = process.env.PORT || 6969; export const ORDERBOOK_UPDATE_INTERVAL = 1000; const useWebsocket = process.env.USE_WEBSOCKET?.toLowerCase() === 'true'; -const useOrderSubscriber = process.env.USE_ORDER_SUBSCRIBER?.toLowerCase() === 'true'; +const useOrderSubscriber = + process.env.USE_ORDER_SUBSCRIBER?.toLowerCase() === 'true'; const rateLimitCallsPerSecond = process.env.RATE_LIMIT_CALLS_PER_SECOND ? parseInt(process.env.RATE_LIMIT_CALLS_PER_SECOND) @@ -224,17 +229,17 @@ const main = async () => { env: driftEnv, }); - let dlobProvider : DLOBProvider; + let dlobProvider: DLOBProvider; if (useOrderSubscriber) { let subscriptionConfig; if (useWebsocket) { subscriptionConfig = { - type: "websocket", + type: 'websocket', }; } else { subscriptionConfig = { - type: "polling", - frequency: ORDERBOOK_UPDATE_INTERVAL + type: 'polling', + frequency: ORDERBOOK_UPDATE_INTERVAL, }; } @@ -275,7 +280,9 @@ const main = async () => { logger.info(`Initializing DLOB Provider...`); const initUserMapStart = Date.now(); await dlobProvider.subscribe(); - logger.info(`dlob provider initialized in ${Date.now() - initUserMapStart} ms`); + logger.info( + `dlob provider initialized in ${Date.now() - initUserMapStart} ms` + ); logger.info(`dlob provider size ${dlobProvider.size()}`); const initUserStatsMapStarts = Date.now(); @@ -334,7 +341,7 @@ const main = async () => { }); } - for (const {userAccount, publicKey} of dlobProvider.getUserAccounts()) { + for (const { userAccount, publicKey } of dlobProvider.getUserAccounts()) { for (const order of userAccount.orders) { if (isVariant(order.status, 'init')) { continue; @@ -387,7 +394,7 @@ const main = async () => { } oracles.push(oracleHuman); } - for (const {userAccount, publicKey} of dlobProvider.getUserAccounts()) { + for (const { userAccount, publicKey } of dlobProvider.getUserAccounts()) { for (const order of userAccount.orders) { if (isVariant(order.status, 'init')) { continue; @@ -449,7 +456,7 @@ const main = async () => { try { const dlobOrders: DLOBOrders = []; - for (const {userAccount, publicKey} of dlobProvider.getUserAccounts()) { + for (const { userAccount, publicKey } of dlobProvider.getUserAccounts()) { for (const order of userAccount.orders) { if (isVariant(order.status, 'init')) { continue; @@ -497,7 +504,7 @@ const main = async () => { const dlobOrders: DLOBOrders = []; - for (const {userAccount, publicKey} of dlobProvider.getUserAccounts()) { + for (const { userAccount, publicKey } of dlobProvider.getUserAccounts()) { for (const order of userAccount.orders) { if (isVariant(order.status, 'init')) { continue; @@ -584,7 +591,9 @@ const main = async () => { continue; } else { if (`${includeUserStats}`.toLowerCase() === 'true') { - const userAccount = dlobProvider.getUserAccount(side.userAccount); + const userAccount = dlobProvider.getUserAccount( + side.userAccount + ); const userStats = await userStatsMap.mustGet( userAccount.authority.toBase58() ); diff --git a/src/publishers/dlobPublisher.ts b/src/publishers/dlobPublisher.ts index a9d2a3e..3ba8e6c 100644 --- a/src/publishers/dlobPublisher.ts +++ b/src/publishers/dlobPublisher.ts @@ -9,14 +9,20 @@ import { SlotSubscriber, UserMap, Wallet, - BulkAccountLoader, OrderSubscriber, SlotSource, + BulkAccountLoader, + OrderSubscriber, + SlotSource, } from '@drift-labs/sdk'; import { logger, setLogLevel } from '../utils/logger'; import { sleep } from '../utils/utils'; import { DLOBSubscriberIO } from '../dlob-subscriber/DLOBSubscriberIO'; import { RedisClient } from '../utils/redisClient'; -import {DLOBProvider, getDLOBProviderFromOrderSubscriber, getDLOBProviderFromUserMap} from "../dlobProvider"; +import { + DLOBProvider, + getDLOBProviderFromOrderSubscriber, + getDLOBProviderFromUserMap, +} from '../dlobProvider'; require('dotenv').config(); const driftEnv = (process.env.ENV || 'devnet') as DriftEnv; @@ -38,7 +44,8 @@ setLogLevel(opts.debug ? 'debug' : 'info'); const endpoint = process.env.ENDPOINT; const wsEndpoint = process.env.WS_ENDPOINT; -const useOrderSubscriber = process.env.USE_ORDER_SUBSCRIBER?.toLowerCase() === 'true'; +const useOrderSubscriber = + process.env.USE_ORDER_SUBSCRIBER?.toLowerCase() === 'true'; logger.info(`RPC endpoint: ${endpoint}`); logger.info(`WS endpoint: ${wsEndpoint}`); @@ -85,13 +92,13 @@ const main = async () => { }); let slotSource: SlotSource; - let dlobProvider : DLOBProvider; + let dlobProvider: DLOBProvider; if (useOrderSubscriber) { const orderSubscriber = new OrderSubscriber({ driftClient, subscriptionConfig: { - type: "polling", - frequency: ORDERBOOK_UPDATE_INTERVAL + type: 'polling', + frequency: ORDERBOOK_UPDATE_INTERVAL, }, }); From e5c9f0e96872a8b9874857027f9a5ee34d766be5 Mon Sep 17 00:00:00 2001 From: Chris Heaney Date: Tue, 28 Nov 2023 21:25:10 -0500 Subject: [PATCH 4/5] rm unused import --- src/publishers/dlobPublisher.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/publishers/dlobPublisher.ts b/src/publishers/dlobPublisher.ts index 3ba8e6c..9ad03d7 100644 --- a/src/publishers/dlobPublisher.ts +++ b/src/publishers/dlobPublisher.ts @@ -6,7 +6,6 @@ import { DriftClient, initialize, DriftEnv, - SlotSubscriber, UserMap, Wallet, BulkAccountLoader, From 506dc615383a183ce523691e4f4ac23f73374e51 Mon Sep 17 00:00:00 2001 From: Chris Heaney Date: Tue, 28 Nov 2023 21:27:52 -0500 Subject: [PATCH 5/5] tweak namings --- src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index fd138a3..888b6a1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -276,10 +276,10 @@ const main = async () => { }, ORDERBOOK_UPDATE_INTERVAL); logger.info(`Initializing DLOB Provider...`); - const initUserMapStart = Date.now(); + const initDLOBProviderStart = Date.now(); await dlobProvider.subscribe(); logger.info( - `dlob provider initialized in ${Date.now() - initUserMapStart} ms` + `dlob provider initialized in ${Date.now() - initDLOBProviderStart} ms` ); logger.info(`dlob provider size ${dlobProvider.size()}`);