eth_getTransactionByHash - Linea RPC Method
Retrieve transaction details by hash on Linea. Essential for enterprise developers, DeFi builders, and teams seeking Consensys ecosystem integration tracking transactions on Consensys-backed zkEVM L2 with $1B+ TVL and 807% growth in 2025.
Returns the information about a transaction by transaction hash on Linea.
Why Linea? Build on Consensys-backed zkEVM L2 with $1B+ TVL and 807% growth in 2025 with 15-30x lower fees than Ethereum mainnet, 6,200 TPS throughput, SWIFT integration with 12+ institutions, and $725M Consensys backing.
When to Use This Method
eth_getTransactionByHash is essential for enterprise developers, DeFi builders, and teams seeking Consensys ecosystem integration:
- Track pending and confirmed transaction status: Monitor the full lifecycle of a transaction from submission through finalization on Linea
- Verify transaction parameters: Confirm the value, gas, and input data match your intent for enterprise DeFi (Aave, Renzo), institutional cross-border payments via SWIFT pilots, and zkEVM-native applications
- Wallet transaction history display: Show detailed transaction records with sender, receiver, value, and status for end users
- Debug failed transactions: Inspect raw transaction data to diagnose reverted calls and unexpected behavior on Consensys-backed zkEVM L2 with $1B+ TVL and 807% growth in 2025
Common Use Cases
1. Wait for Transaction Confirmation with Polling
Poll eth_getTransactionByHash until the transaction's blockNumber becomes non-null, indicating it has been mined on Linea. This is the standard pattern for tracking transaction finality.
import { JsonRpcProvider } from 'ethers';
const provider = new JsonRpcProvider('https://api-linea-mainnet-archive.n.dwellir.com/YOUR_API_KEY');
async function waitForConfirmation(txHash, interval = 2000) {
while (true) {
const tx = await provider.getTransaction(txHash);
if (tx && tx.blockNumber) {
console.log(`Transaction confirmed in block #${tx.blockNumber}`);
return tx;
}
console.log('Transaction pending, waiting...');
await new Promise(r => setTimeout(r, interval));
}
}
waitForConfirmation('0xc9e9cb9405a8e526ee8eb21e2aae56fe6df29590f8e4d44148f15c8f6a263128');2. Display Transaction Details in a Wallet UI
Fetch and format transaction data for display in a wallet or explorer on Linea. Extract the key fields: sender, recipient, value, gas, and confirmation status.
from web3 import Web3
w3 = Web3(Web3.HTTPProvider('https://api-linea-mainnet-archive.n.dwellir.com/YOUR_API_KEY'))
def get_transaction_details(tx_hash):
tx = w3.eth.get_transaction(tx_hash)
if not tx:
return {'status': 'not found'}
return {
'hash': tx['hash'].hex(),
'from': tx['from'],
'to': tx['to'],
'value_ether': w3.from_wei(tx['value'], 'ether'),
'gas': tx['gas'],
'gas_price_gwei': w3.from_wei(tx['gasPrice'], 'gwei'),
'block': tx.get('blockNumber'),
'confirmed': tx.get('blockNumber') is not None,
}
details = get_transaction_details('0xc9e9cb9405a8e526ee8eb21e2aae56fe6df29590f8e4d44148f15c8f6a263128')
for key, value in details.items():
print(f'{key}: {value}')3. Decode Transaction Input Data for Contract Interaction Analysis
When a transaction's input field contains encoded function calls, decode it using a contract ABI to understand what action was performed on Consensys-backed zkEVM L2 with $1B+ TVL and 807% growth in 2025.
package main
import (
"context"
"fmt"
"log"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient"
)
func main() {
client, _ := ethclient.Dial("https://api-linea-mainnet-archive.n.dwellir.com/YOUR_API_KEY")
txHash := common.HexToHash("0xc9e9cb9405a8e526ee8eb21e2aae56fe6df29590f8e4d44148f15c8f6a263128")
tx, isPending, _ := client.TransactionByHash(context.Background(), txHash)
fmt.Printf("Pending: %v\n", isPending)
fmt.Printf("From: %s\n", tx.From().Hex())
fmt.Printf("Value: %s wei\n", tx.Value().String())
fmt.Printf("Gas limit: %d\n", tx.Gas())
if len(tx.Data()) > 0 {
// First 4 bytes are the function selector
selector := tx.Data()[:4]
fmt.Printf("Function selector: 0x%x\n", selector)
fmt.Printf("Input data length: %d bytes\n", len(tx.Data()))
}
}Best Practices
- Check if
blockNumberis null to detect pending transactions: A nullblockNumberindicates the transaction has been submitted but not yet mined; use this to drive polling or loading states in your UI - For mined transactions, cross-reference with receipt for confirmation count: Once a block number is available, use
eth_getTransactionReceiptto get the final status, gas used, and emitted logs - Cache confirmed transaction data indefinitely: Transaction data is immutable once mined; cache it permanently to avoid redundant RPC calls for historical lookups
- Use
eth_getTransactionReceiptfor post-confirmation data: After a transaction is confirmed, calleth_getTransactionReceiptto get gas used, logs, status code, and effective gas price
Code Examples
Error Handling
| Error Code | Message | Description |
|---|---|---|
| -32602 | Invalid params | Invalid transaction hash format |
Related Methods
eth_getTransactionReceipt- Get transaction receipteth_sendRawTransaction- Send transaction
eth_sendRawTransaction
Submit signed transactions to Linea. Essential for broadcasting transactions for enterprise DeFi (Aave, Renzo), institutional cross-border payments via SWIFT pilots, and zkEVM-native applications.
eth_getTransactionReceipt
Get transaction receipt with status and logs on Linea. Essential for verifying transaction execution for enterprise DeFi (Aave, Renzo), institutional cross-border payments via SWIFT pilots, and zkEVM-native applications.