use bulk account loader for most recent slot
This commit is contained in:
24
src/index.ts
24
src/index.ts
@@ -184,7 +184,6 @@ const main = async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const dlobCoder = DLOBOrdersCoder.create();
|
const dlobCoder = DLOBOrdersCoder.create();
|
||||||
const slotSubscriber = new SlotSubscriber(connection, {});
|
|
||||||
|
|
||||||
const lamportsBalance = await connection.getBalance(wallet.publicKey);
|
const lamportsBalance = await connection.getBalance(wallet.publicKey);
|
||||||
logger.info(
|
logger.info(
|
||||||
@@ -199,12 +198,15 @@ const main = async () => {
|
|||||||
logger.error(e);
|
logger.error(e);
|
||||||
});
|
});
|
||||||
|
|
||||||
await slotSubscriber.subscribe();
|
setInterval(async () => {
|
||||||
slotSubscriber.eventEmitter.on('newSlot', async (slot: number) => {
|
if (lastSlotReceivedMutex.isLocked()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await lastSlotReceivedMutex.runExclusive(async () => {
|
await lastSlotReceivedMutex.runExclusive(async () => {
|
||||||
lastSlotReceived = slot;
|
lastSlotReceived = bulkAccountLoader.getSlot();
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
}, ORDERBOOK_UPDATE_INTERVAL);
|
||||||
|
|
||||||
const userMap = new UserMap(
|
const userMap = new UserMap(
|
||||||
driftClient,
|
driftClient,
|
||||||
@@ -225,7 +227,7 @@ const main = async () => {
|
|||||||
const dlobSubscriber = new DLOBSubscriber({
|
const dlobSubscriber = new DLOBSubscriber({
|
||||||
driftClient,
|
driftClient,
|
||||||
dlobSource: userMap,
|
dlobSource: userMap,
|
||||||
slotSource: slotSubscriber,
|
slotSource: bulkAccountLoader,
|
||||||
updateFrequency: ORDERBOOK_UPDATE_INTERVAL,
|
updateFrequency: ORDERBOOK_UPDATE_INTERVAL,
|
||||||
});
|
});
|
||||||
await dlobSubscriber.subscribe();
|
await dlobSubscriber.subscribe();
|
||||||
@@ -255,7 +257,7 @@ const main = async () => {
|
|||||||
// object with userAccount key and orders object serialized
|
// object with userAccount key and orders object serialized
|
||||||
const orders: Array<any> = [];
|
const orders: Array<any> = [];
|
||||||
const oracles: Array<any> = [];
|
const oracles: Array<any> = [];
|
||||||
const slot = slotSubscriber.currentSlot;
|
const slot = bulkAccountLoader.getSlot();
|
||||||
|
|
||||||
for (const market of driftClient.getPerpMarketAccounts()) {
|
for (const market of driftClient.getPerpMarketAccounts()) {
|
||||||
const oracle = driftClient.getOracleDataForPerpMarket(
|
const oracle = driftClient.getOracleDataForPerpMarket(
|
||||||
@@ -299,7 +301,7 @@ const main = async () => {
|
|||||||
app.get('/orders/json', async (_req, res, next) => {
|
app.get('/orders/json', async (_req, res, next) => {
|
||||||
try {
|
try {
|
||||||
// object with userAccount key and orders object serialized
|
// object with userAccount key and orders object serialized
|
||||||
const slot = slotSubscriber.currentSlot;
|
const slot = bulkAccountLoader.getSlot();
|
||||||
const orders: Array<any> = [];
|
const orders: Array<any> = [];
|
||||||
const oracles: Array<any> = [];
|
const oracles: Array<any> = [];
|
||||||
for (const market of driftClient.getPerpMarketAccounts()) {
|
for (const market of driftClient.getPerpMarketAccounts()) {
|
||||||
@@ -462,7 +464,7 @@ const main = async () => {
|
|||||||
|
|
||||||
res.end(
|
res.end(
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
slot: slotSubscriber.currentSlot,
|
slot: bulkAccountLoader.getSlot(),
|
||||||
data: dlobCoder.encode(dlobOrders).toString('base64'),
|
data: dlobCoder.encode(dlobOrders).toString('base64'),
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
@@ -551,7 +553,7 @@ const main = async () => {
|
|||||||
.getDLOB()
|
.getDLOB()
|
||||||
.getRestingLimitBids(
|
.getRestingLimitBids(
|
||||||
normedMarketIndex,
|
normedMarketIndex,
|
||||||
slotSubscriber.getSlot(),
|
bulkAccountLoader.getSlot(),
|
||||||
normedMarketType,
|
normedMarketType,
|
||||||
oracle
|
oracle
|
||||||
)
|
)
|
||||||
@@ -562,7 +564,7 @@ const main = async () => {
|
|||||||
.getDLOB()
|
.getDLOB()
|
||||||
.getRestingLimitAsks(
|
.getRestingLimitAsks(
|
||||||
normedMarketIndex,
|
normedMarketIndex,
|
||||||
slotSubscriber.getSlot(),
|
bulkAccountLoader.getSlot(),
|
||||||
normedMarketType,
|
normedMarketType,
|
||||||
oracle
|
oracle
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user