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

投稿 2026-03-08 5:27 点击数: 2

在区块链开发的浪潮中,与以太坊网络进行交互是开发者必备的核心技能,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:Web3.js 是一个 Node.js 包,因此你需要先安装 Node.js(推荐使用 LTS 版本),安装后,你将拥有 npmyarn 这两个包管理工具。
  2. 代码编辑器:一个顺手的编辑器,如 VS Code。
  3. 基础的 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,你将正式开启去中心化应用开发的精彩旅程。