Web3.js入门指南,如何连接以太坊公网并与智能交互

时间: 2026-02-16 13:45 阅读数: 22人阅读

在区块链开发的浪潮中,与以太坊网络进行交互是开发者必备的核心技能,Web3.js 正是以太坊官方提供的 JavaScript API 库,它像一座桥梁,让我们的 Web 应用能够轻松地与以太坊区块链进行通信,本文将手把手教你如何使用 Web3.js 连接到以太坊公网,为你的去中心化应用(DApp)打下坚实的基础。

什么是 Web3.js 和以太坊公网?

在开始之前,我们先简单理解两个核心概念:

  1. Web3.js:这是一个强大的 JavaScript 库,封装了与以太坊节点交互的复杂逻辑,通过它,你可以执行诸如读取账户余额、查询智能合约状态、发送交易、部署合约等一系列操作,它就像是浏览器与区块链世界之间的“翻译官”。

  2. 以太坊公网:这是由全球成千上万个节点共同维护的公共以太坊网络,任何人都可以自由接入,我们平时听到的 Mainnet(主网)、Ropsten、Goerli、Sepolia 等都属于公网,对于开发者来说,公网是测试和部署 DApp 的首选,因为它提供了最真实的环境和丰富的数据。

连接以太坊公网,就是让你的应用能够访问这个庞大的、去中心化的全球账本。

准备工作:环境搭建

在编写代码之前,请确保你的开发环境已经准备就绪:

  1. Node.js 和 npm/yarn随机配图
g>:Web3.js 是一个 Node.js 包,因此你需要先安装 Node.js(推荐使用 LTS 版本),安装后,你将拥有 npmyarn 这两个包管理工具。
  • 代码编辑器:一个顺手的编辑器,如 VS Code。
  • 基础的 JavaScript 知识:了解 ES6 语法(如 async/await)会让你更容易理解下面的代码。
  • 核心步骤:使用 Web3.js 连接以太坊公网

    连接以太坊公网主要有两种方式:连接到公共节点服务商,或者连接到本地运行的全节点,对于绝大多数开发者来说,使用公共节点服务商是最高效、最经济的选择。

    通过公共节点服务商连接(推荐)

    公共节点服务商(如 Infura, Alchemy, Ankr 等)提供了稳定可靠的以太坊节点接入服务,你无需自己同步庞大的区块链数据,只需注册一个账号,获取一个节点 URL 即可。

    第一步:获取节点 URL

    1. 访问 InfuraAlchemy 等网站并注册。
    2. 创建一个新的项目,选择你想要连接的以太坊网络(主网 Mainnet 或测试网 Goerli)。
    3. 项目创建成功后,你将获得一个以 https:// 开头的项目 ID 或 API Key,这就是你的节点 URL。

    第二步:安装 Web3.js

    在你的项目目录下,打开终端,运行以下命令安装 Web3.js:

    npm install web3

    或者使用 yarn:

    yarn add web3

    第三步:编写连接代码

    我们可以开始编写代码了,下面是一个完整的示例,展示了如何连接到以太坊主网并打印出当前最新的区块号。

    创建一个 connect.js 文件,将下面的代码复制进去,并把 YOUR_PROJECT_ID 替换成你从 Infura 或 Alchemy 获取的真实 ID。

    const Web3 = require('web3');
    // 1. 替换为你自己的 Infura 或 Alchemy 节点 URL
    const INFURA_URL = 'https://mainnet.infura.io/v3/YOUR_PROJECT_ID';
    // 2. 创建 Web3 实例
    const web3 = new Web3(INFURA_URL);
    // 3. 定义一个异步函数来获取并打印最新区块号
    async function getLatestBlockNumber() {
      try {
        console.log('正在连接以太坊公网...');
        // 检查连接是否成功
        const isConnected = await web3.eth.net.isListening();
        if (isConnected) {
          console.log('✅ 成功连接到以太坊公网!');
        } else {
          console.log('❌ 连接失败!');
          return;
        }
        // 4. 调用 web3 方法获取最新区块号
        const latestBlockNumber = await web3.eth.getBlockNumber();
        console.log(`📊 当前以太坊主网的最新区块号是: ${latestBlockNumber}`);
      } catch (error) {
        console.error('❌ 发生错误:', error);
      }
    }
    // 执行函数
    getLatestBlockNumber();

    第四步:运行代码

    在终端中,进入你的项目目录,运行:

    node connect.js

    如果一切顺利,你将在终端看到类似以下的输出:

    正在连接以太坊公网...
    ✅ 成功连接到以太坊公网!
    📊 当前以太坊主网的最新区块号是: 18483243

    (注意:区块号是实时变化的)

    恭喜!你已经成功使用 Web3.js 连接到以太坊公网了!

    连接到本地节点

    如果你在自己的电脑上运行了一个以太坊客户端(如 Geth 或 Nethermind),你可以直接连接到本地的 HTTP 服务。

    假设你的本地节点运行在 http://127.0.0.1:8545,那么创建 Web3 实例的代码会非常简单:

    const Web3 = require('web3');
    // 连接到本地运行的节点
    const web3 = new Web3('http://127.0.0.1:8545');
    // 后续代码与方式一相同...

    连接之后:我们能做什么?

    成功连接只是第一步,Web3.js 的强大之处在于它丰富的 API,连接后,你可以轻松实现:

    • 查询信息:获取任意地址的余额、交易历史、合约代码等。
    • 发送交易:将 ETH 从一个账户转移到另一个账户。
    • 与智能合约交互:调用合约的读函数(view/pure),或写入函数(需要支付 Gas 费)。
    • 监听事件:监听智能合约发出的事件,实现实时响应。

    本文详细介绍了如何使用 Web3.js 连接到以太坊公网,重点推荐了通过公共节点服务商(如 Infura)这一便捷方式,通过几个简单的步骤,我们搭建起了前端应用与区块链世界之间的通信通道。

    这只是 Web3.js 强大功能的冰山一角,在未来的学习中,你可以深入探索账户管理、交易签名、智能合约 ABI 编解码等更高级的主题,掌握 Web3.js,你将正式开启去中心化应用开发的精彩旅程。