feat: use pubsub to confirm transactions (#12095)
This commit is contained in:
@@ -7,7 +7,7 @@ import type {ConfirmOptions} from '../connection';
|
||||
/**
|
||||
* Send and confirm a raw transaction
|
||||
*
|
||||
* If `confirmations` count is not specified, wait for transaction to be finalized.
|
||||
* If `commitment` option is not specified, defaults to 'max' commitment.
|
||||
*
|
||||
* @param {Connection} connection
|
||||
* @param {Buffer} rawTransaction
|
||||
@@ -19,31 +19,23 @@ export async function sendAndConfirmRawTransaction(
|
||||
rawTransaction: Buffer,
|
||||
options?: ConfirmOptions,
|
||||
): Promise<TransactionSignature> {
|
||||
const start = Date.now();
|
||||
const signature = await connection.sendRawTransaction(
|
||||
rawTransaction,
|
||||
options,
|
||||
);
|
||||
|
||||
const status = (
|
||||
await connection.confirmTransaction(
|
||||
signature,
|
||||
options && options.confirmations,
|
||||
options && options.commitment,
|
||||
)
|
||||
).value;
|
||||
|
||||
if (status) {
|
||||
if (status.err) {
|
||||
throw new Error(
|
||||
`Raw transaction ${signature} failed (${JSON.stringify(status)})`,
|
||||
);
|
||||
}
|
||||
return signature;
|
||||
if (status.err) {
|
||||
throw new Error(
|
||||
`Raw transaction ${signature} failed (${JSON.stringify(status)})`,
|
||||
);
|
||||
}
|
||||
|
||||
const duration = (Date.now() - start) / 1000;
|
||||
throw new Error(
|
||||
`Raw transaction '${signature}' was not confirmed in ${duration.toFixed(
|
||||
2,
|
||||
)} seconds`,
|
||||
);
|
||||
return signature;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user