Web3.js 入门:如何连接以太坊公网进行交互**


以太坊作为全球领先的区块链平台,其庞大的生态系统和去中心化应用(DApps)的开发离不开与区块链网络的交互,而 Web3.js 作为最流行、最成熟的 JavaScript 库之一,为前端开发者提供了一套强大的工具,使得通过网页与以太坊网络(包括公网)进行通信成为可能,本文将详细介绍如何使用 Web3.js 连接到以太坊公网,并展示一些基本的交互操作。

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

  • Web3.js:是一个 JavaScript API 库,它封装了与以太坊节点进行交互的细节,通过 Web3.js,开发者可以读取区块链数据(如账户余额、交易历史、智能合约状态)、发送交易、部署智能合约等,而无需深入了解底层的 RPC 协议和数据格式。
  • 以太坊公网:也称为以太坊主网(Mainnet),是以太坊网络最主要的公共实例,上面运行着真实的 ETH 和无数的 DApps 与智能合约,除了主网,以太坊还有多个测试网(如 Ropsten, Kovan, Goerli, Sepolia),开发者可以在测试网上进行开发和测试,而无需消耗真实的 ETH。

连接以太坊公网意味着你的 DApp 将与真实的、去中心化的以太坊主网进行交互,处理真实的资产和合约。

准备工作:安装 Web3.js

在开始之前,你需要确保你的项目环境中已经安装了 Web3.js,如果你使用 Node.js 和 npm/yarn,可以通过以下命令安装:

npm install web3yarn add web3

如果你在 HTML 文件中直接使用,可以通过 CDN 引入:

<script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>

连接以太坊公网的核心步骤

连接以太坊公网,本质上需要连接到一个运行在公网上的以太坊节点,这个节点可以通过多种方式获取,最常见的是使用第三方 Infura 或 Alchemy 提供的服务,或者运行自己的全节点(对硬件和带宽要求较高)。

获取以太坊节点 URL(以 Infura 为例)

Infura 是一个广泛使用的以太坊节点服务提供商,它为开发者提供稳定可靠的 RPC 接口。

  • 访问 Infura 官网 并注册/登录。
  • 创建一个新的项目,选择网络为 "Mainnet" (以太坊主网)。
  • 创建成功后,你将获得一个以 https://mainnet.infura.io/v3/ 开头的 URL,后面跟着你的项目 ID,这个 URL 就是连接以太坊公网的入口。

示例 URL: https://mainnet.infura.io/v3/YOUR_PROJECT_ID

注意: 请妥善保管你的项目 ID,不要泄露给他人。

初始化 Web3.js 实例并连接

有了节点 URL 后,我们就可以在代码中初始化 Web3.js 实例,并尝试连接到以太坊公网。

const Web3 = require('web3'); // 如果是 Node.js 环境
// 或者,如果是浏览器环境,Web3 已经挂载在 window 对象上
// const Web3 = window.Web3;
// 1. 替换为你的 Infura (或其他服务提供商) 的 URL
const infuraUrl = 'https://mainnet.infura.io/v3/YOUR_PROJECT_ID';
// 2. 创建 Web3 实例
const web3 = new Web3(infuraUrl);
// 3. 验证连接是否成功 (可选)
web3.eth.getBlockNumber()
    .then(blockNumber => {
        console.log('当前以太坊公网最新区块号:', blockNumber);
        console.log('成功连接到以太坊公网!');
    })
    .catch(error => {
        console.error('连接以太坊公网失败:', error);
    });

代码解释:随机配图