From 52ef1c23b99409d61382c3cc4a0e0fced9cc23ca Mon Sep 17 00:00:00 2001 From: xjcaa <19227506+xjcaa@users.noreply.github.com> Date: Thu, 11 Apr 2024 18:46:13 +0700 Subject: [PATCH] Add crank generation ix (#383) * Add crank generation ix * Push --- CHANGELOG.md | 4 ++++ package.json | 2 +- src/utils.ts | 45 ++++++++++++++++++++++++++------------------- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a117183..0a7bc1dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. Version changes are pinned to SDK releases. +## [1.26.3] + +- Add crank market generation util. ([#383](https://github.com/zetamarkets/sdk/pull/383)) + ## [1.26.2] - Spam sendRawTransaction() in utils.processTransaction(). ([#381](https://github.com/zetamarkets/sdk/pull/381)) diff --git a/package.json b/package.json index b8d47f30..bb7ae224 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@zetamarkets/sdk", "repository": "https://github.com/zetamarkets/sdk/", - "version": "1.26.2", + "version": "1.26.3", "description": "Zeta SDK", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/src/utils.ts b/src/utils.ts index 4a1bcabf..35cc243e 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1326,10 +1326,28 @@ export async function crankMarket( openOrdersToMargin?: Map, crankLimit?: number ): Promise { + let ix = await createCrankMarketIx(asset, openOrdersToMargin, crankLimit); + if (ix == null) return true; + let tx = new Transaction() + .add( + ComputeBudgetProgram.setComputeUnitLimit({ + units: 250_000, + }) + ) + .add(ix); + await processTransaction(Exchange.provider, tx); + return false; +} + +export async function createCrankMarketIx( + asset: Asset, + openOrdersToMargin?: Map, + crankLimit?: number +): Promise { let market = Exchange.getPerpMarket(asset); let eventQueue = await market.serumMarket.loadEventQueue(Exchange.connection); if (eventQueue.length == 0) { - return true; + return null; } const openOrdersSet = new Set(); // We pass in a couple of extra accounts for perps so the limit is lower @@ -1353,7 +1371,6 @@ export async function crankMarket( let remainingAccounts: any[] = new Array(uniqueOpenOrders.length * 2); - // TODO test support for both crossmargin and marginaccounts await Promise.all( uniqueOpenOrders.map(async (openOrders, index) => { let marginAccount: PublicKey; @@ -1380,23 +1397,13 @@ export async function crankMarket( }) ); - let tx = new Transaction() - .add( - ComputeBudgetProgram.setComputeUnitLimit({ - units: 250_000, - }) - ) - .add( - instructions.crankMarketIx( - asset, - market.address, - market.serumMarket.eventQueueAddress, - constants.DEX_PID[Exchange.network], - remainingAccounts - ) - ); - await processTransaction(Exchange.provider, tx); - return false; + return instructions.crankMarketIx( + asset, + market.address, + market.serumMarket.eventQueueAddress, + constants.DEX_PID[Exchange.network], + remainingAccounts + ); } /*