feat: update getSignatureStatus methods

This commit is contained in:
Justin Starry
2020-04-06 17:56:26 +08:00
committed by Michael Vines
parent ae10f1ecab
commit 3a2fe7fdbc
7 changed files with 57 additions and 23 deletions

View File

@@ -15,15 +15,20 @@ export async function sendAndConfirmRawTransaction(
commitment: ?Commitment,
): Promise<TransactionSignature> {
const start = Date.now();
const statusCommitment = commitment || connection.commitment || 'max';
let signature = await connection.sendRawTransaction(rawTransaction);
// Wait up to a couple slots for a confirmation
let status = null;
let statusRetries = 6;
for (;;) {
status = (await connection.getSignatureStatus(signature, commitment)).value;
status = (await connection.getSignatureStatus(signature)).value;
if (status) {
break;
if (statusCommitment === 'max' && status.confirmations === null) {
break;
} else if (statusCommitment === 'recent') {
break;
}
}
// Sleep for approximately half a slot

View File

@@ -43,8 +43,11 @@ async function _sendAndConfirmTransaction(
signers: Array<Account>,
commitment: ?Commitment,
): Promise<TransactionSignature> {
const statusCommitment = commitment || connection.commitment || 'max';
let sendRetries = 10;
let signature;
for (;;) {
const start = Date.now();
signature = await connection.sendTransaction(transaction, ...signers);
@@ -53,10 +56,13 @@ async function _sendAndConfirmTransaction(
let status = null;
let statusRetries = 6;
for (;;) {
status = (await connection.getSignatureStatus(signature, commitment))
.value;
status = (await connection.getSignatureStatus(signature)).value;
if (status) {
break;
if (statusCommitment === 'max' && status.confirmations === null) {
break;
} else if (statusCommitment === 'recent') {
break;
}
}
if (--statusRetries <= 0) {