From 6be91a2993d9933bb80520284b1f762bcf60271f Mon Sep 17 00:00:00 2001 From: xjcaa <19227506+xjcaa@users.noreply.github.com> Date: Tue, 9 Apr 2024 23:58:28 +0800 Subject: [PATCH 1/2] Add crank generation ix --- src/utils.ts | 45 ++++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 19 deletions(-) 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 + ); } /* From 6bd9cdafb547a4ee47241a537b0c9e356e25ec37 Mon Sep 17 00:00:00 2001 From: xjcaa <19227506+xjcaa@users.noreply.github.com> Date: Wed, 10 Apr 2024 00:02:50 +0800 Subject: [PATCH 2/2] Push --- CHANGELOG.md | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) 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",