Web3j:如何获取以太坊交易信息(Java 而非 JS)

San*_*ith 5 java ethereum web3-java

我刚刚开始使用 Web3j,但遇到了一些基本问题。

我已经成功地找到了如何获取 EthBlock 并检索其中的所有信息。我想查看区块中的交易列表,但我不知道如何查看。

我可以打电话

 List<TransactionResult> transactions = ethBlock.getBlock().getTransactions();
Run Code Online (Sandbox Code Playgroud)

我应该能够浏览此列表并获取有关每笔交易的信息。但是我似乎对 TransactionResult 所能做的就是将它强制转换为非常无用的 TransactionHash。我想要的是一个可以从中提取大量信息的 TransactionObject。

如何获取真实的交易数据?

另一个注意事项:是否有任何理由为什么似乎没有任何 Web3j JavaDoc?

Ada*_*nis 6

它就在那里,只是由于他们如何使用泛型而导致如何获取它令人困惑。下面的示例将输出块中每笔交易的发送者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());
});
Run Code Online (Sandbox Code Playgroud)

请记住,这是TransactionObject(发送的交易),而不是TransactionReceipt包含正在挖掘的交易结果的结果。

  • 如何获取每个块的所有“TransactionReceipt”列表? (3认同)
  • 谢谢,这是一个很大的帮助。事实证明我正确理解了泛型。我没有做的是将 true 传递给 ethGetBlockByNumber。我复制的代码将 parm 设置为 false - 我猜这造成了所有的差异。 (2认同)