以太坊JSON RPC手册

eth_getFilterChanges

轮询指定的过滤器,并返回自上次轮询之后新生成的日志数组。

参数

QUANTITY - 过滤器编号

params: [
  "0x16" // 22
]

返回值

Array - 日志对象数组,如果没有新生成的日志,则返回空数组

使用eth_newBlockFilter创建的过滤器将返回块哈希(32字节),例如["0x3454645634534..."]

使用eth_newPendingTransactionFilter创建的过滤器将返回交易哈希 (32字节),例如["0x6345343454645..."]

使用eth_newFilter创建的过滤器,日志对象具有如下参数:

  • removed: TAG - 如果日志已被删除则返回true,如果是有效日志则返回false
  • logIndex: QUANTITY - 日志在块内的索引序号。对于挂起日志,该值为null
  • transactionIndex: QUANTITY - 创建日志的交易索引序号,对于挂起日志,该值为null
  • transactionHash: DATA, 32字节 - 创建该日志的交易的哈希。对于挂起日志,该值为null
  • blockHash: DATA, 32字节 - 该日志所在块的哈希。对于挂起日志,该值为null
  • blockNumber: QUANTITY - 该日志所在块的编号。对于挂起日志,该值为null
  • address: DATA, 20字节 - 该日志的源地址
  • data: DATA - 包含该日志的一个或多个32字节无索引参数
  • topics: Array of DATA -0~4个32字节索引日志参数的数据。在solidity中,第一个主题是事件签名,例如 Deposit(address,bytes32,uint256),除非你声明的是匿名事件

示例代码

请求:

curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0x16"],"id":73}'

响应:

{
  "id":1,
  "jsonrpc":"2.0",
  "result": [{
    "logIndex": "0x1", // 1
    "blockNumber":"0x1b4", // 436
    "blockHash": "0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d",
    "transactionHash":  "0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf",
    "transactionIndex": "0x0", // 0
    "address": "0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d",
    "data":"0x0000000000000000000000000000000000000000000000000000000000000000",
    "topics": ["0x59ebeb90bc63057b6515673c3ecf9438e5058bca0f92585014eced636878c9a5"]
    },{
      ...
    }]
}