Web3j: как получить информацию о транзакции Ethereum (Java, а не JS)

Я только начал использовать Web3j, и у меня возникли основные проблемы.

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

я могу позвонить

 List<TransactionResult> transactions = ethBlock.getBlock().getTransactions();

Я должен иметь возможность просматривать этот список и получать информацию о каждой транзакции. Но все, что я могу сделать с TransactionResult, - это передать его в очень бесполезный TransactionHash. Мне нужен объект TransactionObject, из которого я могу извлечь много информации.

Как я могу получить данные о реальных транзакциях?

И еще одно замечание: есть ли причина, по которой, похоже, нет никакого Web3j JavaDoc ??


person Sander Smith    schedule 11.05.2018    source источник


Ответы (1)


Он там, просто сбивает с толку, как к нему добраться из-за того, как они использовали дженерики. Пример ниже выведет отправителя каждой транзакции в блоке LATEST:

List<EthBlock.TransactionResult> txs = web3j.ethGetBlockByNumber(DefaultBlockParameterName.LATEST, true).send().getBlock().getTransactions();
txs.forEach(tx -> {
  EthBlock.TransactionObject transaction = (EthBlock.TransactionObject) tx.get();

  System.out.println(transaction.getFrom());
});

Имейте в виду, что это TransactionObject (отправленные tx), а не результирующий TransactionReceipt, который содержит результат майнинга tx.

person Adam Kipnis    schedule 11.05.2018
comment
Спасибо, это было большим подспорьем. Оказывается, я правильно понял дженерики. Чего я не сделал, так это передать true в ethGetBlockByNumber. В коде, который я скопировал, для параметра parm было установлено значение false - я думаю, это имело все значение. - person Sander Smith; 12.05.2018
comment
Как мне получить список всех TransactionReceipt в блоке? - person db80; 04.10.2018