From b530e426c8460d12e72bcd0f183bde81802d72a9 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 27 Jan 2024 23:53:39 +0000 Subject: [PATCH 1/7] Bumping sdk dependency to 2.59.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 011635a..c08a1a0 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.59.0-beta.0", + "@drift-labs/sdk": "2.59.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 b924639..ef1b5d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -115,10 +115,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.59.0-beta.0": - version "2.59.0-beta.0" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.59.0-beta.0.tgz#e71a862ba67851522e24e9c89512aef6406eef29" - integrity sha512-KmOXLbp+x2Q3HO7LppCkFO/suTevDxFVVcyfGLNonuHQLGoUUIKQTF+j87fg5IVem8a8dhqo/DyzM6mQxO6iGg== +"@drift-labs/sdk@2.59.0-beta.1": + version "2.59.0-beta.1" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.59.0-beta.1.tgz#12ba091616d3e1befc822822ab64cacad5e6c339" + integrity sha512-OuKLgiDQx7YEEkbo19f4/rVhcmXO9CbZr+1JvkKaq2fgrTNA4V2d9qMh6+E7PgpShgzmWPrZHgok3yD1I8moIQ== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From af4642e0c40595c7bf494b0729710cc7cf4839ea Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 00:43:07 +0000 Subject: [PATCH 2/7] Bumping sdk dependency to 2.59.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 c08a1a0..f9c7cf9 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.59.0-beta.1", + "@drift-labs/sdk": "2.59.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 ef1b5d3..56c7c88 100644 --- a/yarn.lock +++ b/yarn.lock @@ -115,10 +115,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.59.0-beta.1": - version "2.59.0-beta.1" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.59.0-beta.1.tgz#12ba091616d3e1befc822822ab64cacad5e6c339" - integrity sha512-OuKLgiDQx7YEEkbo19f4/rVhcmXO9CbZr+1JvkKaq2fgrTNA4V2d9qMh6+E7PgpShgzmWPrZHgok3yD1I8moIQ== +"@drift-labs/sdk@2.59.0-beta.2": + version "2.59.0-beta.2" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.59.0-beta.2.tgz#c7710b1d56d931fa3b75590acd8b55cee4a291c1" + integrity sha512-4ZvU94sUAuzsujk6bUv65PmcAdPAGyCTWTzwCeNRBCMWkC/i7fdTSsFwoaCnKYrfuhWxl5Ebqr7v1Z5dY2+pLA== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From 8d805656bb2b5b58e70ba9db8b39341dafd52b69 Mon Sep 17 00:00:00 2001 From: Nour Alharithi Date: Sat, 27 Jan 2024 17:28:06 -0800 Subject: [PATCH 3/7] patch updateOnChange=includeVamm --- src/dlob-subscriber/DLOBSubscriberIO.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dlob-subscriber/DLOBSubscriberIO.ts b/src/dlob-subscriber/DLOBSubscriberIO.ts index 13246d2..9d6b98c 100644 --- a/src/dlob-subscriber/DLOBSubscriberIO.ts +++ b/src/dlob-subscriber/DLOBSubscriberIO.ts @@ -70,7 +70,7 @@ export class DLOBSubscriberIO extends DLOBSubscriber { depth: -1, numVammOrders: 100, includeVamm, - updateOnChange: true, + updateOnChange: includeVamm, fallbackL2Generators: [], }); } From a59151244b2aabb65f9fd5a7a054d7b025baaf4c Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 08:01:26 +0000 Subject: [PATCH 4/7] Bumping sdk dependency to 2.59.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 f9c7cf9..c186154 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.59.0-beta.2", + "@drift-labs/sdk": "2.59.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 56c7c88..23c6175 100644 --- a/yarn.lock +++ b/yarn.lock @@ -115,10 +115,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.59.0-beta.2": - version "2.59.0-beta.2" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.59.0-beta.2.tgz#c7710b1d56d931fa3b75590acd8b55cee4a291c1" - integrity sha512-4ZvU94sUAuzsujk6bUv65PmcAdPAGyCTWTzwCeNRBCMWkC/i7fdTSsFwoaCnKYrfuhWxl5Ebqr7v1Z5dY2+pLA== +"@drift-labs/sdk@2.59.0-beta.3": + version "2.59.0-beta.3" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.59.0-beta.3.tgz#637c371bc86bdf8ca23cab81879513b23ec00679" + integrity sha512-kRuQ8dNxU33hwq+auSr655Lt3FR9ODt+J0BXQeABj8xnq5SgwMjzB2YdVmsC0EiLwUkdBJtg0FAaad+ZOY/V0A== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From 1ded2a63d8af8a09afbbdd35c79f1de399fe0e79 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 08:23:15 +0000 Subject: [PATCH 5/7] Bumping sdk dependency to 2.59.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 c186154..c0d2faa 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.59.0-beta.3", + "@drift-labs/sdk": "2.59.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 23c6175..5c18050 100644 --- a/yarn.lock +++ b/yarn.lock @@ -115,10 +115,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.59.0-beta.3": - version "2.59.0-beta.3" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.59.0-beta.3.tgz#637c371bc86bdf8ca23cab81879513b23ec00679" - integrity sha512-kRuQ8dNxU33hwq+auSr655Lt3FR9ODt+J0BXQeABj8xnq5SgwMjzB2YdVmsC0EiLwUkdBJtg0FAaad+ZOY/V0A== +"@drift-labs/sdk@2.59.0-beta.4": + version "2.59.0-beta.4" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.59.0-beta.4.tgz#d034d071528e2010516c2c1545619a3374fa3853" + integrity sha512-tJQUU6kjOkxkoaOOcgxKXS9JhBrnFCZ3B24m8XEZlDBNCh2hkRaucGuMI2DIHNttaxwXtoQnNYc+IEXCXgySfA== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From 7c9ce14a8dddf646d2ff4b547e497e220c05047d Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 20:25:55 +0000 Subject: [PATCH 6/7] Bumping sdk dependency to 2.59.0-beta.5 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c0d2faa..f3cde6f 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.59.0-beta.4", + "@drift-labs/sdk": "2.59.0-beta.5", "@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 5c18050..bb19570 100644 --- a/yarn.lock +++ b/yarn.lock @@ -115,10 +115,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@drift-labs/sdk@2.59.0-beta.4": - version "2.59.0-beta.4" - resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.59.0-beta.4.tgz#d034d071528e2010516c2c1545619a3374fa3853" - integrity sha512-tJQUU6kjOkxkoaOOcgxKXS9JhBrnFCZ3B24m8XEZlDBNCh2hkRaucGuMI2DIHNttaxwXtoQnNYc+IEXCXgySfA== +"@drift-labs/sdk@2.59.0-beta.5": + version "2.59.0-beta.5" + resolved "https://registry.yarnpkg.com/@drift-labs/sdk/-/sdk-2.59.0-beta.5.tgz#50c8bd135c0bcdff224a0277841555433ced218a" + integrity sha512-RgVwGUbuQaZgw4LLe2yxBXiWDnzleYU7lr+Vjq0EFi7hNeyJ35V+IiOfDxA9G9/D3vv1BfXD3adx0gR2rLTUBg== dependencies: "@coral-xyz/anchor" "0.28.1-beta.2" "@ellipsis-labs/phoenix-sdk" "^1.4.2" From ac3267d446fcb29607aed7bf9dd7b004de87bb25 Mon Sep 17 00:00:00 2001 From: Nour Alharithi Date: Mon, 29 Jan 2024 13:08:13 -0800 Subject: [PATCH 7/7] 10min stale slot killswitch --- src/dlob-subscriber/DLOBSubscriberIO.ts | 45 +++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/dlob-subscriber/DLOBSubscriberIO.ts b/src/dlob-subscriber/DLOBSubscriberIO.ts index 9d6b98c..a7cb9fe 100644 --- a/src/dlob-subscriber/DLOBSubscriberIO.ts +++ b/src/dlob-subscriber/DLOBSubscriberIO.ts @@ -27,6 +27,8 @@ type wsMarketL2Args = { updateOnChange?: boolean; }; +const MAKRET_STALENESS_THRESHOLD = 10 * 60 * 1000; + export type wsMarketInfo = { marketIndex: number; marketName: string; @@ -37,6 +39,10 @@ export class DLOBSubscriberIO extends DLOBSubscriber { public lastSeenL2Formatted: Map>; redisClient: RedisClient; public killSwitchSlotDiffThreshold: number; + public lastMarketSlotMap: Map< + MarketType, + Map + >; constructor( config: DLOBSubscriptionConfig & { @@ -56,6 +62,9 @@ export class DLOBSubscriberIO extends DLOBSubscriber { this.lastSeenL2Formatted = new Map(); this.lastSeenL2Formatted.set(MarketType.SPOT, new Map()); this.lastSeenL2Formatted.set(MarketType.PERP, new Map()); + this.lastMarketSlotMap = new Map(); + this.lastMarketSlotMap.set(MarketType.SPOT, new Map()); + this.lastMarketSlotMap.set(MarketType.PERP, new Map()); for (const market of config.perpMarketInfos) { const perpMarket = this.driftClient.getPerpMarketAccount( @@ -107,6 +116,15 @@ export class DLOBSubscriberIO extends DLOBSubscriber { const { marketName, ...l2FuncArgs } = l2Args; const l2 = this.getL2(l2FuncArgs); const slot = l2.slot; + const lastMarketSlotAndTime = this.lastMarketSlotMap + .get(l2Args.marketType) + .get(l2Args.marketIndex); + if (!lastMarketSlotAndTime) { + this.lastMarketSlotMap + .get(l2Args.marketType) + .set(l2Args.marketIndex, { slot, ts: Date.now() }); + } + if (slot) { delete l2.slot; } @@ -127,6 +145,7 @@ export class DLOBSubscriberIO extends DLOBSubscriber { ) return; } + this.lastSeenL2Formatted .get(l2Args.marketType) ?.set(l2Args.marketIndex, JSON.stringify(l2Formatted)); @@ -148,6 +167,7 @@ export class DLOBSubscriberIO extends DLOBSubscriber { l2Args.marketIndex ); + // Check if slot diffs are too large for oracle if ( Math.abs(slot - parseInt(l2Formatted['oracleData']['slot'])) > this.killSwitchSlotDiffThreshold @@ -155,9 +175,34 @@ export class DLOBSubscriberIO extends DLOBSubscriber { console.log(`Killing process due to slot diffs for market ${marketName}: dlobProvider slot: ${slot} oracle slot: ${l2Formatted['oracleData']['slot']} + `); + process.exit(1); + } + + // Check if times and slots are too different for market + if ( + lastMarketSlotAndTime && + l2Formatted['marketSlot'] === lastMarketSlotAndTime.slot && + Date.now() - lastMarketSlotAndTime.ts > MAKRET_STALENESS_THRESHOLD + ) { + console.log(`Killing process due to same slot for market ${marketName} after > ${MAKRET_STALENESS_THRESHOLD}ms: + dlobProvider slot: ${slot} market slot: ${l2Formatted['marketSlot']} `); process.exit(1); + } else if ( + lastMarketSlotAndTime && + l2Formatted['marketSlot'] !== lastMarketSlotAndTime.slot + ) { + console.log( + `Updating market slot for ${l2Args.marketName} with slot ${l2Formatted['marketSlot']}` + ); + this.lastMarketSlotMap + .get(l2Args.marketType) + .set(l2Args.marketIndex, { + slot: l2Formatted['marketSlot'], + ts: Date.now(), + }); } const l2Formatted_depth100 = Object.assign({}, l2Formatted, {