collect elapsed time and error status in txn confirmation data
This commit is contained in:
parent
d5242335a5
commit
9396f05816
|
@ -1,4 +1,4 @@
|
||||||
import { IDL, LatestBlockhash } from '@blockworks-foundation/mango-v4'
|
import { IDL } from '@blockworks-foundation/mango-v4'
|
||||||
import { BorshInstructionCoder } from '@project-serum/anchor'
|
import { BorshInstructionCoder } from '@project-serum/anchor'
|
||||||
import { Connection } from '@solana/web3.js'
|
import { Connection } from '@solana/web3.js'
|
||||||
import { MANGO_DATA_API_URL } from './constants'
|
import { MANGO_DATA_API_URL } from './constants'
|
||||||
|
@ -11,16 +11,40 @@ export function collectTxConfirmationData(
|
||||||
prioritizationFee: number,
|
prioritizationFee: number,
|
||||||
txCallbackOptions: TxCallbackOptions,
|
txCallbackOptions: TxCallbackOptions,
|
||||||
) {
|
) {
|
||||||
txConfirmationInner(rpcEndpoint, prioritizationFee, txCallbackOptions)
|
const start = new Date().getTime()
|
||||||
|
txConfirmationInner(
|
||||||
|
start,
|
||||||
|
rpcEndpoint,
|
||||||
|
prioritizationFee,
|
||||||
|
txCallbackOptions,
|
||||||
|
).catch((e) =>
|
||||||
|
txConfirmationInner(
|
||||||
|
start,
|
||||||
|
rpcEndpoint,
|
||||||
|
prioritizationFee,
|
||||||
|
txCallbackOptions,
|
||||||
|
),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function txConfirmationInner(
|
async function txConfirmationInner(
|
||||||
|
startTime: number,
|
||||||
rpcEndpoint: string,
|
rpcEndpoint: string,
|
||||||
prioritization_fee: number,
|
prioritization_fee: number,
|
||||||
txCallbackOptions: TxCallbackOptions,
|
txCallbackOptions: TxCallbackOptions,
|
||||||
) {
|
) {
|
||||||
const connection = new Connection(rpcEndpoint, 'processed')
|
const connection = new Connection(rpcEndpoint, 'processed')
|
||||||
const { txid: signature, txSignatureBlockHash } = txCallbackOptions
|
const { txid: signature, txSignatureBlockHash } = txCallbackOptions
|
||||||
|
await connection.confirmTransaction(
|
||||||
|
{
|
||||||
|
signature,
|
||||||
|
blockhash: txSignatureBlockHash.blockhash,
|
||||||
|
lastValidBlockHeight: txSignatureBlockHash.lastValidBlockHeight,
|
||||||
|
},
|
||||||
|
'processed',
|
||||||
|
)
|
||||||
|
const elapsed = new Date().getTime() - startTime
|
||||||
|
|
||||||
await connection.confirmTransaction(
|
await connection.confirmTransaction(
|
||||||
{
|
{
|
||||||
signature,
|
signature,
|
||||||
|
@ -49,7 +73,9 @@ async function txConfirmationInner(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const confirmed = confirmedTxn !== null && !confirmedTxn.meta?.err
|
const confirmed = confirmedTxn !== null
|
||||||
|
const error =
|
||||||
|
confirmedTxn?.meta?.err !== null && confirmedTxn?.meta?.err !== undefined
|
||||||
const block_datetime = confirmedTxn?.blockTime
|
const block_datetime = confirmedTxn?.blockTime
|
||||||
? new Date(confirmedTxn.blockTime * 1000).toISOString()
|
? new Date(confirmedTxn.blockTime * 1000).toISOString()
|
||||||
: null
|
: null
|
||||||
|
@ -62,6 +88,8 @@ async function txConfirmationInner(
|
||||||
signature,
|
signature,
|
||||||
block_datetime,
|
block_datetime,
|
||||||
confirmed,
|
confirmed,
|
||||||
|
error,
|
||||||
|
ui_confirmation_time_ms: elapsed,
|
||||||
fetch_blockhash_slot: txSignatureBlockHash.slot,
|
fetch_blockhash_slot: txSignatureBlockHash.slot,
|
||||||
processed_slot: confirmedTxn?.slot,
|
processed_slot: confirmedTxn?.slot,
|
||||||
instruction_names: instructionNames.join(','),
|
instruction_names: instructionNames.join(','),
|
||||||
|
|
Loading…
Reference in New Issue