feat: use pubsub to confirm transactions (#12095)

This commit is contained in:
Justin Starry
2020-09-08 13:12:47 +08:00
committed by GitHub
parent 9940870c89
commit 11b199cccf
16 changed files with 276 additions and 367 deletions

View File

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