@nori-zk/mina-token-bridge
Version:
Nori ethereum state settelment and nETH token bridge zkApp
27 lines • 1.23 kB
JavaScript
import { Logger } from 'esm-iso-logger';
import { fetchTransactionStatus } from 'o1js';
const logger = new Logger('NoriTokenBridgeTxWait');
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
export async function wait(txId, minaRPCNetworkUrl, maxAttempts = 50, intervalMs = 20000) {
logger.verbose(`Waiting for tx with id:\n${txId}`);
let attempt = 0;
do {
try {
logger.verbose(`Fetching transaction status attempt '${attempt + 1}'.`);
const status = await fetchTransactionStatus(txId, minaRPCNetworkUrl);
logger.verbose(`Received transaction status '${status}' for attempt '${attempt + 1}'.`);
if (status === 'INCLUDED') {
return true;
}
}
catch (err) {
logger.warn(`Error during fetchTransactionStatus (attempt '${attempt + 1}'):\n${String(err)}`);
}
attempt++;
if (attempt < maxAttempts)
await sleep(intervalMs);
} while (attempt < maxAttempts);
logger.warn(`Max attempts exceeded while waiting for a tx. Aborting.`);
throw new Error(`Max attempts exceeded while waiting for tx with id:\n${txId}`);
}
//# sourceMappingURL=txWait.js.map