diff --git a/drift-common b/drift-common index 0c261cd..05cc04b 160000 --- a/drift-common +++ b/drift-common @@ -1 +1 @@ -Subproject commit 0c261cd0bf6061c93085b54f57c78f03f36d8da8 +Subproject commit 05cc04b114ca561618332df60a4298f121895aa1 diff --git a/src/dlob-subscriber/OrderSubscriberFiltered.ts b/src/dlob-subscriber/OrderSubscriberFiltered.ts new file mode 100644 index 0000000..a69cfca --- /dev/null +++ b/src/dlob-subscriber/OrderSubscriberFiltered.ts @@ -0,0 +1,35 @@ +import { + OrderSubscriber, + OrderSubscriberConfig, + UserAccount, +} from '@drift-labs/sdk'; + +export class OrderSubscriberFiltered extends OrderSubscriber { + public ignoreList: string[]; + + constructor( + config: OrderSubscriberConfig & { + ignoreList?: string[]; + } + ) { + super(config); + this.ignoreList = config.ignoreList ?? []; + } + + override async tryUpdateUserAccount( + key: string, + dataType: 'raw' | 'decoded' | 'buffer', + data: string[] | UserAccount | Buffer, + slot: number + ) { + if (!this.mostRecentSlot || slot > this.mostRecentSlot) { + this.mostRecentSlot = slot; + } + + if (this.ignoreList.includes(key)) { + return; + } + + super.tryUpdateUserAccount(key, dataType, data, slot); + } +} diff --git a/src/publishers/dlobPublisher.ts b/src/publishers/dlobPublisher.ts index 4bee76a..0a4281f 100644 --- a/src/publishers/dlobPublisher.ts +++ b/src/publishers/dlobPublisher.ts @@ -47,6 +47,7 @@ import express, { Response, Request } from 'express'; import { handleHealthCheck } from '../core/middleware'; import { setGlobalDispatcher, Agent } from 'undici'; import { Metrics } from '../core/metricsV2'; +import { OrderSubscriberFiltered } from '../dlob-subscriber/OrderSubscriberFiltered'; setGlobalDispatcher( new Agent({ @@ -474,9 +475,10 @@ const main = async () => { }; } - const orderSubscriber = new OrderSubscriber({ + const orderSubscriber = new OrderSubscriberFiltered({ driftClient, subscriptionConfig, + ignoreList: ['5N1AcdftujhXWZdBaqfciaKtXn6uVBKjmgwf6aQxR1vW'] }); dlobProvider = getDLOBProviderFromOrderSubscriber(orderSubscriber);