waitForTransaction method
Implementation
Future<Map<String, dynamic>> waitForTransaction(
String txHash, {
int confirmations = 1,
Duration timeout = const Duration(minutes: 5),
}) async {
final deadline = DateTime.now().add(timeout);
while (DateTime.now().isBefore(deadline)) {
final receipt = await reader.getTransactionReceipt(txHash);
if (receipt != null) {
if (confirmations <= 1) return receipt;
final receiptBlock = receipt['blockNumber'] as String?;
if (receiptBlock != null) {
final receiptNum =
BigInt.parse(receiptBlock.substring(2), radix: 16);
final currentBlock = await reader.getBlockNumber();
if (currentBlock - receiptNum + BigInt.one >=
BigInt.from(confirmations)) {
return receipt;
}
}
}
await Future<void>.delayed(const Duration(seconds: 2));
}
throw TimeoutException(
'Transaction $txHash not confirmed within $timeout',
);
}