eth_getLogs - zkSync RPC Method
Query event logs on zkSync Era. Essential for indexing RWA tokenization ($1.9B, 25% market share), hyperchain deployment via ZK Stack, and cross-chain DeFi on Matter Labs' flagship zkEVM powering the Elastic Network of interoperable hyperchains.
Returns an array of all logs matching a given filter object on zkSync Era.
Why zkSync? Build on Matter Labs' flagship zkEVM powering the Elastic Network of interoperable hyperchains with ZK Stack modular framework, hyperchain interoperability, native account abstraction, and $1.9B in tokenized real-world assets.
Use Cases
The eth_getLogs method is essential for:
- Event indexing - Track contract events for RWA tokenization ($1.9B, 25% market share), hyperchain deployment via ZK Stack, and cross-chain DeFi
- Token transfers - Monitor ERC20/ERC721 transfers
- DeFi analytics - Track swaps, liquidity events, and more
- Notification systems - Alert on specific on-chain events
Request Parameters
Starting block (default: "latest")
Ending block (default: "latest")
Contract address(es) to filter
Array of topic filters
Filter single block by hash
Response Body
Contract that emitted the log
Array of indexed topics
Non-indexed log data
Block number
Transaction hash
Log index in block
Code Examples
curl -X POST https://api-zksync-era-mainnet-full.n.dwellir.com/YOUR_API_KEY \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "eth_getLogs",
"params": [{
"fromBlock": "latest",
"toBlock": "latest",
"address": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]
}],
"id": 1
}'import { JsonRpcProvider, Contract } from 'ethers';
const provider = new JsonRpcProvider('https://api-zksync-era-mainnet-full.n.dwellir.com/YOUR_API_KEY');
// Get Transfer events
const TRANSFER_TOPIC = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
async function getTransferEvents(tokenAddress, fromBlock, toBlock) {
const logs = await provider.getLogs({
address: tokenAddress,
topics: [TRANSFER_TOPIC],
fromBlock: fromBlock,
toBlock: toBlock
});
return logs.map(log => ({
from: '0x' + log.topics[1].slice(26),
to: '0x' + log.topics[2].slice(26),
blockNumber: log.blockNumber,
transactionHash: log.transactionHash
}));
}
const events = await getTransferEvents(
'0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91',
'latest',
'latest'
);
console.log('Transfer events:', events);from web3 import Web3
w3 = Web3(Web3.HTTPProvider('https://api-zksync-era-mainnet-full.n.dwellir.com/YOUR_API_KEY'))
TRANSFER_TOPIC = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'
def get_transfer_events(token_address, from_block, to_block):
logs = w3.eth.get_logs({
'address': token_address,
'topics': [TRANSFER_TOPIC],
'fromBlock': from_block,
'toBlock': to_block
})
events = []
for log in logs:
events.append({
'from': '0x' + log['topics'][1].hex()[26:],
'to': '0x' + log['topics'][2].hex()[26:],
'block': log['blockNumber'],
'tx': log['transactionHash'].hex()
})
return events
events = get_transfer_events(
'0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91',
'latest',
'latest'
)
print(f'Found {len(events)} transfer events')package main
import (
"context"
"fmt"
"log"
"math/big"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient"
)
func main() {
client, err := ethclient.Dial("https://api-zksync-era-mainnet-full.n.dwellir.com/YOUR_API_KEY")
if err != nil {
log.Fatal(err)
}
contractAddress := common.HexToAddress("0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91")
transferTopic := common.HexToHash("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef")
query := ethereum.FilterQuery{
FromBlock: big.NewInt(0),
ToBlock: nil,
Addresses: []common.Address{contractAddress},
Topics: [][]common.Hash,
}
logs, err := client.FilterLogs(context.Background(), query)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Found %d events\n", len(logs))
}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
eth_call
Execute smart contract calls without creating transactions on zkSync Era. Essential for reading contract state for RWA tokenization ($1.9B, 25% market share), hyperchain deployment via ZK Stack, and cross-chain DeFi.
eth_newFilter
Create event log filter on zkSync Era. Essential for monitoring events for RWA tokenization ($1.9B, 25% market share), hyperchain deployment via ZK Stack, and cross-chain DeFi.