From 3594cc0d8d3fe88cd9ef1be54121d920c0e19d05 Mon Sep 17 00:00:00 2001 From: Riordan Panayides Date: Tue, 3 May 2022 17:36:21 +0100 Subject: [PATCH] Add CONFIRMATION_TIMEOUT env variable --- README.md | 1 + src/liquidator.ts | 18 ++++++------------ 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 02f7f6a..5a17636 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ This mode never triggers advanced orders. | `MIN_EQUITY` | `0` | Minimum account equity required to liquidate | | `LIQUIDATABLE_FEED_WEBSOCKET_ADDRESS` | N/A | Websocket URL of the liquidatable-accounts-feed service, see above | | `COMMITMENT_LEVEL` | `processed` | Commitment level for the connection | +| `CONFIRMATION_TIMEOUT` | `30000` | Milliseconds to wait for transaction confirmation | You can add these variables to a `.env` file in the project root to load automatically on liquidator startup. For example: ```bash diff --git a/src/liquidator.ts b/src/liquidator.ts index f0af991..31f51b4 100644 --- a/src/liquidator.ts +++ b/src/liquidator.ts @@ -22,12 +22,7 @@ import { sleep, ZERO_I80F48, } from '@blockworks-foundation/mango-client'; -import { - Commitment, - Connection, - Keypair, - PublicKey, -} from '@solana/web3.js'; +import { Commitment, Connection, Keypair, PublicKey } from '@solana/web3.js'; import { Market, OpenOrders } from '@project-serum/serum'; import BN from 'bn.js'; import { Orderbook } from '@project-serum/serum/lib/market'; @@ -67,10 +62,9 @@ const groupIds = throw new Error(`Group ${groupName} not found`); })(); - // The Triton team recommends using the commitment level `confirmed` in order // to avoid BlockhashNotFound errors. Adding a parameter. -const commitmentLevel = process.env.COMMITMENT_LEVEL || 'processed' +const commitmentLevel = process.env.COMMITMENT_LEVEL || 'processed'; // Target values to keep in spot, ordered the same as in mango client's ids.json // Example: @@ -108,7 +102,9 @@ console.log(`Commitment level: ${commitmentLevel}`); console.log(`Payer: ${payer.publicKey.toBase58()}`); const rpcEndpoint = process.env.ENDPOINT_URL || config.cluster_urls[cluster]; const connection = new Connection(rpcEndpoint, commitmentLevel as Commitment); -const client = new MangoClient(connection, mangoProgramId); +const client = new MangoClient(connection, mangoProgramId, { + timeout: parseInt(process.env.CONFIRMATION_TIMEOUT || '30000'), +}); let mangoSubscriptionId = -1; let dexSubscriptionId = -1; @@ -334,9 +330,7 @@ async function maybeLiquidateAccount( console.log('Liquidated account', mangoAccountKeyString); notify(`Liquidated account ${mangoAccountKeyString}`); } catch (err: any) { - console.error( - `Failed to liquidate account ${mangoAccountKeyString}:`, err - ); + console.error(`Failed to liquidate account ${mangoAccountKeyString}:`, err); notify(`Failed to liquidate account ${mangoAccountKeyString}: ${err}`); }