本文详细介绍了如何使用Java和Web3j库连接以太坊区块链,内容包括Java的特点、Web3j的功能、环境准备及步骤、依赖安装,以及实际代码示例,通过Java程序获取以太坊最新区块编号,适合开发者学习应用。
Java 是一种非常多功能的语言,至今仍然保持着相关性。Java 之所以流行,是因为其庞大的用户群体和应用场景。本指南将教我们如何使用 Java 和 Web3j 连接以太坊区块链。
Java 的一些背景
Java 的口号是“写一次,随处运行”,这意味着 Java 程序应该能够在任何机器上运行。Java JVM(Java 虚拟机)使 Java 代码能够在多个平台上运行。
Java 的特点:
完全面向对象。
拥有最成熟的开发者社区之一。
得到科技巨头 Oracle 的支持。
拥有大量框架以构建可靠的应用程序。
拥有庞大的 IDE 集合。
在本指南中,我们将借助名为 Web3j 的 Java 库连接以太坊网络。
Web3j 是一个与以太坊智能合约交互并与以太坊节点集成的 Java 库。它高度模块化、安全类型和反应式,旨在用于 Java 和 Android 开发以太坊。Web3j 消除了编写自定义集成代码以连接以太坊区块链网络的开销。
Web3j 的特点:
完整的以太坊 JSON-RPC 客户端 API,支持 HTTP 和 IPC 实现,以及以太坊钱包支持。
自动生成 Java 智能合约包装器,用于从本机 Java 代码创建、部署、交易和调用智能合约(支持 Solidity 和 Truffle 定义格式)。
处理过滤器的反应式功能 API。
支持 以太坊域名服务(ENS)。
支持托管以太坊节点。
支持 ERC20 和 ERC721 代币标准。
命令行工具。
与 Android 兼容。
先决条件
系统上已安装 Java。
一个 Java IDE,这里我们将使用 Jet Brains 的 IntelliJ IDEA(社区版)。
一个以太坊节点。
为了安装 Web3j并运行我们的代码,我们需要在系统中安装 Java。要检查是否已安装 Java,请在终端/命令提示符中输入以下内容:
java -version
它必须返回你系统中安装的 Java 版本。如果没有安装,请根据你的操作系统类型从 这里 下载。
我们可以使用 Maven 或 Gradle 安装 Web3j。
对于 Maven:
Java 8:
<dependency>
<groupId>org.web3j</groupId>
<artifactId>core</artifactId>
<version>4.9.8</version>
</dependency>
Android:
<dependency>
<groupId>org.web3j</groupId>
<artifactId>core</artifactId>
<version>4.8.7-android</version>
</dependency>
对于 Gradle:
Java 8:
compile ('org.web3j:core:4.6.3')
Android:
compile ('org.web3j:core:4.6.0-android')
我们将使用 Maven 来管理我们的 Java 库依赖并进行安装。首先,设置我们的 IntelliJ IDE。创建一个新项目,将其命名为 Web3jDev,并选择 Maven 作为构建系统。然后,取消勾选 Add sample code 选项,再点击创建按钮。
现在,你会看到一个 pom.xml 文件在一个窗口中打开,将以下代码粘贴到你的 pom.xml 文件的第 10 行:
<dependencies>
<dependency>
<groupId>org.web3j</groupId>
<artifactId>core</artifactId>
<version>4.9.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.5</version>
<scope>compile</scope>
</dependency>
</dependencies>
在这里,我们在 pom.xml 文件中添加了 web3j 依赖以与以太坊区块链进行交互,并添加了 slf4j 依赖以管理日志错误;有关更多信息,请 点击这里。
你的 pom.xml 文件必须看起来像这样(Web3Dev 是项目名称):
然后从右侧面板点击 Maven,展开你的项目目录,选择 Lifecycle,然后双击 install;这将安装 Web3j。你将在 IDE 终端中看到一个“BUILD SUCCESS”消息,如下所示。
设置你的 QuickNode 以太坊端点
在以太坊上构建应用时,你需要一个 API 端点与网络连接。你可以使用公共节点或部署和管理自己的基础设施;不过,如果你希望获得 8 倍的响应速度,可以将繁重的工作交给我们。请在 这里 注册一个免费帐户。
登录后,点击 创建端点,然后选择 以太坊主网 区块链。请注意,本指南中的代码也适用于其他基于 EVM 的链(例如 Polygon PoS)。
创建端点后,复制你的 HTTP 提供程序 URL 并保留好,因为你将在下一部分中需要它。
现在让我们编写一段简单的 Java 代码,从以太坊区块链中获取最新的区块号。为此,从左侧面板展开你的项目,然后点击 src,然后是 main,然后右键单击 Java,选择新建,选择一个 Java 类;你可以将新的 Java 类命名为任何内容(如下图所示)。然后,将以下内容复制/粘贴到你新创建的 Java 类文件中(以下示例中的 BlockNumber.java):
import org.web3j.protocol.Web3j;
import org.web3j.protocol.http.HttpService;
import java.io.IOException;
import java.math.BigInteger;
public class BlockNumber {
public static void main(String[] args) {
Web3j web3 = Web3j.build(new HttpService("YOUR_QUICKNODE_HTTP_PROVIDER_URL"));
try {
BigInteger blockNumber = web3.ethBlockNumber().send().getBlockNumber();
System.out.println("最新以太坊区块号: " + blockNumber);
} catch (IOException e) {
e.printStackTrace();
}
}
}
确保用你自己的 QuickNode HTTP 提供程序 URL 替换上面代码中的 YOUR_QUICKNODE_HTTP_PROVIDER_URL 占位符。
以下是上述代码的简单说明:
第 1 行至第 4 行:导入所需的库,如 web3j 和本机 Java 库如 IOException 和 BigInteger。
第 6 行至第 17 行:创建一个名为 BlockNumber 的类并声明一个 main 方法,该方法将是我们执行 Java 程序的入口点。然后,我们声明一个 Web3j 变量,保存我们的 QuickNode HTTP URL,并创建一个与以太坊区块链的连接。接着声明一个 try-catch 语句;try 部分包含调用 web3.ethBlockNumber().send().getBlockNumber(),其结果存储在变量 blockNumber 中。接下来,使用 System.out.println 记录区块号。如果请求不成功,catch 语句将使用 IOException 库打印错误。
注意:在我们执行代码之前,需要关闭 IntelliJ IDE 并重新打开项目,以便识别我们安装的依赖。
重新打开 IntelliJ IDE 后,通过在 IntelliJ 文件资源管理器中右键单击文件名并单击“运行 BlockNumber.java”来执行 BlockNumber.java 文件。成功的输出应如下所示:
恭喜!你已经成功使用 Java 和 Web3j 连接了以太坊网络!请查看 Web3j GitHub 仓库 以获取更多信息,并检查利用 web3j 的代码。同时,查看他们的 文档 以了解更多。
如果你遇到问题、问有问题,或者只想聊聊你正在构建的内容,请通过 Discord 或 Twitter 联系我们!
如果你对本指南有任何反馈,请 告诉我们。我们很期待听到你的意见!
- 原文链接: quicknode.com/guides/eth...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!