From cbe88d100146292e287c9bb6c61dc5811d0c01fb Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 13:32:59 +0000 Subject: [PATCH 1/8] Bumping sdk dependency to 2.45.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 5b51040..60be382 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "lib/index.js", "license": "Apache-2.0", "dependencies": { - "@drift-labs/sdk": "2.45.0-beta.0", + "@drift-labs/sdk": "2.45.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 5e3a7e9..e385363 100644 --- a/yarn.lock +++ b/yarn.lock @@ -80,10 +80,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.45.0-beta.0": - version "2.45.0-beta.0" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.45.0-beta.0.tgz#9805d09bd44cddfdfe85c2f0af38fc963604fe9e" - integrity sha512-hZht2wAxv/QVh1f7cneY6e0dsV2d23hsupZXpkC9j6aepW74SyHQRu+Btjfjhh5w27ViqnAVv3Ab1O1hYzrJyw== +"@drift-labs/sdk@2.45.0-beta.1": + version "2.45.0-beta.1" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.45.0-beta.1.tgz#f1ebd950eb273a0649e4ce2eacd04b6d7f7fc28a" + integrity sha512-Ab05szcVv67jlJ3DgtY5UC2g+dG9AWTHtiS33Z2kMstf3OdgVp+wKFLL9Y9/xzpBI8nZo01QzsUU2P1SAi8N2A== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From 613f4ccf63f1ee00695937422bc8c4ae12b57182 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 19:55:42 +0000 Subject: [PATCH 2/8] Bumping sdk dependency to 2.45.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 60be382..cd2b648 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "lib/index.js", "license": "Apache-2.0", "dependencies": { - "@drift-labs/sdk": "2.45.0-beta.1", + "@drift-labs/sdk": "2.45.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 e385363..87f5666 100644 --- a/yarn.lock +++ b/yarn.lock @@ -80,10 +80,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.45.0-beta.1": - version "2.45.0-beta.1" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.45.0-beta.1.tgz#f1ebd950eb273a0649e4ce2eacd04b6d7f7fc28a" - integrity sha512-Ab05szcVv67jlJ3DgtY5UC2g+dG9AWTHtiS33Z2kMstf3OdgVp+wKFLL9Y9/xzpBI8nZo01QzsUU2P1SAi8N2A== +"@drift-labs/sdk@2.45.0-beta.2": + version "2.45.0-beta.2" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.45.0-beta.2.tgz#459cade1535e0f37dfb66620d9e81c02a94f690a" + integrity sha512-H7OIXakoiDo0HZcken6Ocgluuh72MOnScX+ITsBUCj6hHW3ZhH8g1Z/wRIAWuHeefMS2kmYOE/obKaz/lWDbbA== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From 6ce59a1394181962f0b5d4479c912213995a1512 Mon Sep 17 00:00:00 2001 From: Nour Alharithi Date: Mon, 20 Nov 2023 13:54:46 -0800 Subject: [PATCH 3/8] patch trades and move last update --- src/dlob-subscriber/DLOBSubscriberIO.ts | 4 ++++ src/publishers/tradesPublisher.ts | 6 +++++- src/wsConnectionManager.ts | 6 ------ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/dlob-subscriber/DLOBSubscriberIO.ts b/src/dlob-subscriber/DLOBSubscriberIO.ts index a61d2d7..9d2e200 100644 --- a/src/dlob-subscriber/DLOBSubscriberIO.ts +++ b/src/dlob-subscriber/DLOBSubscriberIO.ts @@ -115,5 +115,9 @@ export class DLOBSubscriberIO extends DLOBSubscriber { `orderbook_${marketType}_${l2Args.marketIndex}`, JSON.stringify(l2Formatted) ); + this.redisClient.client.set( + `last_update_orderbook_${marketType}_${l2Args.marketIndex}`, + JSON.stringify(l2Formatted) + ); } } diff --git a/src/publishers/tradesPublisher.ts b/src/publishers/tradesPublisher.ts index 513de34..5feaaf1 100644 --- a/src/publishers/tradesPublisher.ts +++ b/src/publishers/tradesPublisher.ts @@ -17,6 +17,7 @@ import { QUOTE_PRECISION, PRICE_PRECISION, getVariant, + ZERO, } from '@drift-labs/sdk'; import { logger, setLogLevel } from '../utils/logger'; @@ -181,7 +182,10 @@ const main = async () => { slot: fill.slot, action: 'fill', actionExplanation: getVariant(fill.actionExplanation), - referrerReward: convertToNumber(fill.referrerReward, QUOTE_PRECISION), + referrerReward: convertToNumber( + fill.referrerReward ?? ZERO, + QUOTE_PRECISION + ), }; }) ) diff --git a/src/wsConnectionManager.ts b/src/wsConnectionManager.ts index 4263e20..8b7283f 100644 --- a/src/wsConnectionManager.ts +++ b/src/wsConnectionManager.ts @@ -93,12 +93,6 @@ async function main() { subscribers.forEach((ws) => { ws.send(JSON.stringify({ channel: subscribedChannel, data: message })); }); - - // Save and persist last message - lastMessageRetriever.client.set( - `last_update_${subscribedChannel}`, - message - ); }); redisClient.client.on('error', (error) => { From 2ca9707fc0e8876436b550b31f63e1e21d145595 Mon Sep 17 00:00:00 2001 From: Chris Heaney Date: Mon, 20 Nov 2023 17:43:50 -0500 Subject: [PATCH 4/8] make user stats polling time 0 --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 6b16267..820a5bb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -217,7 +217,7 @@ const main = async () => { accountLoader: new BulkAccountLoader( connection, stateCommitment, - ORDERBOOK_UPDATE_INTERVAL * 10 + 0 ), }); await userStatsMap.subscribe(); From 54f5332a1a7bb8dc63f77138ffa9e9ed5d90155e Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 22:54:03 +0000 Subject: [PATCH 5/8] Bumping sdk dependency to 2.45.0-beta.3 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index cd2b648..8ca84f0 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "lib/index.js", "license": "Apache-2.0", "dependencies": { - "@drift-labs/sdk": "2.45.0-beta.2", + "@drift-labs/sdk": "2.45.0-beta.3", "@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 87f5666..d4a505f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -80,10 +80,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.45.0-beta.2": - version "2.45.0-beta.2" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.45.0-beta.2.tgz#459cade1535e0f37dfb66620d9e81c02a94f690a" - integrity sha512-H7OIXakoiDo0HZcken6Ocgluuh72MOnScX+ITsBUCj6hHW3ZhH8g1Z/wRIAWuHeefMS2kmYOE/obKaz/lWDbbA== +"@drift-labs/sdk@2.45.0-beta.3": + version "2.45.0-beta.3" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.45.0-beta.3.tgz#f7d7887911ce348c0fe65cb921b02de1c50375a7" + integrity sha512-iw9rEGZoLXxGz22sg9y2XYNIxSLJXgWMj+3jrSuHsRPj0UVWzLwHvC+qnwFUHtEKXj4XQZYdsxDUJ2Zkco06EQ== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From b4bdbd617f7654afcdf5becea4478448b3a486f4 Mon Sep 17 00:00:00 2001 From: Chris Heaney Date: Mon, 20 Nov 2023 18:01:28 -0500 Subject: [PATCH 6/8] use bulk account loader for most recent slot --- src/index.ts | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/index.ts b/src/index.ts index 820a5bb..f8a2baf 100644 --- a/src/index.ts +++ b/src/index.ts @@ -184,7 +184,6 @@ const main = async () => { }); const dlobCoder = DLOBOrdersCoder.create(); - const slotSubscriber = new SlotSubscriber(connection, {}); const lamportsBalance = await connection.getBalance(wallet.publicKey); logger.info( @@ -199,12 +198,15 @@ const main = async () => { logger.error(e); }); - await slotSubscriber.subscribe(); - slotSubscriber.eventEmitter.on('newSlot', async (slot: number) => { + setInterval(async () => { + if (lastSlotReceivedMutex.isLocked()) { + return; + } + await lastSlotReceivedMutex.runExclusive(async () => { - lastSlotReceived = slot; + lastSlotReceived = bulkAccountLoader.getSlot(); }); - }); + }, ORDERBOOK_UPDATE_INTERVAL); const userMap = new UserMap( driftClient, @@ -225,7 +227,7 @@ const main = async () => { const dlobSubscriber = new DLOBSubscriber({ driftClient, dlobSource: userMap, - slotSource: slotSubscriber, + slotSource: bulkAccountLoader, updateFrequency: ORDERBOOK_UPDATE_INTERVAL, }); await dlobSubscriber.subscribe(); @@ -255,7 +257,7 @@ const main = async () => { // object with userAccount key and orders object serialized const orders: Array = []; const oracles: Array = []; - const slot = slotSubscriber.currentSlot; + const slot = bulkAccountLoader.getSlot(); for (const market of driftClient.getPerpMarketAccounts()) { const oracle = driftClient.getOracleDataForPerpMarket( @@ -299,7 +301,7 @@ const main = async () => { app.get('/orders/json', async (_req, res, next) => { try { // object with userAccount key and orders object serialized - const slot = slotSubscriber.currentSlot; + const slot = bulkAccountLoader.getSlot(); const orders: Array = []; const oracles: Array = []; for (const market of driftClient.getPerpMarketAccounts()) { @@ -462,7 +464,7 @@ const main = async () => { res.end( JSON.stringify({ - slot: slotSubscriber.currentSlot, + slot: bulkAccountLoader.getSlot(), data: dlobCoder.encode(dlobOrders).toString('base64'), }) ); @@ -551,7 +553,7 @@ const main = async () => { .getDLOB() .getRestingLimitBids( normedMarketIndex, - slotSubscriber.getSlot(), + bulkAccountLoader.getSlot(), normedMarketType, oracle ) @@ -562,7 +564,7 @@ const main = async () => { .getDLOB() .getRestingLimitAsks( normedMarketIndex, - slotSubscriber.getSlot(), + bulkAccountLoader.getSlot(), normedMarketType, oracle ) From e7bd57ad8cd50b19bd242ad5a81838e0cc8af845 Mon Sep 17 00:00:00 2001 From: Chris Heaney Date: Mon, 20 Nov 2023 18:47:11 -0500 Subject: [PATCH 7/8] tweak updates for lastSlotReceivedMutex --- src/index.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/index.ts b/src/index.ts index f8a2baf..8ff170f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -199,10 +199,6 @@ const main = async () => { }); setInterval(async () => { - if (lastSlotReceivedMutex.isLocked()) { - return; - } - await lastSlotReceivedMutex.runExclusive(async () => { lastSlotReceived = bulkAccountLoader.getSlot(); }); From 366aa8b178d09b14af5aafafa347bfbaf75d386d Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:27:02 +0000 Subject: [PATCH 8/8] Bumping sdk dependency to 2.45.0-beta.4 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8ca84f0..e3d2fde 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "lib/index.js", "license": "Apache-2.0", "dependencies": { - "@drift-labs/sdk": "2.45.0-beta.3", + "@drift-labs/sdk": "2.45.0-beta.4", "@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 d4a505f..88549ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -80,10 +80,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.45.0-beta.3": - version "2.45.0-beta.3" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.45.0-beta.3.tgz#f7d7887911ce348c0fe65cb921b02de1c50375a7" - integrity sha512-iw9rEGZoLXxGz22sg9y2XYNIxSLJXgWMj+3jrSuHsRPj0UVWzLwHvC+qnwFUHtEKXj4XQZYdsxDUJ2Zkco06EQ== +"@drift-labs/sdk@2.45.0-beta.4": + version "2.45.0-beta.4" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.45.0-beta.4.tgz#237d5d1fd55fef60964ab359536fc03ff757eedd" + integrity sha512-NNbWXEnFyL99J0fyByV20gtsN0DnwAz3hoscVPWi+ejqhEqgfcuc1BVqtLX1lwSiWsxDQnIMGz437HSuFimaVQ== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2"