使用NodeSource PPA安装Node.js 18(推荐)
在Ubuntu系统上搭建以太坊开发环境:从零开始安装与配置Web3工具
以太坊作为领先的智能合约平台,其生态系统中的Web3工具对于开发者、矿工乃至普通用户都至关重要,本文将详细介绍如何在流行的Linux发行版Ubuntu上,一步步配置以太坊节点环境,并安装必要的Web3工具,助您顺利踏入Web3世界。
准备工作:Ubuntu系统与环境要求
在开始之前,请确保您的Ubuntu系统满足以下基本要求:
- Ubuntu版本:推荐使用Ubuntu 20.04 LTS或22.04 LTS,这些版本拥有长期支持且软件包兼容性较好。
- 系统更新:确保系统已更新至最新状态,以避免潜在的兼容性问题和安全漏洞,打开终端,执行以下命令:
sudo apt update && sudo apt upgrade -y
- 硬件要求:
- 内存:运行全节点建议至少8GB RAM,运行轻节点或开发节点4GB RAM也可勉强应对,但越多越好。
- 存储:以太坊全节点目前需要数百GB的SSD存储空间(具体大小随网络增长而变化),并预留一定余量。
- CPU:现代多核CPU有助于提高同步速度和交易处理效率。
- 用户权限:确保您有sudo权限,以便安装软件和修改系统配置。
安装以太坊客户端
以太坊客户端是与以太坊网络交互的软件,根据您的需求(全节点、轻节点、开发节点),可以选择不同的客户端,这里以目前较为流行的Geth(Go语言实现,功能全面)和Nethermind(.NET实现,性能较好)为例进行介绍。
安装Geth (Go-Ethereum)
Geth是最早的以太坊客户端之一,功能强大,支持全节点、轻节点和开发模式。
-
安装依赖:
sudo apt install -y software-properties-common
-
添加PPA源并安装Geth: 官方PPA源提供了最新稳定版的Geth。
sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt update sudo apt install -y ethereum
-
验证安装: 安装完成后,可以通过以下命令检查Geth版本:
geth version
如果显示出版本信息,则表示安装成功。
安装Nethermind
Nethermind是一个高性能的以太坊客户端,支持.NET 6/7/8。
-
安装.NET Runtime: Nethermind需要.NET Runtime支持,以.NET 8为例:
# 下载并安装Microsoft包签名密钥 wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt update # 安装.NET SDK(可选,如果需要编译源码)或Runtime sudo apt install -y aspnetcore-runtime-8.0 # 或 dotnet-runtime-8.0
-
下载Nethermind: 您可以从Nethermind的GitHub Releases页面下载预编译的二进制文件,或使用包管理器。 这里以使用
dotnet tool安装为例(需要先安装.NET SDK):dotnet tool install --global Nethermind.CLI
或者下载zip包解压到PATH环境变量中的目录。
-
验证安装: 如果使用
dotnet tool安装,可以直接在命令行使用nethermind命令:
nethermind --version
安装Web3相关工具与库
Web3工具通常包括与以太坊节点交互的库(如Web3.js、Ethers.js)、钱包插件(如MetaMask)以及开发框架(如Truffle, Hardhat)。
安装Node.js和npm (Web3.js/Ethers.js基础)
许多Web3工具基于Node.js。
sudo apt install -y nodejs # 验证安装 node -v npm -v
安装Web3.js或Ethers.js (JavaScript/TypeScript库)
这些库允许您通过JavaScript与以太坊节点交互。
# 在项目目录中安装(推荐) mkdir my-eth-project && cd my-eth-project npm init -y # 安装Web3.js npm install web3 # 或者安装Ethers.js npm install ethers
安装MetaMask浏览器插件
MetaMask是最流行的以太坊钱包浏览器插件,它也集成了Web3功能,方便与DApp交互。
- 访问 MetaMask官方网站。
- 下载并安装对应您浏览器的插件。
- 按照提示创建钱包并备份助记词。
安装开发框架 (如Hardhat)
Hardhat是一个流行的以太坊开发环境,用于编译、测试和部署智能合约。
# 在项目目录中安装 npm install --save-dev hardhat # 初始化Hardhat项目 npx hardhat # 按照提示选择配置(如Create a basic sample project)
配置与启动以太坊节点
安装好客户端后,需要启动节点并同步区块链数据。
启动Geth节点
-
同步主网(全节点,耗时耗资源):
geth --syncmode full --http --http.addr 0.0.0.0 --http.port 8545 --http.vhosts "*"
--syncmode full:全同步模式,下载所有区块状态。--http:启用HTTP-RPC API,方便Web3.js等库连接。--http.addr 0.0.0.0:允许任何IP连接(生产环境请谨慎设置,建议使用防火墙限制)。--http.port 8545:HTTP-RPC API端口,默认8545。
-
同步主网(快速同步,节省时间):
geth --syncmode snap --http --http.addr 0.0.0.0 --http.port 8545 --http.vhosts "*"
--syncmode snap是较快的同步方式。 -
启动开发节点:
geth --dev --http --http.addr 0.0.0.0 --http.port 8545
--dev会启动一个私有测试网络,并自动预挖一些区块,适合开发测试。
启动Nethermind节点
-
同步主网: Nethermind通常通过配置文件启动,创建一个
nethermind.config.json文件,或使用命令行参数。nethermind --config mainnet --Sync.SyncMode Full --JsonRpc.Enabled true --JsonRpc.Host 0.0.0.0 --JsonRpc.Port 8545
--config mainnet:指定主网配置。--Sync.SyncMode Full:全同步模式。--JsonRpc.Enabled true:启用JSON-RPC API。--JsonRpc.Host 0.0.0.0:允许任何IP连接。--JsonRpc.Port 8545:JSON-RPC端口。
-
启动开发节点: Nethermind也支持开发模式,可以通过配置文件或命令行参数指定
--config devnet。
连接Web3工具与以太坊节点
您的以太坊节点已经运行,并提供了HTTP-RPC API服务(通常在8545端口),接下来可以使用Web3工具连接它。
示例:使用Web3.js连接本地节点
在之前创建的Node.js项目目录中,创建一个app.js文件:
const Web3 = require('web3');
// 连接到本地运行的以太坊节点
const web3 = new Web3('http://localhost:8545');
// 检查连接
web3.eth.getBlockNumber().then(console.log).catch(console.error);
// 示例:获取账户列表(如果是开发节点,可能会有预置账户)
web3.eth.getAccounts().then(console.log).catch(console.error);
然后在终端运行:
node app.js
如果看到区块号和账户列表(或空数组),则表示连接成功。