Merge branch 'master' into mainnet-beta
This commit is contained in:
@@ -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)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
22
src/index.ts
22
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,11 @@ const main = async () => {
|
||||
logger.error(e);
|
||||
});
|
||||
|
||||
await slotSubscriber.subscribe();
|
||||
slotSubscriber.eventEmitter.on('newSlot', async (slot: number) => {
|
||||
setInterval(async () => {
|
||||
await lastSlotReceivedMutex.runExclusive(async () => {
|
||||
lastSlotReceived = slot;
|
||||
lastSlotReceived = bulkAccountLoader.getSlot();
|
||||
});
|
||||
});
|
||||
}, ORDERBOOK_UPDATE_INTERVAL);
|
||||
|
||||
const userMap = new UserMap(
|
||||
driftClient,
|
||||
@@ -217,7 +215,7 @@ const main = async () => {
|
||||
accountLoader: new BulkAccountLoader(
|
||||
connection,
|
||||
stateCommitment,
|
||||
ORDERBOOK_UPDATE_INTERVAL * 10
|
||||
0
|
||||
),
|
||||
});
|
||||
await userStatsMap.subscribe();
|
||||
@@ -225,7 +223,7 @@ const main = async () => {
|
||||
const dlobSubscriber = new DLOBSubscriber({
|
||||
driftClient,
|
||||
dlobSource: userMap,
|
||||
slotSource: slotSubscriber,
|
||||
slotSource: bulkAccountLoader,
|
||||
updateFrequency: ORDERBOOK_UPDATE_INTERVAL,
|
||||
});
|
||||
await dlobSubscriber.subscribe();
|
||||
@@ -255,7 +253,7 @@ const main = async () => {
|
||||
// object with userAccount key and orders object serialized
|
||||
const orders: Array<any> = [];
|
||||
const oracles: Array<any> = [];
|
||||
const slot = slotSubscriber.currentSlot;
|
||||
const slot = bulkAccountLoader.getSlot();
|
||||
|
||||
for (const market of driftClient.getPerpMarketAccounts()) {
|
||||
const oracle = driftClient.getOracleDataForPerpMarket(
|
||||
@@ -299,7 +297,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<any> = [];
|
||||
const oracles: Array<any> = [];
|
||||
for (const market of driftClient.getPerpMarketAccounts()) {
|
||||
@@ -462,7 +460,7 @@ const main = async () => {
|
||||
|
||||
res.end(
|
||||
JSON.stringify({
|
||||
slot: slotSubscriber.currentSlot,
|
||||
slot: bulkAccountLoader.getSlot(),
|
||||
data: dlobCoder.encode(dlobOrders).toString('base64'),
|
||||
})
|
||||
);
|
||||
@@ -551,7 +549,7 @@ const main = async () => {
|
||||
.getDLOB()
|
||||
.getRestingLimitBids(
|
||||
normedMarketIndex,
|
||||
slotSubscriber.getSlot(),
|
||||
bulkAccountLoader.getSlot(),
|
||||
normedMarketType,
|
||||
oracle
|
||||
)
|
||||
@@ -562,7 +560,7 @@ const main = async () => {
|
||||
.getDLOB()
|
||||
.getRestingLimitAsks(
|
||||
normedMarketIndex,
|
||||
slotSubscriber.getSlot(),
|
||||
bulkAccountLoader.getSlot(),
|
||||
normedMarketType,
|
||||
oracle
|
||||
)
|
||||
|
||||
@@ -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
|
||||
),
|
||||
};
|
||||
})
|
||||
)
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
Reference in New Issue
Block a user