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,
);
}