Skip to main content

Method Signature

align.blockchain.transactions.waitForConfirmation(
  txHash: string,
  network: Network,
  confirmations?: number
): Promise<TransactionReceiptData>

Parameters

txHash
string
required
Transaction hash to wait for
network
string
required
Network where the transaction was sent
confirmations
number
default:"1"
Number of confirmations to wait for (default: 1)

Returns

blockNumber
number
Block number where transaction was included
gasUsed
string
Actual gas used
status
number
1 for success, 0 for failure

Examples

import Align from "@tolbel/align";

const align = new Align({
  apiKey: process.env.ALIGN_API_KEY!,
  environment: "sandbox",
});

// Send transaction
const tx = await align.blockchain.wallets.sendNativeToken(
  wallet,
  recipient,
  "0.1",
  "polygon"
);

console.log(`TX sent: ${tx.hash}`);

// Wait for 1 confirmation
const receipt = await align.blockchain.transactions.waitForConfirmation(
  tx.hash,
  "polygon"
);

console.log(`Confirmed in block ${receipt.blockNumber}`);
console.log(`Gas used: ${receipt.gasUsed}`);

Wait for Multiple Confirmations

For high-value transactions, wait for more confirmations:
// Wait for 12 confirmations (recommended for Ethereum)
const receipt = await align.blockchain.transactions.waitForConfirmation(
  tx.hash,
  "ethereum",
  12
);

console.log(
  `Transaction finalized with ${receipt.confirmations} confirmations`
);

With Timeout Handling

const timeoutMs = 60000; // 60 seconds

try {
  const receipt = (await Promise.race([
    align.blockchain.transactions.waitForConfirmation(tx.hash, "polygon"),
    new Promise((_, reject) =>
      setTimeout(() => reject(new Error("Timeout")), timeoutMs)
    ),
  ])) as TransactionReceiptData;

  console.log("Confirmed:", receipt.blockNumber);
} catch (error) {
  if (error.message === "Timeout") {
    console.log("Transaction taking longer than expected");
    // Check status manually
    const status = await align.blockchain.transactions.getStatus(
      tx.hash,
      "polygon"
    );
  }
}
Confirmation times vary by network: - Polygon: ~2 seconds per block - Ethereum: ~12 seconds per block - Arbitrum/Optimism: ~0.3 seconds per block