⚠️Blast API (blastapi.io) ends Oct 31. Migrate to Dwellir and skip Alchemy's expensive compute units.
Switch Today →
Skip to main content

eth_getTransactionByHash

Returns information about a transaction requested by transaction hash.

When to Use This Method

Use eth_getTransactionByHash to:

  • Track Transactions - Monitor transaction status after submission
  • Verify Cross-Chain Transfers - Confirm omnichain operations
  • Payment Verification - Confirm payment details
  • Debug Issues - Investigate failed or stuck transactions
  • Build Explorers - Display transaction details

Parameters

  1. Transaction Hash - DATA, 32 Bytes
    • Hash of the transaction to retrieve
    • Format: 0x followed by 64 hexadecimal characters
{
"jsonrpc": "2.0",
"method": "eth_getTransactionByHash",
"params": [
"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"
],
"id": 1
}

Returns

Transaction object or null if not found:

  • blockHash - Hash of the block containing this transaction
  • blockNumber - Block number containing this transaction
  • from - Address of the sender
  • gas - Gas provided by the sender
  • gasPrice - Gas price in wei
  • hash - Transaction hash
  • input - Input data sent with transaction
  • nonce - Number of transactions from sender
  • to - Receiver address (null for contract creation)
  • transactionIndex - Position in the block
  • value - Value transferred in wei
  • type - Transaction type
  • v, r, s - Signature values

Implementation Examples

curl -X POST https://api-xdc-mainnet.n.dwellir.com/YOUR_API_KEY \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "eth_getTransactionByHash",
"params": [
"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"
],
"id": 1
}'

Example Response

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"blockHash": "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
"blockNumber": "0x5daf3b",
"from": "0xa7d9ddbe1f17865597fbd27ec712455208b6b76d",
"gas": "0xc350",
"gasPrice": "0x4a817c800",
"hash": "0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b",
"input": "0x68656c6c6f21",
"nonce": "0x15",
"to": "0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb",
"transactionIndex": "0x41",
"value": "0xf3dbb76162000",
"type": "0x0",
"v": "0x25",
"r": "0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea",
"s": "0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c"
}
}

Cross-Chain Transaction Detection

// Identify and decode cross-chain transactions
async function analyzeCrossChainTx(txHash) {
const tx = await provider.getTransaction(txHash);

if (!tx) return null;

// xdc connector contracts
const connectors = {
mainnet: '0x239e96c8f17C85c30100AC26F635Ea15f23E9c67',
testnet: '0x0000c9ec4042283e8139c74f4c64bcd1e0b9b54f'
};

const isConnectorTx = Object.values(connectors)
.some(addr => tx.to?.toLowerCase() === addr.toLowerCase());

if (isConnectorTx) {
return {
type: 'cross-chain',
hash: tx.hash,
from: tx.from,
sourceChain: 7000,
value: ethers.formatEther(tx.value),
status: tx.blockNumber ? 'confirmed' : 'pending',
confirmations: tx.blockNumber ?
await provider.getBlockNumber() - tx.blockNumber : 0
};
}

return {
type: 'standard',
hash: tx.hash,
from: tx.from,
to: tx.to,
value: ethers.formatEther(tx.value)
};
}

Best Practices

  1. Always check for null responses
  2. Cache transaction data once confirmed
  3. Monitor pending transactions with timeout
  4. Validate transaction hash format
  5. Handle reorg scenarios for recent blocks