eth_getLogs
Returns an array of all logs matching a given filter object on MegaETH.
Why MegaETH? Build on the first real-time blockchain with sub-millisecond latency and 100,000+ TPS with sub-millisecond transaction streaming with 100,000+ sustained TPS and full EVM compatibility.
Use Cases#
The eth_getLogs method is essential for:
- Event indexing - Track contract events for high-frequency trading, real-time gaming, instant payments, and latency-sensitive applications
- Token transfers - Monitor ERC20/ERC721 transfers
- DeFi analytics - Track swaps, liquidity events, and more
- Notification systems - Alert on specific on-chain events
Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
fromBlock | QUANTITY|TAG | No | Starting block (default: "latest") |
toBlock | QUANTITY|TAG | No | Ending block (default: "latest") |
address | DATA|Array | No | Contract address(es) to filter |
topics | Array | No | Array of topic filters |
blockHash | DATA | No | Filter single block by hash |
Request#
{
"jsonrpc": "2.0",
"method": "eth_getLogs",
"params": [{
"fromBlock": "0x70f337",
"toBlock": "0x70f341",
"address": "0x4200000000000000000000000000000000000006",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]
}],
"id": 1
}
Returns#
Array of log objects:
| Field | Type | Description |
|---|---|---|
address | DATA | Contract that emitted the log |
topics | Array | Array of indexed topics |
data | DATA | Non-indexed log data |
blockNumber | QUANTITY | Block number |
transactionHash | DATA | Transaction hash |
logIndex | QUANTITY | Log index in block |
Response#
{
"jsonrpc": "2.0",
"id": 1,
"result": [{
"address": "0x0E0f4Dd25ae8AB20E1583D9E8EDFf319A88e1d3f",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x...", "0x..."],
"data": "0x...",
"blockNumber": "0x5BAD55",
"transactionHash": "0x...",
"logIndex": "0x0"
}]
}
Code Examples#
- cURL
- JavaScript
- Python
# Query ERC20 Transfer events
curl -X POST https://api-megaeth-mainnet.n.dwellir.com/YOUR_API_KEY \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "eth_getLogs",
"params": [{
"fromBlock": "0x70f337",
"toBlock": "0x70f341",
"address": "0x4200000000000000000000000000000000000006",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]
}],
"id": 1
}'
import { JsonRpcProvider, Contract } from 'ethers';
const provider = new JsonRpcProvider('https://api-megaeth-mainnet.n.dwellir.com/YOUR_API_KEY');
// ERC20 ABI for Transfer event
const ERC20_ABI = [
"event Transfer(address indexed from, address indexed to, uint256 value)"
];
const tokenAddress = '0x4200000000000000000000000000000000000006';
const contract = new Contract(tokenAddress, ERC20_ABI, provider);
// Query Transfer events in block range
const fromBlock = 7402295; // 0x70f337
const toBlock = 7402305; // 0x70f341
const filter = contract.filters.Transfer();
const logs = await contract.queryFilter(filter, fromBlock, toBlock);
console.log(`Found ${logs.length} Transfer events`);
logs.forEach(log => {
console.log(`From: ${log.args.from}`);
console.log(`To: ${log.args.to}`);
console.log(`Amount: ${log.args.value.toString()}`);
});
from web3 import Web3
w3 = Web3(Web3.HTTPProvider('https://api-megaeth-mainnet.n.dwellir.com/YOUR_API_KEY'))
# Query Transfer events
filter_params = {
'fromBlock': 0x70f337,
'toBlock': 0x70f341,
'address': '0x4200000000000000000000000000000000000006',
'topics': ['0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef']
}
logs = w3.eth.get_logs(filter_params)
print(f'Found {len(logs)} Transfer events')
for log in logs:
# Decode Transfer event (from, to, value)
from_address = '0x' + log['topics'][1].hex()[-40:]
to_address = '0x' + log['topics'][2].hex()[-40:]
value = int(log['data'].hex(), 16)
print(f'From: {from_address}')
print(f'To: {to_address}')
print(f'Value: {value}')
Error Handling#
| Error Code | Message | Description |
|---|---|---|
| -32005 | Query returned more than 10000 results | Reduce block range |
| -32602 | Invalid params | Invalid filter parameters |
Related Methods#
eth_newFilter- Create a filter for logseth_getFilterChanges- Poll filter for new logs