Filter 如何使用infura从以太坊的一个块中获取所有日志

Filter 如何使用infura从以太坊的一个块中获取所有日志,filter,ethereum,web3js,Filter,Ethereum,Web3js,我想通过一次调用获取以太坊中给定块的所有日志。我知道我们可以一个接一个地获取交易凭证,然后从每个凭证中,我们可以获取其日志。但这似乎效率不高 从中,我们可以使用eth_getLogs方法返回与给定筛选器对象匹配的所有日志的数组,例如地址、块(From和to)、主题、块哈希。我尝试单独使用blockhash过滤器(如下所示),它会返回一个日志列表: curl https://ropsten.infura.io/v3/project-id \ -X POST \ -H "Conten

我想通过一次调用获取以太坊中给定块的所有日志。我知道我们可以一个接一个地获取交易凭证,然后从每个凭证中,我们可以获取其日志。但这似乎效率不高

从中,我们可以使用eth_getLogs方法返回与给定筛选器对象匹配的所有日志的数组,例如地址、块(From和to)、主题、块哈希。我尝试单独使用blockhash过滤器(如下所示),它会返回一个日志列表:

curl https://ropsten.infura.io/v3/project-id \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"blockHash": "0xf05a7ef9ca8df22301939cfb144c9ec0795fc0868ec0bab9e08b078da5bb5838"}],"id":1}'
然而,当我试图在我的程序中对其进行编码时,我找不到一种方法来创建带有区块哈希的ETH过滤器。我需要以这种方式创建一个请求ETH过滤器,EthFilter(DefaultBlockParameterfromBlock,DefaultBlockParameterToBlock,List address)。有人知道如何使用区块哈希创建EthFilter吗

我已经用这个做了测试,试图在最新的blcok中获取所有日志

org.web3j.protocol.core.methods.request.EthFilter filter = new org.web3j.protocol.core.methods.request.EthFilter(DefaultBlockParameterName.LATEST, DefaultBlockParameterName.LATEST, "");
EthLog ethLog = getEthereumClient().ethGetLogs(filter).send();
但是返回的ethLog有一个错误消息,“数据类型必须以0x开头”。似乎我必须在那里给出一个具体的合同地址,但这不是我想要的。我想从块中获取所有日志


谢谢你

嘿@Ming Wu你找到解决方案了吗?嘿@Ming Wu你找到解决方案了吗?