confirmSignatureStatus method
Future<SignatureNotification>
confirmSignatureStatus(
- TransactionSignature signature, {
- GetSignatureStatusesConfig? config,
- Commitment? commitment,
- int? minContext,
Confirms a transaction by fetching the status of signature and comparing its
confirmationStatus to commitment.
The signature is considered confirmed if it has a confirmationStatus level >= to
commitment and the slot in which it was processed is >= minContext.
Implementation
Future<SignatureNotification> confirmSignatureStatus(
final TransactionSignature signature, {
final GetSignatureStatusesConfig? config,
final Commitment? commitment,
final int? minContext,
}) async {
SignatureStatus? status = await getSignatureStatus(
signature,
config: config,
);
while (status != null && minContext != null && status.slot < minContext) {
final int slots = minContext - status.slot;
final int delay = slots * millisecondsPerSlot.floor();
await Future.delayed(Duration(milliseconds: delay));
status = await getSignatureStatus(signature, config: config);
}
if (status == null) {
return const SignatureNotification(
err: TransactionException('Transaction signature status not found.'),
);
}
if (status.err != null) {
return SignatureNotification(err: status.err);
}
final Commitment commitmentLevel =
commitment ?? this.commitment ?? Commitment.finalized;
return SignatureNotification(
err: commitmentLevel.compareTo(status.confirmationStatus) > 0
? const TransactionException(
'Transaction signature status has not been confirmed.',
)
: null,
);
}