eth_getLogs
返回与过滤器对象匹配的日志数组。这是索引和监听合约事件时最常用的方法之一。
Object— 过滤配置:字段 类型 说明 fromBlock QUANTITY|TAG 起始区块(默认 "latest")toBlock QUANTITY|TAG 结束区块(默认 "latest")address DATA|Array 要过滤的合约地址 topics Array Topic 过滤条件(事件索引参数) blockHash DATA 限定单个区块
Array — 日志对象数组:
| 字段 | 类型 | 说明 |
|---|---|---|
| address | DATA | 产生日志的合约地址 |
| topics | Array | 已索引事件参数 |
| data | DATA | 未索引事件参数 |
| blockNumber | QUANTITY | 区块号 |
| transactionHash | DATA | 交易哈希 |
| logIndex | QUANTITY | 区块内日志索引 |
# 查询最近的 USDC Transfer 事件curl -X POST https://eth-mainnet.blockreq.com/v1/rpc/public \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "eth_getLogs", "params": [{ "fromBlock": "0x134E800", "toBlock": "0x134E810", "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"] }], "id": 1 }'Topic
0xddf252ad...是Transfer(address,address,uint256)的 keccak-256 哈希。
JavaScript (ethers.js v6)
Section titled “JavaScript (ethers.js v6)”import { JsonRpcProvider } from "ethers";const provider = new JsonRpcProvider("https://eth-mainnet.blockreq.com/v1/rpc/YOUR_API_KEY");const logs = await provider.getLogs({ address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", topics: ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"], fromBlock: "latest",});console.log(`Found ${logs.length} Transfer events`);Python (web3.py)
Section titled “Python (web3.py)”from web3 import Web3w3 = Web3(Web3.HTTPProvider("https://eth-mainnet.blockreq.com/v1/rpc/YOUR_API_KEY"))logs = w3.eth.get_logs({ "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"], "fromBlock": "latest"})print(f"Found {len(logs)} Transfer events")| Method | Cost |
|---|---|
| eth_getLogs | 50 RU |
大范围区块扫描会因响应体积增加 RU 消耗。