12345678910111213141516171819202122232425262728293031323334353637383940 |
- 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 };
- }
- }
|