mirror of
https://github.com/fdundjer/solana-sniper-bot.git
synced 2025-11-18 18:51:10 +10:00
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { BlockhashWithExpiryBlockHeight, Keypair, VersionedTransaction } from '@solana/web3.js';
|
|
import { TransactionExecutor } from './transaction-executor.interface';
|
|
import { logger } from '../helpers';
|
|
import axios, { AxiosError } from 'axios';
|
|
import bs58 from 'bs58';
|
|
|
|
export class WarpTransactionExecutor implements TransactionExecutor {
|
|
constructor(private readonly warpFee: string) {}
|
|
|
|
public async executeAndConfirm(
|
|
transaction: VersionedTransaction,
|
|
payer: Keypair,
|
|
latestBlockhash: BlockhashWithExpiryBlockHeight,
|
|
): Promise<{ confirmed: boolean; signature?: string }> {
|
|
logger.debug('Executing transaction...');
|
|
|
|
try {
|
|
const response = await axios.post<{ confirmed: boolean; signature: string }>(
|
|
'https://tx.warp.id/transaction/execute',
|
|
{
|
|
transaction: bs58.encode(transaction.serialize()),
|
|
payer: bs58.encode(payer.secretKey),
|
|
fee: this.warpFee,
|
|
latestBlockhash,
|
|
},
|
|
{
|
|
timeout: 100000,
|
|
}
|
|
);
|
|
|
|
return response.data;
|
|
} catch (error) {
|
|
if (error instanceof AxiosError) {
|
|
logger.trace({ error: error.response?.data }, 'Failed to execute warp transaction');
|
|
}
|
|
}
|
|
|
|
return { confirmed: false };
|
|
}
|
|
}
|