как достать все логи из блока в Ethereum с инфурой - PullRequest
0 голосов
/ 03 марта 2020

Я хотел бы получить все журналы из данного блока в Ethereum одним вызовом. Я знаю, что мы можем получить квитанцию ​​транзакции одну за другой, затем из каждой квитанции мы можем получить ее логи. Но это кажется неэффективным.

Из документации Infura , мы можем использовать метод eth_getLogs, чтобы вернуть массив всех журналов, соответствующих данному объекту фильтра, таких как адрес, блок (от и до) , топи c, блокха sh. Я попытался использовать только фильтр blockha sh (показанный ниже), и он возвращает мне список журналов:

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 фильтр с блоком Ha sh. Мне нужно создать ETH фильтр запроса таким образом, EthFilter (DefaultBlockParameter fromBlock, DefaultBlockParameter toBlock, List address). Кто-нибудь знает, как создать EthFilter с blockHa sh?

Я был протестирован с этим, пытаясь получить все журналы в последнем 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 имеет ошибку msg, "типы данных должны начинаться с 0x". Кажется, я должен указать конкретный c адрес контракта там, но это не то, что я хочу. Я хочу получить все журналы из блока.

Спасибо

...