eth_getLogs
Returns an array of all logs matching a given filter object.
When to Use This Method
Use eth_getLogs
to:
- Query Contract Events - Find specific emitted events
- Monitor Cross-Chain Activity - Track omnichain events
- Build Event Indexes - Create searchable event databases
- Analyze Historical Data - Query past events
- Real-time Monitoring - Watch for new events
Parameters
Filter object with:
fromBlock
- Starting block (optional)toBlock
- Ending block (optional)address
- Contract address or array of addresses (optional)topics
- Array of topics to filter (optional)blockHash
- Restrict to single block (optional)
{
"jsonrpc": "2.0",
"method": "eth_getLogs",
"params": [{
"fromBlock": "0x5d9000",
"toBlock": "0x5da000",
"address": "0x239e96c8f17C85c30100AC26F635Ea15f23E9c67",
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
}],
"id": 1
}
Returns
Array of log objects with:
address
- Address that emitted the eventtopics
- Array of indexed parametersdata
- Non-indexed parametersblockNumber
- Block containing the logtransactionHash
- Transaction that created the logtransactionIndex
- Transaction positionblockHash
- Hash of the blocklogIndex
- Log position in blockremoved
- True if log was removed (reorg)
Implementation Examples
- JavaScript
- Python
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider('https://api-zetachain-mainnet.n.dwellir.com/YOUR_API_KEY');
// Query Transfer events
const filter = {
fromBlock: 5999000,
toBlock: 'latest',
address: '0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf',
topics: [
ethers.id('Transfer(address,address,uint256)')
]
};
const logs = await provider.getLogs(filter);
logs.forEach(log => {
console.log('Transfer event:');
console.log(' From:', log.topics[1]);
console.log(' To:', log.topics[2]);
console.log(' Block:', log.blockNumber);
});
// Query cross-chain events
const crossChainFilter = {
address: '0x239e96c8f17C85c30100AC26F635Ea15f23E9c67',
topics: [
ethers.id('CrossChainCall(address,uint256,bytes)')
]
};
const crossChainLogs = await provider.getLogs(crossChainFilter);
from web3 import Web3
w3 = Web3(Web3.HTTPProvider('https://api-zetachain-mainnet.n.dwellir.com/YOUR_API_KEY'))
# Create filter for Transfer events
filter_params = {
'fromBlock': 5999000,
'toBlock': 'latest',
'address': '0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf',
'topics': [w3.keccak(text='Transfer(address,address,uint256)').hex()]
}
logs = w3.eth.get_logs(filter_params)
for log in logs:
print(f"Event at block {log['blockNumber']}")
print(f" Transaction: {log['transactionHash'].hex()}")
Related Methods
eth_newFilter
- Create event filter (create filter with your node)eth_getFilterChanges
- Poll for new log events- eth_getTransactionReceipt - Get logs from receipt