以太坊常见问题和错误

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

怎样通过java用web3j查询以太坊交易信息?

刚开始使用web3j,我有一些基本的麻烦。

我已经可以成功如何获得一个EthBlock,并检索里面的所有信息。我想看看这个块中的交易列表,我该怎么做?

我可以调用:

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

我应该能够浏览这个列表并获得有关每笔交易的信息。但是,我所能做到的似乎都是交易处理结果,把它转换成非常无效的交易处理。我想要一个可以从中提取大量信息的交易对象。

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

另一个注意事项:有什么相关的文档推荐?web3j JavaDoc?

问题的解答

你的调用并没错,只是混淆了一些概念。看下该如何使用泛型。比如下面的示例将在最新的块中输出每个交易的发送方:

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 发送 ) ,而不是包含TX挖掘结果的TransactionReceipt收据。