From 6726455b7768576bd5cba408c5e5eb8516f03cb9 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Apr 2024 00:21:35 +0000 Subject: [PATCH 1/4] Bumping sdk dependency to 2.79.0-beta.0 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 838e74b..48c4144 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "Apache-2.0", "dependencies": { "@coral-xyz/anchor": "^0.29.0", - "@drift-labs/sdk": "2.78.0-beta.0", + "@drift-labs/sdk": "2.79.0-beta.0", "@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 42e1ecb..12de5c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -115,10 +115,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.78.0-beta.0": - version "2.78.0-beta.0" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.78.0-beta.0.tgz#5b33c41c561825ebef8849fdc71a76194715d5be" - integrity sha512-Z/+NY15Du9zRjA9ExIZFsNhxwE0OY5JGdfiu5wPk2mjRmOneEu71sltu5Z+yA89z8nGw/s0oZKdAsQnUZLzX6A== +"@drift-labs/sdk@2.79.0-beta.0": + version "2.79.0-beta.0" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.79.0-beta.0.tgz#007bba43645c37ae99d37959feda7c9a54b5688f" + integrity sha512-/e/1WLto+T8aKszsbQyl7qKnjdFLU6PHXNb4RhHEv2K/1nMRsU+k0h6/V6g9qu7b3jELx5aD6ljt9/EBq82jsg== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From 56d26fe3dc7e132a34f7fae5979c6807ebe7d282 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Apr 2024 03:12:04 +0000 Subject: [PATCH 2/4] Bumping sdk dependency to 2.79.0-beta.1 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 48c4144..d0e2dfc 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "Apache-2.0", "dependencies": { "@coral-xyz/anchor": "^0.29.0", - "@drift-labs/sdk": "2.79.0-beta.0", + "@drift-labs/sdk": "2.79.0-beta.1", "@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 12de5c4..0905cd9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -115,10 +115,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.79.0-beta.0": - version "2.79.0-beta.0" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.79.0-beta.0.tgz#007bba43645c37ae99d37959feda7c9a54b5688f" - integrity sha512-/e/1WLto+T8aKszsbQyl7qKnjdFLU6PHXNb4RhHEv2K/1nMRsU+k0h6/V6g9qu7b3jELx5aD6ljt9/EBq82jsg== +"@drift-labs/sdk@2.79.0-beta.1": + version "2.79.0-beta.1" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.79.0-beta.1.tgz#413e5d4448f2771d934a2b64b262dd7b193fe761" + integrity sha512-dxwnOkMT0Xl+vnfjCFaS9SF6k4foxvr8gPDjfCL7EHrnQKyyjkcnLqtdjcz9ZyyCljVHRLkc+Svgdlh9E/2S+A== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From 202cb26b4a32ce7636a4e757653cfa354637912d Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Apr 2024 06:13:21 +0000 Subject: [PATCH 3/4] Bumping sdk dependency to 2.79.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 d0e2dfc..abbb3c7 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "Apache-2.0", "dependencies": { "@coral-xyz/anchor": "^0.29.0", - "@drift-labs/sdk": "2.79.0-beta.1", + "@drift-labs/sdk": "2.79.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 0905cd9..fa83e38 100644 --- a/yarn.lock +++ b/yarn.lock @@ -115,10 +115,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.79.0-beta.1": - version "2.79.0-beta.1" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.79.0-beta.1.tgz#413e5d4448f2771d934a2b64b262dd7b193fe761" - integrity sha512-dxwnOkMT0Xl+vnfjCFaS9SF6k4foxvr8gPDjfCL7EHrnQKyyjkcnLqtdjcz9ZyyCljVHRLkc+Svgdlh9E/2S+A== +"@drift-labs/sdk@2.79.0-beta.2": + version "2.79.0-beta.2" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.79.0-beta.2.tgz#0b339759ceabd16334744db371843a9af3d6de36" + integrity sha512-gXgLiw60KK+fBHA78oVy/ydZKDJe9vyJva8ab1rTQEtSpHA2rGGTKQRcpmfV0qOkRM4O4e54FwNg6SOSPAUZoQ== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From 0bf8966e11135139690ceaaab78f86d041944aa1 Mon Sep 17 00:00:00 2001 From: Nour Alharithi Date: Wed, 17 Apr 2024 09:22:40 -0700 Subject: [PATCH 4/4] cleanup --- src/index.ts | 77 +++++++++++++--------------------------------------- 1 file changed, 19 insertions(+), 58 deletions(-) diff --git a/src/index.ts b/src/index.ts index a2d403d..701f8fe 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,11 +7,9 @@ import morgan from 'morgan'; import { Commitment, Connection, Keypair, PublicKey } from '@solana/web3.js'; import { - BulkAccountLoader, DLOBNode, DLOBSubscriber, DriftClient, - DriftClientSubscriptionConfig, DriftEnv, SlotSubscriber, Wallet, @@ -92,7 +90,7 @@ const serverPort = process.env.PORT || 6969; export const ORDERBOOK_UPDATE_INTERVAL = 1000; const WS_FALLBACK_FETCH_INTERVAL = ORDERBOOK_UPDATE_INTERVAL * 10; const SLOT_STALENESS_TOLERANCE = - parseInt(process.env.SLOT_STALENESS_TOLERANCE) || 20; + parseInt(process.env.SLOT_STALENESS_TOLERANCE) || 35; const ROTATION_COOLDOWN = parseInt(process.env.ROTATION_COOLDOWN) || 5000; const useWebsocket = process.env.USE_WEBSOCKET?.toLowerCase() === 'true'; const useRedis = process.env.USE_REDIS?.toLowerCase() === 'true'; @@ -226,63 +224,32 @@ const main = async (): Promise => { commitment: stateCommitment, }); - // only set when polling - let bulkAccountLoader: BulkAccountLoader | undefined; - - // only set when using websockets - let slotSubscriber: SlotSubscriber | undefined; - - let accountSubscription: DriftClientSubscriptionConfig; - - if (!useWebsocket) { - bulkAccountLoader = new BulkAccountLoader( - connection, - stateCommitment, - ORDERBOOK_UPDATE_INTERVAL - ); - - accountSubscription = { - type: 'polling', - accountLoader: bulkAccountLoader, - }; - } else { - accountSubscription = { - type: 'websocket', - commitment: stateCommitment, - }; - slotSubscriber = new SlotSubscriber(connection, { - resubTimeoutMs: 5000, - }); - await slotSubscriber.subscribe(); - } + const slotSubscriber = new SlotSubscriber(connection, { + resubTimeoutMs: 5000, + }); + await slotSubscriber.subscribe(); driftClient = new DriftClient({ connection, wallet, programID: clearingHousePublicKey, - accountSubscription, - env: driftEnv, - }); - - let subscriptionConfig; - if (useWebsocket) { - subscriptionConfig = { + accountSubscription: { type: 'websocket', commitment: stateCommitment, - resyncIntervalMs: WS_FALLBACK_FETCH_INTERVAL, - }; - } else { - subscriptionConfig = { - type: 'polling', - frequency: ORDERBOOK_UPDATE_INTERVAL, - commitment: stateCommitment, - }; - } + resubTimeoutMs: 60_000, + }, + env: driftEnv, + }); let updatesReceivedTotal = 0; const orderSubscriber = new OrderSubscriber({ driftClient, - subscriptionConfig, + subscriptionConfig: { + type: 'websocket', + commitment: stateCommitment, + resubTimeoutMs: 10_000, + resyncIntervalMs: WS_FALLBACK_FETCH_INTERVAL, + }, }); orderSubscriber.eventEmitter.on( 'updateReceived', @@ -690,11 +657,7 @@ const main = async (): Promise => { let l2Formatted: any; if (useRedis) { - if ( - !isSpot && - `${includeVamm}`?.toLowerCase() === 'true' && - `${includeOracle}`?.toLowerCase() === 'true' - ) { + if (!isSpot && `${includeVamm}`?.toLowerCase() === 'true') { let redisL2: string; const redisClient = perpMarketRedisMap.get(normedMarketIndex).client; if (parseInt(adjustedDepth as string) === 5) { @@ -726,8 +689,7 @@ const main = async (): Promise => { } else if ( isSpot && `${includeSerum}`?.toLowerCase() === 'true' && - `${includePhoenix}`?.toLowerCase() === 'true' && - `${includeOracle}`?.toLowerCase() === 'true' + `${includePhoenix}`?.toLowerCase() === 'true' ) { let redisL2: string; const redisClient = spotMarketRedisMap.get(normedMarketIndex).client; @@ -866,8 +828,7 @@ const main = async (): Promise => { if (useRedis) { if ( !isSpot && - normedParam['includeVamm']?.toLowerCase() === 'true' && - normedParam['includeOracle']?.toLowerCase() === 'true' + normedParam['includeVamm']?.toLowerCase() === 'true' ) { let redisL2: string; const redisClient =