package com.example.demo.web3jLog; import org.springframework.stereotype.Component; import org.web3j.protocol.Web3j; import org.web3j.protocol.core.DefaultBlockParameter; import org.web3j.protocol.core.DefaultBlockParameterName; import org.web3j.protocol.core.methods.request.EthFilter; import org.web3j.protocol.core.methods.response.*; import org.web3j.protocol.core.methods.response.Transaction; import org.web3j.protocol.http.HttpService; import org.web3j.utils.Convert; import java.io.IOException; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.concurrent.ExecutionException; @Component public class ETHWeb3jTest { /** * 完成web3的初始化 区块链节点地址介绍以下地址 */ public static Web3j web3j = Web3j.build(new HttpService("https://org:8545/")); public static void main(String[] args) { BigInteger latestBlock; try { //获取ETH最新区块号 latestBlock = web3j.ethBlockNumber().send().getBlockNumber(); ///通过区块号获得交易 List<EthBlock.TransactionResult> ethGetBlance = web3j.ethGetBlockByNumber(DefaultBlockParameter.valueOf(latestBlock.subtract(new BigInteger("3"))),true).send().getBlock().getTransactions(); //通过hash获取交易 Optional<Transaction> transactions = web3j.ethGetTransactionByHash("hash").send().getTransaction(); } catch (IOException e) { e.printStackTrace(); } List<EthBlock.TransactionResult> txs = null; try { //也可以直接获得最新交易 txs = web3j.ethGetBlockByNumber(DefaultBlockParameterName.LATEST, true).send().getBlock().getTransactions(); } catch (IOException e) { e.printStackTrace(); } txs.forEach(tx -> { EthBlock.TransactionObject transaction = (EthBlock.TransactionObject) tx.get(); System.out.println(transaction.getFrom()); }); } }
以下是项目的相关依赖:
<dependency> <groupId>org.web3j</groupId> <artifactId>core</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>29.0-jre</version> </dependency> <dependency> <groupId>org.bitcoinj</groupId> <artifactId>bitcoinj-core</artifactId> <version>0.15.5</version> </dependency>