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": [
"0xe0c65e4be865767ff384a285a75f664ac3efb33eadac01531df6eccfbb0415d9"
],
"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-zetachain-mainnet.n.dwellir.com/YOUR_API_KEY -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0xbe6c731a578367d03d77834af854d2d922ac4e5ee38a3ee5c9472a849481cae2"],"id":1}'

Example Response#

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"blockHash": "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
"blockNumber": "0x5daf3b",
"from": "0xa7d9ddbe1f17865597fbd27ec712455208b6b76d",
"gas": "0xc350",
"gasPrice": "0x4a817c800",
"hash": "0xe0c65e4be865767ff384a285a75f664ac3efb33eadac01531df6eccfbb0415d9",
"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;

// ZetaChain 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