以太坊 - 如何使用 Java / Web3j 连接以太坊网络

  • QuickNode
  • 发布于 2024-12-24 22:19
  • 阅读 38

本文详细介绍了如何使用Java和Web3j库连接以太坊区块链,内容包括Java的特点、Web3j的功能、环境准备及步骤、依赖安装,以及实际代码示例,通过Java程序获取以太坊最新区块编号,适合开发者学习应用。

概述

Java 是一种非常多功能的语言,至今仍然保持着相关性。Java 之所以流行,是因为其庞大的用户群体和应用场景。本指南将教我们如何使用 Java 和 Web3j 连接以太坊区块链。

Java 的一些背景

Java 的口号是“写一次,随处运行”,这意味着 Java 程序应该能够在任何机器上运行。Java JVM(Java 虚拟机)使 Java 代码能够在多个平台上运行。

Java 的特点:

  • 完全面向对象。

  • 拥有最成熟的开发者社区之一。

  • 得到科技巨头 Oracle 的支持。

  • 拥有大量框架以构建可靠的应用程序。

  • 拥有庞大的 IDE 集合。

在本指南中,我们将借助名为 Web3j 的 Java 库连接以太坊网络。

什么是 Web3j?

Web3j 是一个与以太坊智能合约交互并与以太坊节点集成的 Java 库。它高度模块化、安全类型和反应式,旨在用于 Java 和 Android 开发以太坊。Web3j 消除了编写自定义集成代码以连接以太坊区块链网络的开销。

Web3j 的特点:

  • 完整的以太坊 JSON-RPC 客户端 API,支持 HTTP 和 IPC 实现,以及以太坊钱包支持。

  • 自动生成 Java 智能合约包装器,用于从本机 Java 代码创建、部署、交易和调用智能合约(支持 SolidityTruffle 定义格式)。

  • 处理过滤器的反应式功能 API。

  • 支持 以太坊域名服务(ENS)

  • 支持托管以太坊节点。

  • 支持 ERC20 和 ERC721 代币标准。

  • 命令行工具。

  • 与 Android 兼容。

先决条件

  • 系统上已安装 Java。

  • 一个 Java IDE,这里我们将使用 Jet Brains 的 IntelliJ IDEA(社区版)。

  • 一个以太坊节点。

安装 web3j Java 库

为了安装 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 选项,再点击创建按钮。

在 IntelliJ 上创建新项目

现在,你会看到一个 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>

在 IntelliJ 上的 pom.xml 文件

在这里,我们在 pom.xml 文件中添加了 web3j 依赖以与以太坊区块链进行交互,并添加了 slf4j 依赖以管理日志错误;有关更多信息,请 点击这里

你的 pom.xml 文件必须看起来像这样(Web3Dev 是项目名称):

在 IntelliJ 上更新的 pom.xml 文件

然后从右侧面板点击 Maven,展开你的项目目录,选择 Lifecycle,然后双击 install;这将安装 Web3j。你将在 IDE 终端中看到一个“BUILD SUCCESS”消息,如下所示。

Web3j 安装成功构建

设置你的 QuickNode 以太坊端点

在以太坊上构建应用时,你需要一个 API 端点与网络连接。你可以使用公共节点或部署和管理自己的基础设施;不过,如果你希望获得 8 倍的响应速度,可以将繁重的工作交给我们。请在 这里 注册一个免费帐户。

登录后,点击 创建端点,然后选择 以太坊主网 区块链。请注意,本指南中的代码也适用于其他基于 EVM 的链(例如 Polygon PoS)。

Quicknode 以太坊端点的屏幕截图

创建端点后,复制你的 HTTP 提供程序 URL 并保留好,因为你将在下一部分中需要它。

通过 Java / Web3j 连接

现在让我们编写一段简单的 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();
        }
    }
}

BlockNumber.Java 代码在 IntelliJ 上

确保用你自己的 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 文件。成功的输出应如下所示:

BlockNumber.java 执行的输出

结论

恭喜!你已经成功使用 Java 和 Web3j 连接了以太坊网络!请查看 Web3j GitHub 仓库 以获取更多信息,并检查利用 web3j 的代码。同时,查看他们的 文档 以了解更多。

如果你遇到问题、问有问题,或者只想聊聊你正在构建的内容,请通过 DiscordTwitter 联系我们!

我们 ❤️ 反馈!

如果你对本指南有任何反馈,请 告诉我们。我们很期待听到你的意见!

  • 原文链接: quicknode.com/guides/eth...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
QuickNode
QuickNode
江湖只有他的大名,没有他的介绍。