Selaa lähdekoodia

separate constants out to constants/

Christopher Mael 1 vuosi sitten
vanhempi
sitoutus
9192b3dc12
3 muutettua tiedostoa jossa 48 lisäystä ja 32 poistoa
  1. 30 32
      buy.ts
  2. 17 0
      constants/constants.ts
  3. 1 0
      constants/index.ts

+ 30 - 32
buy.ts

@@ -24,21 +24,30 @@ import {
   KeyedAccountInfo,
   TransactionMessage,
   VersionedTransaction,
-  Commitment,
 } from '@solana/web3.js';
 import { getTokenAccounts, RAYDIUM_LIQUIDITY_PROGRAM_ID_V4, OPENBOOK_PROGRAM_ID, createPoolKeys } from './liquidity';
-import { logger, retrieveEnvVariable } from './utils';
+import { logger } from './utils';
 import { getMinimalMarketV3, MinimalMarketLayoutV3 } from './market';
 import { MintLayout } from './types';
 import bs58 from 'bs58';
 import * as fs from 'fs';
 import * as path from 'path';
-
-
-const network = 'mainnet-beta';
-const RPC_ENDPOINT = retrieveEnvVariable('RPC_ENDPOINT', logger);
-const RPC_WEBSOCKET_ENDPOINT = retrieveEnvVariable('RPC_WEBSOCKET_ENDPOINT', logger);
-const LOG_LEVEL = retrieveEnvVariable('LOG_LEVEL', logger);
+import {
+  AUTO_SELL,
+  AUTO_SELL_DELAY,
+  CHECK_IF_MINT_IS_RENOUNCED,
+  COMMITMENT_LEVEL,
+  LOG_LEVEL,
+  MAX_SELL_RETRIES,
+  NETWORK,
+  PRIVATE_KEY,
+  QUOTE_AMOUNT,
+  QUOTE_MINT,
+  RPC_ENDPOINT,
+  RPC_WEBSOCKET_ENDPOINT,
+  SNIPE_LIST_REFRESH_INTERVAL,
+  USE_SNIPE_LIST,
+} from './constants';
 
 const solanaConnection = new Connection(RPC_ENDPOINT, {
   wsEndpoint: RPC_WEBSOCKET_ENDPOINT,
@@ -59,14 +68,6 @@ let wallet: Keypair;
 let quoteToken: Token;
 let quoteTokenAssociatedAddress: PublicKey;
 let quoteAmount: TokenAmount;
-let commitment: Commitment = retrieveEnvVariable('COMMITMENT_LEVEL', logger) as Commitment;
-
-const CHECK_IF_MINT_IS_RENOUNCED = retrieveEnvVariable('CHECK_IF_MINT_IS_RENOUNCED', logger) === 'true';
-const USE_SNIPE_LIST = retrieveEnvVariable('USE_SNIPE_LIST', logger) === 'true';
-const SNIPE_LIST_REFRESH_INTERVAL = Number(retrieveEnvVariable('SNIPE_LIST_REFRESH_INTERVAL', logger));
-const AUTO_SELL = retrieveEnvVariable('AUTO_SELL', logger) === 'true';
-const MAX_SELL_RETRIES = Number(retrieveEnvVariable('MAX_SELL_RETRIES', logger));
-const AUTO_SELL_DELAY = Number(retrieveEnvVariable('AUTO_SELL_DELAY', logger));
 
 let snipeList: string[] = [];
 
@@ -74,13 +75,10 @@ async function init(): Promise<void> {
   logger.level = LOG_LEVEL;
 
   // get wallet
-  const PRIVATE_KEY = retrieveEnvVariable('PRIVATE_KEY', logger);
   wallet = Keypair.fromSecretKey(bs58.decode(PRIVATE_KEY));
   logger.info(`Wallet Address: ${wallet.publicKey}`);
 
   // get quote mint and amount
-  const QUOTE_MINT = retrieveEnvVariable('QUOTE_MINT', logger);
-  const QUOTE_AMOUNT = retrieveEnvVariable('QUOTE_AMOUNT', logger);
   switch (QUOTE_MINT) {
     case 'WSOL': {
       quoteToken = Token.WSOL;
@@ -108,7 +106,7 @@ async function init(): Promise<void> {
   );
 
   // check existing wallet for associated token account of quote mint
-  const tokenAccounts = await getTokenAccounts(solanaConnection, wallet.publicKey, commitment);
+  const tokenAccounts = await getTokenAccounts(solanaConnection, wallet.publicKey, COMMITMENT_LEVEL);
 
   for (const ta of tokenAccounts) {
     existingTokenAccounts.set(ta.accountInfo.mint.toString(), <MinimalTokenAccountData>{
@@ -198,7 +196,7 @@ async function buy(accountId: PublicKey, accountData: LiquidityStateV4): Promise
 
     if (!tokenAccount) {
       // it's possible that we didn't have time to fetch open book data
-      const market = await getMinimalMarketV3(solanaConnection, accountData.marketId, commitment);
+      const market = await getMinimalMarketV3(solanaConnection, accountData.marketId, COMMITMENT_LEVEL);
       tokenAccount = saveTokenAccount(accountData.baseMint, market);
     }
 
@@ -218,7 +216,7 @@ async function buy(accountId: PublicKey, accountData: LiquidityStateV4): Promise
     );
 
     const latestBlockhash = await solanaConnection.getLatestBlockhash({
-      commitment: commitment,
+      commitment: COMMITMENT_LEVEL,
     });
     const messageV0 = new TransactionMessage({
       payerKey: wallet.publicKey,
@@ -238,7 +236,7 @@ async function buy(accountId: PublicKey, accountData: LiquidityStateV4): Promise
     const transaction = new VersionedTransaction(messageV0);
     transaction.sign([wallet, ...innerTransaction.signers]);
     const signature = await solanaConnection.sendRawTransaction(transaction.serialize(), {
-      preflightCommitment: commitment,
+      preflightCommitment: COMMITMENT_LEVEL,
     });
     logger.info({ mint: accountData.baseMint, signature }, `Sent buy tx`);
     const confirmation = await solanaConnection.confirmTransaction(
@@ -247,14 +245,14 @@ async function buy(accountId: PublicKey, accountData: LiquidityStateV4): Promise
         lastValidBlockHeight: latestBlockhash.lastValidBlockHeight,
         blockhash: latestBlockhash.blockhash,
       },
-      commitment,
+      COMMITMENT_LEVEL,
     );
     if (!confirmation.value.err) {
       logger.info(
         {
           mint: accountData.baseMint,
           signature,
-          url: `https://solscan.io/tx/${signature}?cluster=${network}`,
+          url: `https://solscan.io/tx/${signature}?cluster=${NETWORK}`,
         },
         `Confirmed buy tx`,
       );
@@ -314,7 +312,7 @@ async function sell(accountId: PublicKey, mint: PublicKey, amount: BigNumberish)
       );
 
       const latestBlockhash = await solanaConnection.getLatestBlockhash({
-        commitment: commitment,
+        commitment: COMMITMENT_LEVEL,
       });
       const messageV0 = new TransactionMessage({
         payerKey: wallet.publicKey,
@@ -329,7 +327,7 @@ async function sell(accountId: PublicKey, mint: PublicKey, amount: BigNumberish)
       const transaction = new VersionedTransaction(messageV0);
       transaction.sign([wallet, ...innerTransaction.signers]);
       const signature = await solanaConnection.sendRawTransaction(transaction.serialize(), {
-        preflightCommitment: commitment,
+        preflightCommitment: COMMITMENT_LEVEL,
       });
       logger.info({ mint, signature }, `Sent sell tx`);
       const confirmation = await solanaConnection.confirmTransaction(
@@ -338,7 +336,7 @@ async function sell(accountId: PublicKey, mint: PublicKey, amount: BigNumberish)
           lastValidBlockHeight: latestBlockhash.lastValidBlockHeight,
           blockhash: latestBlockhash.blockhash,
         },
-        commitment,
+        COMMITMENT_LEVEL,
       );
       if (confirmation.value.err) {
         logger.debug(confirmation.value.err);
@@ -351,7 +349,7 @@ async function sell(accountId: PublicKey, mint: PublicKey, amount: BigNumberish)
           dex: `https://dexscreener.com/solana/${mint}?maker=${wallet.publicKey}`,
           mint,
           signature,
-          url: `https://solscan.io/tx/${signature}?cluster=${network}`,
+          url: `https://solscan.io/tx/${signature}?cluster=${NETWORK}`,
         },
         `Confirmed sell tx`,
       );
@@ -401,7 +399,7 @@ const runListener = async () => {
         const _ = processRaydiumPool(updatedAccountInfo.accountId, poolState);
       }
     },
-    commitment,
+    COMMITMENT_LEVEL,
     [
       { dataSize: LIQUIDITY_STATE_LAYOUT_V4.span },
       {
@@ -435,7 +433,7 @@ const runListener = async () => {
         const _ = processOpenBookMarket(updatedAccountInfo);
       }
     },
-    commitment,
+    COMMITMENT_LEVEL,
     [
       { dataSize: MARKET_STATE_LAYOUT_V3.span },
       {
@@ -459,7 +457,7 @@ const runListener = async () => {
 
         const _ = sell(updatedAccountInfo.accountId, accountData.mint, accountData.amount);
       },
-      commitment,
+      COMMITMENT_LEVEL,
       [
         {
           dataSize: 165,

+ 17 - 0
constants/constants.ts

@@ -0,0 +1,17 @@
+import { Commitment } from "@solana/web3.js";
+import { logger, retrieveEnvVariable } from "../utils";
+
+export const NETWORK = 'mainnet-beta';
+export const COMMITMENT_LEVEL: Commitment = retrieveEnvVariable('COMMITMENT_LEVEL', logger) as Commitment;
+export const RPC_ENDPOINT = retrieveEnvVariable('RPC_ENDPOINT', logger);
+export const RPC_WEBSOCKET_ENDPOINT = retrieveEnvVariable('RPC_WEBSOCKET_ENDPOINT', logger);
+export const LOG_LEVEL = retrieveEnvVariable('LOG_LEVEL', logger);
+export const CHECK_IF_MINT_IS_RENOUNCED = retrieveEnvVariable('CHECK_IF_MINT_IS_RENOUNCED', logger) === 'true';
+export const USE_SNIPE_LIST = retrieveEnvVariable('USE_SNIPE_LIST', logger) === 'true';
+export const SNIPE_LIST_REFRESH_INTERVAL = Number(retrieveEnvVariable('SNIPE_LIST_REFRESH_INTERVAL', logger));
+export const AUTO_SELL = retrieveEnvVariable('AUTO_SELL', logger) === 'true';
+export const MAX_SELL_RETRIES = Number(retrieveEnvVariable('MAX_SELL_RETRIES', logger));
+export const AUTO_SELL_DELAY = Number(retrieveEnvVariable('AUTO_SELL_DELAY', logger));
+export const PRIVATE_KEY = retrieveEnvVariable('PRIVATE_KEY', logger);
+export const QUOTE_MINT = retrieveEnvVariable('QUOTE_MINT', logger);
+export const QUOTE_AMOUNT = retrieveEnvVariable('QUOTE_AMOUNT', logger);

+ 1 - 0
constants/index.ts

@@ -0,0 +1 @@
+export * from './constants';