0%

evm | 过滤功能

这里以

  • eth_newPendingTransactionFilter
  • eth_getFilterChanges

为例。

所谓的过滤,其步骤是这样的

  • 首先给节点传递一个过滤请求,获取到一个过滤标识
    • 每个过滤标识存活时间 5 分钟
  • 拿着过滤标识,请求过滤方法

当然,你的节点得支持过滤。例子如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import time

import requests

data = requests.post("https://bsc-mainnet.nodereal.io/v1/***",
data='{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":1}')
# 解析 JSON 响应
json_response = data.json()

# 提取 pending 交易信息
if "result" in json_response:
r = json_response["result"]

while 1:
c = '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["' + r + '"],"id":2}'
data = requests.post("https://bsc-mainnet.nodereal.io/v1/***",
data=c)
print(data.json())

time.sleep(0.5)
请我喝杯咖啡吧~